**一、Apache** **①、通过修改 .htaccess 文件** 修改网站目录下的.htaccess,添加如下代码即可(2 种代码任选): 可用代码 (1): ``` RewriteEngine On 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\]  RewriteRule ^(.\*)$ – \[F\] ``` 可用代码 (2): ``` 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  Order Allow,Deny  Allow fromall Deny from env=BADBOT ``` **②、通过修改 httpd.conf 配置文件** 找到如下类似位置,根据以下代码 新增 / 修改,然后重启 Apache 即可: ``` DocumentRoot /home/wwwroot/xxx  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          Order allow,deny          Allow fromall        deny from env=BADBOT  ``` **二、Nginx 代码** 进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent\_deny.conf ``` cd /usr/local/nginx/conf  vim agent\_deny.conf ``` ``` #禁止Scrapy等工具的抓取  if ($http\_user\_agent ~\* (Scrapy|Curl|HttpClient)) {       return 403;  }  #禁止指定UA及UA为空的访问  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|^$” ) {      return 403;              }  #禁止非GET|HEAD|POST方式的抓取  if ($request\_method !~ ^(GET|HEAD|POST)$) {      return 403;  } ``` 然后,在网站相关配置中的 location / { 之后插入如下代码: **Shell** ``` include agent\_deny.conf;  ``` 如下的配置: **Shell** ``` \[marsge@Mars\_Server ~\]$ cat /usr/local/nginx/conf/zhangge.conf  location / {          try\_files $uri $uri/ /index.php?$args;          #这个位置新增1行:          include agent\_deny.conf;          rewrite ^/sitemap\_360\_sp.txt$ /sitemap\_360\_sp.php last;  .         rewrite ^/sitemap\_baidu\_sp.xml$ /sitemap\_baidu\_sp.php last;  .         rewrite ^/sitemap\_m.xml$ /sitemap\_m.php last;  ``` 保存后,执行如下命令,平滑重启 nginx 即可: Shell ``` /usr/local/nginx/sbin/nginx –s reload ``` **三、PHP 代码** 将如下方法放到贴到网站入口文件 index.php 中的第一个 **PHP** ``` //获取UA信息  $ua = $\_SERVER\[‘HTTP\_USER\_AGENT’\];  //将恶意USER\_AGENT存入数组  $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’);  //禁止空USER\_AGENT,dedecms等主流采集程序都是空USER\_AGENT,部分sql注入工具也是空USER\_AGENT  if(!$ua) {      header(“Content-type: text/html; charset=utf-8”);      die(‘请勿采集本站,因为采集的站长木有小JJ!’);  }else{      foreach($now\_ua as $value )  //判断是否是数组中存在的UA      if(eregi($value,$ua)) {          header(“Content-type: text/html; charset=utf-8”);          die(‘请勿采集本站,因为采集的站长木有小JJ!’);      }  } ``` **四、测试效果** 模拟宜搜蜘蛛抓取: **Shell** ``` curl –I –A ‘YisouSpider’ bizhi.bcoderss.com  ``` 模拟 UA 为空的抓取: **Shell** ``` curl –I –A ” bizhi.bcoderss.com  ``` 模拟百度蜘蛛的抓取: **Shell** ``` curl –I –A ‘Baiduspider’ bizhi.bcoderss.com ```