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