# Nginx反爬虫攻略:禁止某些User Agent抓取网站
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSpider)(最新补充:宜搜蜘蛛已被UC神马搜索收购!所以本文已去掉宜搜蜘蛛的禁封!==>相关文章)。最近发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛爬站的方法,在给自己网做设置的同时,也给各位站长提供参考。
进入到nginx安装目录下的conf目录,将如下代码保存为`agent_deny.conf`
`# cd /usr/local/nginx/conf`
`# vi agent_deny.conf`
~~~html
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
~~~
然后,在网站相关配置中的 server段插入如下代码:
`include agent_deny.conf;`
保存后,执行如下命令,平滑重启nginx即可:
`/usr/local/nginx/sbin/nginx -s reload`
测试
使用curl -A 模拟抓取即可,比如:
curl\-I\-A'YYSpider'www.test.com
模拟UA为空的抓取:
curl\-I\-A' 'www.test.com
模拟百度蜘蛛的抓取:
curl -I -A 'Baiduspider' www.test.com
## 附录:UA收集
~~~html
FeedDemon 内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy sql注入
Java 内容采集
Jullo 内容采集
Feedly 内容采集
UniversalFeedParser 内容采集
ApacheBench cc攻击器
Swiftbot 无用爬虫
YandexBot 无用爬虫
AhrefsBot 无用爬虫
YisouSpider 无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
jikeSpider 无用爬虫
MJ12bot 无用爬虫
ZmEu phpmyadmin 漏洞扫描
WinHttp 采集cc攻击
EasouSpider 无用爬虫
HttpClient tcp攻击
Microsoft URL Control 扫描
YYSpider 无用爬虫
jaunty wordpress爆破扫描器
oBot 无用爬虫
Python-urllib 内容采集
Indy Library 扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot 无用爬虫
~~~
参考:[http://zhangge.net/4458.html](http://zhangge.net/4458.html)
- (一)服务器架构
- ECS
- (二)宝塔安装
- 宝塔的webhook使用方法
- (三)配置更改
- php-fpm.conf
- proxy.conf
- nginx.conf
- (四)运维日志
- nginx日志
- nginx错误日志
- open socket
- fpm日志
- php-fpm错误日志
- seems busy
- slow.log
- 站点日志
- dyhjw.log
- 站点错误日志
- dyhjw.error.log
- 499错误
- recv()
- recv() failed
- recv() failed-第3种
- no live upstreams
- upstream prematurely
- cache_file_has_too_long_header
- FastCGI sent in stderr
- directory index of is forbidden
- recv() failed-第4种
- (五)站点配置
- appapi配置
- 用到redis的网站
- workman不能运行
- 快讯启动
- dyhjw伪静态
- (六)其他问题
- php-5.6重新启动报错
- 挂载盘命令
- 服务器怎么增加黑名单不让指定IP登录
- (七)自定义页面
- 自定义404页面
- 自定义502页面
- (八)问题
- 负载均衡的文件在哪里
- 站点的负载均衡服务器文件在哪里
- 其他知识
- Nginx--keepalive的配置
- Nginx反爬虫攻略:禁止某些User Agent抓取网站
- php脚本执行时间配置
- 运维记录