服务器之家

服务器之家 > 正文

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

时间:2019-05-27 20:36     来源/作者:bcoder

 以下是服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站,希望对大家有所帮助。

一、Apache

①、通过修改 .htaccess 文件

修改网站目录下的.htaccess,添加如下代码即可(2 种代码任选):

可用代码 (1):


  1. RewriteEngine On 
  2. RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC] 
  3. RewriteRule ^(.*)$ – [F] 

可用代码 (2):


  1. SetEnvIfNoCase ^User–Agent$ .*(FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) BADBOT 
  2. Order Allow,Deny 
  3. Allow from all 
  4. Deny from env=BADBOT 

②、通过修改 httpd.conf 配置文件

找到如下类似位置,根据以下代码 新增 / 修改,然后重启 Apache 即可:

Shell


  1. DocumentRoot /home/wwwroot/xxx 
  2. <Directory “/home/wwwroot/xxx”> 
  3. SetEnvIfNoCase User–Agent “.*(FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)” BADBOT 
  4.         Order allow,deny 
  5.         Allow from all 
  6.        deny from env=BADBOT 
  7. </Directory> 

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

二、Nginx 代码

进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent_deny.conf


  1. cd /usr/local/nginx/conf 
  2. vim agent_deny.conf 

  1. #禁止Scrapy等工具的抓取 
  2. if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { 
  3.      return 403; 
  4. #禁止指定UA及UA为空的访问 
  5. if ($http_user_agent ~* “FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$” ) { 
  6.      return 403;             
  7. #禁止非GET|HEAD|POST方式的抓取 
  8. if ($request_method !~ ^(GET|HEAD|POST)$) { 
  9.     return 403; 

然后,在网站相关配置中的 location / { 之后插入如下代码:

Shell


  1. include agent_deny.conf; 

如下的配置:

Shell


  1. [marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf 
  2. location / { 
  3.         try_files $uri $uri/ /index.php?$args; 
  4.         #这个位置新增1行: 
  5.         include agent_deny.conf; 
  6.         rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last
  7.         rewrite ^/sitemap_baidu_sp.xml$ /sitemap_baidu_sp.php last
  8.         rewrite ^/sitemap_m.xml$ /sitemap_m.php last

保存后,执行如下命令,平滑重启 nginx 即可:

Shell


  1. /usr/local/nginx/sbin/nginx –s reload 

三、PHP 代码

将如下方法放到贴到网站入口文件 index.php 中的第一个

PHP


  1. //获取UA信息 
  2. $ua = $_SERVER[‘HTTP_USER_AGENT’]; 
  3. //将恶意USER_AGENT存入数组 
  4. $now_ua = array(‘FeedDemon ‘,‘BOT/0.1 (BOT for JCE)’,‘CrawlDaddy ‘,‘Java’,‘Feedly’,‘UniversalFeedParser’,‘ApacheBench’,‘Swiftbot’,‘ZmEu’,‘Indy Library’,‘oBot’,‘jaunty’,‘YandexBot’,‘AhrefsBot’,‘MJ12bot’,‘WinHttp’,‘EasouSpider’,‘HttpClient’,‘Microsoft URL Control’,‘YYSpider’,‘jaunty’,‘Python-urllib’,‘lightDeckReports Bot’); 
  5. //禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT 
  6. if(!$ua) { 
  7.     header(“Content-type: text/html; charset=utf-8”); 
  8.     die(‘请勿采集本站,因为采集的站长木有小JJ!’); 
  9. }else
  10.     foreach($now_ua as $value ) 
  11. //判断是否是数组中存在的UA 
  12.     if(eregi($value,$ua)) { 
  13.         header(“Content-type: text/html; charset=utf-8”); 
  14.         die(‘请勿采集本站,因为采集的站长木有小JJ!’); 
  15.     } 

四、测试效果

如果是 vps,那非常简单,使用 curl -A 模拟抓取即可,比如:

模拟宜搜蜘蛛抓取:

Shell


  1. curl –I –A ‘YisouSpider’ bizhi.bcoderss.com 

模拟 UA 为空的抓取:

Shell


  1. curl –I –A ” bizhi.bcoderss.com 

模拟百度蜘蛛的抓取:

Shell


  1. curl –I –A ‘Baiduspider’ bizhi.bcoderss.com  

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国 2021-05-08
返回顶部

626
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40