本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。php
如下文章來源於Python實用寶典 ,做者Python實用寶典html
是否擔憂別人將你的博客文章所有爬下來?python
是否擔憂高頻率爬蟲致使網站癱瘓?web
別擔憂,如今有一個Python寫的神器——crawlerdetect,幫助你檢測爬蟲,保障網站的正常運轉。網絡
1.準備
Windows環境下打開Cmd(開始—運行—CMD),蘋果系統環境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。ide
在終端輸入如下命令安裝咱們所須要的依賴模塊:工具
pip install crawlerdetect
看到 Successfully installed xxx 則說明安裝成功。學習
2.使用方法
它能夠經過user-agent、headers等請求頭識別爬蟲或機器人。網站
所以,你能夠傳遞兩種參數。第一種,使用user-agent檢測機器人:google
from crawlerdetect import CrawlerDetect crawler_detect = CrawlerDetect(user_agent='Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html)') crawler_detect.isCrawler() # 若是是機器人,這條語句返回True
第二種識別方式會用上所有headers參數,這種方式比單純用user-agent精準,由於它判斷的依據更加全面。
from crawlerdetect import CrawlerDetect crawler_detect = CrawlerDetect(headers={'DOCUMENT_ROOT': '/home/test/public_html', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate', 'HTTP_CACHE_CONTROL': 'no-cache', 'HTTP_CONNECTION': 'Keep-Alive', 'HTTP_FROM': 'googlebot(at)googlebot.com', 'HTTP_HOST': 'www.test.com', 'HTTP_PRAGMA': 'no-cache', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36', 'PATH': '/bin:/usr/bin', 'QUERY_STRING': 'order=closingDate', 'REDIRECT_STATUS': '200', 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_PORT': '3360', 'REQUEST_METHOD': 'GET', 'REQUEST_URI': '/?test=testing', 'SCRIPT_FILENAME': '/home/test/public_html/index.php', 'SCRIPT_NAME': '/index.php', 'SERVER_ADDR': '127.0.0.1', 'SERVER_ADMIN': 'webmaster@test.com', 'SERVER_NAME': 'www.test.com', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SIGNATURE': '', 'SERVER_SOFTWARE': 'Apache', 'UNIQUE_ID': 'Vx6MENRxerBUSDEQgFLAAAAAS', 'PHP_SELF': '/index.php', 'REQUEST_TIME_FLOAT': 1461619728.0705, 'REQUEST_TIME': 1461619728}) crawler_detect.isCrawler() # 若是是機器人,這條語句返回True
你還能夠識別相應爬蟲的名字(若是有的話),經過這種方式,你能給一些著名的爬蟲(如baiduspider、googlebot)添加白名單,不進行攔截。
from crawlerdetect import CrawlerDetect crawler_detect = CrawlerDetect() crawler_detect.isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)') # 若是是機器人,這條語句返回True crawler_detect.getMatches() # Sosospider
有了這個工具,咱們就能夠實現實時的爬蟲封禁:
首先,你要實時監控網站上的http請求,檢測其對應的headers.
其次,若是識別到該請求是機器人(爬蟲)發出的,就可將其IP記錄下來。
最後,將IP加入到Nginx或Apache的動態黑名單中,實現實時的爬蟲封禁。
這一套流程我尚未試驗過,你們有興趣能夠試試,理論上可行。
本文分享 CSDN - 松鼠愛吃餅乾。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。