您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“python網站常見的反扒方式有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“python網站常見的反扒方式有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
網站反爬蟲方式:
一、通過 User-Agent 來控制訪問:
無論是瀏覽器還是爬蟲程序,在向服務器發起網絡請求的時候,都會發過去一個頭文件:headers, 表明身份,對于爬蟲程序來說,最需要注意的字段就是:User-Agent 很多網站都會建立 User-Agent 白名單,只有屬于正常范圍的 User-Agent 才能夠正常訪問。
解決方法:可以自己設置一下 User-Agent,或者更好的是,可以從一系列的 User-Agent 里隨機挑出一個符合標準的使用 。
二、通過 JS 腳本來防止爬蟲:
舉個例子:如果想爬取某個網站,在請求之前,它會有一個驗證頁面來驗證你是否為爬蟲程序。它是怎么實現的呢?他會通過 JS 代碼生成一大段隨機的數字,然后要求瀏覽器通過 js 的運算得出這一串數字的和,再返回給服務器。
解決方法: 使用 PhantomJS !PhantomJS 是一個 Python 包,他可以在沒有圖形界面的情況下,完全模擬一個瀏覽器“,JS 腳本驗證什么的再也不是問題了。
三、通過IP限制來反爬蟲:
如果一個固定的 ip 在短暫的時間內,快速大量的訪問一個網站,那自然會引起注意,管理員可以通過一些手段把這個 ip 給封了,爬蟲程序自然也就做不了什么了。
解決方法:比較成熟的方式是:IP 代理池 簡單的說,就是通過 ip 代理,從不同的 ip 進行訪問,這樣就不會被封掉 ip 了。可是ip代理的獲取本身就是一個很麻煩的事情,網上有免費和付費的,但是質量都層次不齊。
如果是企業里需要的話,可以通過自己購買集群云服務來自建代理池。
實現方式如下:
def get_ip_poll():
'''
模擬代理池 返回一個字典類型的鍵值對,
'''
ip_poll = ["http://xx.xxx.xxx.xxx:9999",
"http://xx.xxx.xxx.xxx:8000",
"http://xx.xxx.xxx.xxx:8080",
"http://xx.xxx.xxx.xxx:9922",
"http://xx.xxx.xxx.xxx:8090"]
addresses = {}
addresses['http'] = ip_poll[random.randint(0, len(ip_poll))]
return addresses
四、通過 robots.txt 來限制爬蟲:
世界上做爬蟲最大最好的就是 Google 了,搜索引擎本身就是一個超級大的爬蟲,Google 開發出來爬蟲 24h 不間斷的在網上爬取著新的信息,并返回給數據庫,但是這些搜索引擎的爬蟲都遵守著一個協議:robots.txt robots.txt(統一小寫)是一種存放于網站根目錄下的 ASCII 編碼的文本文件,它通常告訴網絡搜索引擎的漫游器(又稱網絡蜘蛛),此網站中的哪些內容是不應被搜索引擎的漫游器獲取的,哪些是可以被漫游器獲取的。robots.txt協議并不是一個規范,而只是約定俗成的,所以并不能保證網站的隱私。
注意robots.txt是用字符串比較來確定是否獲取URL,所以目錄末尾有與沒有斜杠“/”表示的是不同的URL。
robots.txt 允許使用類似"Disallow: *.gif"這樣的通配符[1][2]。因為一些系統中的 URL 是大小寫敏感的,所以 robots.txt 的文件名應統一為小寫。robots.txt 應放置于網站的根目錄下。如果想單獨定義搜索引擎的漫游器訪問子目錄時的行為,那么可以將自定的設置合并到根目錄下的 robots.txt,或者使用 robots 元數據(Metadata,又稱元數據)。
當然在特定情況下,比如說我們爬蟲的獲取網頁的速度,和人類瀏覽網頁是差不多的,這并不會給服務器造成太大的性能損失,在這種情況下,我們是可以不用恪守 robots 協議的。
讀到這里,這篇“python網站常見的反扒方式有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。