更新時間:2020年09月29日11時26分 來源:傳智播客 瀏覽次數(shù):
(1)問題分析
面試官主要考察面試者有沒有反爬經(jīng)驗。
(2)核心問題講解
下面列舉一些常用的反爬策略。
1)通過設置headers字段來反爬
通過headers中的User-Agent字段來反爬。最好的反爬方式是使用User-Agent池,我們可以收集一些User-Agent,或者隨機生成User-Agent。
通過添加referer字段或者是其他字段來反爬。
通過cookie來反爬。若目標網(wǎng)站無需登錄,則每次請求帶上上次返回的cookie,比如requests模塊的session;若目標網(wǎng)站需要登錄,則準備多個賬號,通過一個程序獲取賬號對應的cookie,組成cookie池,其他程序使用這些cookie。
2)通過js來反爬
通過js實現(xiàn)跳轉來反爬。在請求目錄網(wǎng)站時,我們雖然只看到了成功請求的目標網(wǎng)站,但是在請求目標網(wǎng)站之前可能有通過js實現(xiàn)的跳轉,此時可通過點擊perserve log按鈕觀察頁面的跳轉情況。在這些請求中,如果請求數(shù)量很多,一般來講,只有那些response中帶cookie字段的請求是有用的,也就是說通過這個請求,對方服務器有設置cookie到本地。
通過js生成了請求參數(shù)。對應的需要分析js,觀察加密的實現(xiàn)過程,可以使用selenium模塊解決。
通過js實現(xiàn)了數(shù)據(jù)的加密。對應的需要分析js,觀察加密的實現(xiàn)過程,可以使用selenium模塊實現(xiàn)。
3)通過驗證碼來反爬。通過打碼平臺或者是機器學習的方法識別驗證碼,其中打碼平臺廉價易用,建議使用。
4)通過IP地址來反爬。同一個IP大量請求了對方服務器,有更大的可能性會被識別為爬蟲,對應的通過購買高質量的IP的方式能夠解決。
5)通過自定義字體來反爬??梢試L試切換到手機版試試。
6)通過css來反爬,比如通過css掩蓋真實數(shù)據(jù)。
(3)問題擴展
網(wǎng)絡爬蟲,是一個自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。
幾乎是和爬蟲技術誕生的同一時刻,反爬蟲技術也誕生了。在90年代開始有搜索引擎網(wǎng)站利用爬蟲技術抓取網(wǎng)站時,一些搜索引擎從業(yè)者和網(wǎng)站站長通過郵件討論定下了一項“君子協(xié)議”—— robots.txt。即網(wǎng)站有權規(guī)定網(wǎng)站中哪些內容可以被爬蟲抓取,哪些內容不可以被爬蟲抓取。這樣既可以保護隱私和敏感信息,又可以被搜索引擎收錄、增加流量。
爬蟲技術剛剛誕生時,大多數(shù)從業(yè)者都會默守這一協(xié)定,但是當網(wǎng)絡爬蟲被濫用后,互聯(lián)網(wǎng)上就出現(xiàn)太多同質的東西,原創(chuàng)得不到保護,違反了“君子協(xié)議”。
當君子協(xié)議失效,很多網(wǎng)站開始反網(wǎng)絡爬蟲,想方設法保護自己的內容,它們根據(jù)IP訪問頻率、瀏覽網(wǎng)頁速率、賬戶登錄、輸入驗證碼、flash封裝、ajax混淆、js加密、圖片、css混淆等五花八門的技術來反網(wǎng)絡爬蟲。
猜你喜歡:
Django海量數(shù)據(jù)集分頁優(yōu)化方法