php禁止ua,服务器禁止某些User Agent抓取网站
通過User Agent,可以禁止一些我們想禁止掉的訪問,下午,大叔發生nginx日志中好多奇怪的訪問抓取記錄,特別是利用ApacheBench進行的惡意檢測,于是立刻跟6P協會一起討論起來,根據碗叔和維維的經驗,整理了以下教程,方便自己和其他站長學習吧!
一、Apache
①、通過修改 .htaccess文件
修改網站目錄下的.htaccess,添加如下代碼即可(2種代碼任選):
可用代碼 (1):
RewriteEngine?On
RewriteCond?%{HTTP_USER_AGENT}?(^$|FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)?[NC]
RewriteRule?^(.*)$?-?[F]
可用代碼 (2):
SetEnvIfNoCase?^User-Agent$?.*(FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)?BADBOT
Order?Allow,Deny
Allow?from?all
Deny?from?env=BADBOT
②、通過修改httpd.conf配置文件
找到如下類似位置,根據以下代碼 新增 / 修改,然后重啟Apache即可:
DocumentRoot?/home/wwwroot/xxx
SetEnvIfNoCase?User-Agent?".*(FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)"?BADBOT
Order?allow,deny
Allow?from?all
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|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$"?)?{
return?403;
}
#禁止非GET|HEAD|POST方式的抓取
if?($request_method?!~?^(GET|HEAD|POST)$)?{
return?403;
}
然后,在網站相關配置中的 location / { 之后插入如下代碼:
include?agent_deny.conf;
保存后,執行如下命令,平滑重啟nginx即可:
/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','YisouSpider','jikeSpider','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");
wp_die('請勿采集本站,因為采集的站長木有小JJ!');
}else{
foreach($now_ua?as?$value?)
//判斷是否是數組中存在的UA
if(eregi($value,$ua))?{
header("Content-type:?text/html;?charset=utf-8");
wp_die('請勿采集本站,因為采集的站長木有小JJ!');
}
}
四、測試效果
如果是vps,那非常簡單,使用curl -A 模擬抓取即可,比如:
模擬宜搜蜘蛛抓取:
curl?-I?-A?'YisouSpider'?2zzt.com
模擬UA為空的抓取:
curl?-I?-A?''?2zzt.com
模擬百度蜘蛛的抓取:
curl?-I?-A?'Baiduspider'?2zzt.com
根據結果,可以看出,宜搜蜘蛛和UA為空的返回是403禁止訪問標識,而百度蜘蛛則成功返回200,說明生效!
了解到這步,在根據自己訪問日志里奇怪的spider名稱,進行實際的可需的禁止吧!
五、附錄:UA收集
下面是網絡上常見的垃圾UA列表,僅供參考,同時也歡迎你來補充。
FeedDemon?????????????內容采集
BOT/0.1?(BOT?forJCE)?sql注入
CrawlDaddy????????????sql注入
Java??????????????????內容采集
Jullo?????????????????內容采集
Feedly????????????????內容采集
UniversalFeedParser???內容采集
ApacheBench???????????cc攻擊器
Swiftbot??????????????無用爬蟲
YandexBot?????????????無用爬蟲
AhrefsBot?????????????無用爬蟲
YisouSpider???????????無用爬蟲
jikeSpider????????????無用爬蟲
MJ12bot???????????????無用爬蟲
ZmEu?phpmyadmin???????漏洞掃描
WinHttp???????????????采集cc攻擊
EasouSpider???????????無用爬蟲
HttpClient????????????tcp攻擊
Microsoft?URL?Control?掃描
YYSpider??????????????無用爬蟲
jaunty
oBot??????????????????無用爬蟲
Python-urllib?????????內容采集
Indy?Library??????????掃描
FlightDeckReports?Bot?無用爬蟲
Linguee?Bot???????????無用爬蟲
最后,作為一名wordpress博客主又肩負著自己維護服務器的朋友們,創作吧,騷年!
總結
以上是生活随笔為你收集整理的php禁止ua,服务器禁止某些User Agent抓取网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [原创] 网站联盟 账号通行证 一次登陆
- 下一篇: 【瑞数】维普期刊搜索接口逆向总结_2_获