在企業網站站群中有的時候不免有電話號碼,今天看到一些云發布平臺,通過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段。

不過此方法沒有前面幾個方法實用,較少人這樣操作。