在企业网站站群中有的时候不免有电话号码,今天看到一些云发布平台,通过css中放置的JS转码电话号码,从而屏蔽蜘蛛抓取。

我个人用的方法是通过Unicode编码转换手机号码。

屏蔽百度或某一爬虫抓取.png

下面分享四种屏蔽百度蜘蛛的方法:

1、robots.txt屏蔽百度或某一爬虫抓取

打开robots.txt,在开头加入如下语句(以百度蜘蛛为例):

User-agent:baiduspider
Disallow:/

代码分析,首先要知道该爬虫的名称,如百度爬虫是Baiduspider,Google爬虫是Googlebot,360搜索爬虫是360Spider,你可以通过各大搜索引擎蜘蛛爬虫UA汇总来获取爬虫的名称,例如,微软必应的蜘蛛UA是:

"Mozilla/5.0(compatible;bingbot/2.0;+http://www.bing.com/bingbot.htm)"

我们就可以知道它的爬虫名称为bingbot。

2、robotsMeta标签屏蔽百度或某一爬虫抓取

如果是针对某一个页面屏蔽百度蜘蛛或某一爬虫抓取,那么可以通过Meta标签来实现。代码如下:

<head>…
<metaname="robots"content="noindex,nofollow"/>
</head>

这是屏蔽所有蜘蛛爬虫抓取该页面的写法,如果只屏蔽某个爬虫,可以把"robots"改为特定的爬虫名称,爬虫名称可以通过上面方法1中提及的办法获得。例如想只屏蔽微软必应的蜘蛛抓取该页,则可以写成:

<head>…
<metaname="bingbot"content="noindex,nofollow"/>
</head>

3、.htaccess屏蔽百度或某一爬虫抓取

一些可恶的爬虫并不遵循robots规则,那么我们还可以通过.htaccess来屏蔽它,代码如下(以百度蜘蛛为例):

RewriteEngineon
RewriteCond%{HTTP_USER_AGENT}^.*Baiduspider.*[NC]
RewriteRule.*-[F]

如果是Apache服务器,可以修改配置文件httpd.conf,这样写(/var/www/html是根目录):

<Directory"/var/www/html">
...
SetEnvIfNoCaseUser-Agent^.*Baiduspider.*bad_bot
OrderAllow,Deny
Allowfromall
Denyfromenv=bad_bot
...
</Directory>

如果是Nginx服务器,可以修改配置文件(默认是nginx.conf),这样写:

Server{
...
location/{
if($http_user_agent!~Baiduspider){
return403;
}
}
...
}

4、通过IP屏蔽百度或某一爬虫抓取

我们还可以通过分析日志,获得爬虫的IP地址,然后从服务器防火墙屏蔽该IP,不过爬虫通常有很多IP,我们可以屏蔽爬虫的IP段。

不过此方法没有前面几个方法实用,较少人这样操作。