Nginx反爬虫配置

        当我们在爬取别人的网站的时候,我们自己的网站也有可能会被别人爬,呵呵,怎样防止自己的网站不被其他人爬取呢?通过Nginx, 我们可以拦截大部分爬虫。那么再增加一个反爬虫配额文件:

vim /usr/local/nginx/conf/anti_spider.conf

写入:

#禁止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;  
}  

#屏蔽单个IP的命令是
#deny 123.45.6.7
#封整个段即从123.0.0.1到123.255.255.254的命令
#deny 123.0.0.0/8
#封IP段即从123.45.0.1到123.45.255.254的命令
#deny 124.45.0.0/16
#封IP段即从123.45.6.1到123.45.6.254的命令是
#deny 123.45.6.0/24

# 以下IP皆为流氓
#deny 58.95.66.0/24;

在网站配置server段中都插入

# 反爬虫	
include /usr/local/nginx/conf/anti_spider.conf;

重启:

systemctl restart nginx  #或者用你自己的方法重启或重载配置

爬虫UA常见:

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           无用爬虫

使用curl -A 模拟抓取即可,比如:

# -A表示User-Agent
# -X表示方法: POST/GET
# -I表示只显示响应头部
curl -X GET -I -A 'YYSpider' https://pengxb.com

HTTP/1.1 403 Forbidden
Server: nginx/1.12.2
Date: Mon, 26 Feb 2018 07:31:32 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 169
Connection: keep-alive

模拟UA为空的抓取:

curl -I -A ' ' https://pengxb.com

HTTP/1.1 403 Forbidden
Server: nginx/1.12.2
Date: Mon, 26 Feb 2018 07:32:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 169
Connection: keep-alive

模拟百度蜘蛛的抓取:

curl -I -A 'Baiduspider' https://pengxb.com

HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 26 Feb 2018 07:32:47 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
......
...

看到了吗?百度蜘蛛是抓取成功的!

技苑
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • © 2016-2024 技苑 | PHP是最好的语言 版权所有 ICP证:鄂ICP备15021999号-4
  • 联系邮箱:master@pengxb.com