服務器反爬蟲攻略:Apache/Nginx/PHP禁止某些User Agent抓取網站

咱們都知道網絡上的爬蟲很是多,有對網站收錄有益的,好比百度蜘蛛(Baiduspider),也有不但不遵照robots 規則對服務器形成壓力,還不能爲網站帶來流量的無用爬蟲,好比宜搜蜘蛛(YisouSpider)最新補充:宜搜蜘蛛已被UC神馬搜索收購!因此本文已去掉宜搜蜘蛛的禁封! ==> 相關文章 )。最近張戈發現nginx日誌中出現了好多宜搜等垃圾的抓取記錄,因而整理收集了網絡上各類禁止垃圾蜘蛛爬站的方法,在給本身網作設置的同時,也給各位站長提供參考。php

1、Apache

①、經過修改.htaccess 文件

修改網站目錄下的.htaccess,添加以下代碼便可(2 種代碼任選):html

可用代碼(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 from all
Deny from env=BADBOT

 

②、經過修改httpd.conf 配置文件

找到以下相似位置,根據如下代碼新增/ 修改,而後重啓Apache 便可:nginx

 

2、Nginx 代碼

進入到nginx 安裝目錄下的conf 目錄,將以下代碼保存爲 agent_deny.confsql

cd /usr/local/nginx/confvim

vim agent_deny.conf數組

而後,在網站相關配置中的 location / { 以後插入以下代碼:服務器

保存後,執行以下命令,平滑重啓nginx 便可:curl

 3、PHP 代碼

將以下方法放到貼到網站入口文件index.php 中的第一個<?php 以後便可:tcp

 

4、測試效果

若是是vps,那很是簡單,使用curl -A 模擬抓取便可,好比:

模擬宜搜蜘蛛抓取:

模擬百度蜘蛛的抓取:

三次抓取結果截圖以下:

服務器反爬蟲攻略:Apache/Nginx/PHP禁止某些User Agent抓取網站

能夠看出,宜搜蜘蛛和UA 爲空的返回是403 禁止訪問標識,而百度蜘蛛則成功返回200,說明生效!

補充:次日,查看nginx 日誌的效果截圖:

①、UA 信息爲空的垃圾採集被攔截:

服務器反爬蟲攻略:Apache/Nginx/PHP禁止某些User Agent抓取網站

 

②、被禁止的UA 被攔截:

服務器反爬蟲攻略:Apache/Nginx/PHP禁止某些User Agent抓取網站

所以,對於垃圾蜘蛛的收集,咱們能夠經過分析網站的訪問日誌,找出一些沒見過的的蜘蛛(spider)名稱,通過查詢無誤以後,能夠將其加入到前文代碼的禁止列表當中,起到禁止抓取的做用。

5、附錄:UA 收集

下面是網絡上常見的垃圾UA 列表,僅供參考,同時也歡迎你來補充。

相關文章
相關標籤/搜索