扫一扫加微信

服务器屏蔽facebookexternalhit爬虫的方案

最近网站被facebook的爬虫恶意抓取,1秒钟抓好几次,持续好久,写robots.txt禁止facebookexternalhit和meta-externalagent,它不认,还继续抓~

就研究了下怎么从服务器上禁止UA头,找到了解决办法,如下是摘录过来的技术文档,备用。

万恶的facebookexternalhit|meta-externalagent,你抓我站有毛用???

进服务器后进入这个路径 nginx/conf 新建一个文件,文件名可以为:agent_deny.conf 复制以下代码到此文件:

禁止Scrapy等爬虫工具的抓取

代码语言:javascript
if ($http_user_agent ~* "Scrapy|Sogou web spider|compatible|Baiduspider|Lavf/|1.8.0.00757") {
return 403;
}

禁止指定UA及UA为空的访问

代码语言:javascript
if ($http_user_agent ~ "compatible|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" ){
return 403;
}

禁止非GET|HEAD|POST方式的抓取

代码语言:javascript
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}

针对特殊的user_agent的访问

代码语言:javascript
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
return 404;
}

保存文件退出 进入站点的配置文件,在server下的位置粘贴进这段代码:

代码语言:javascript
include agent_deny.conf;

保存,退出,即可生效

注: 1、如果你只想禁止google的,就把compatible删了,改成Googlebot 2、最好的办法是禁止播放器爬虫,这样你的cms爱怎么被爬就怎么被爬

==============================

如果你只是想播放器不被爬虫,如果你的播放器主页是php的,那就在主页php文件最上方加入以下代码:

代码语言:javascript
$theua='compatible|Baiduspider|YisouSpide'; 
$uapanduan=preg_match('('.$theua.')', $_SERVER['HTTP_USER_AGENT'], $uapd)?1:0; if($uapanduan==1){     
    header('Location:https://www.baidu.com');exit(); 
}

注:$theua=’compatible|Baiduspider|YisouSpide’; 此参数可以自己修改

评论

4+9=