教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

常見的Python反爬方式有哪些?【Python面試題】

更新時間:2020年09月29日11時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)備多個賬號,通過一個程序獲取賬號對應(yīng)的cookie,組成cookie池,其他程序使用這些cookie。


2)通過js來反爬

通過js實(shí)現(xiàn)跳轉(zhuǎn)來反爬。在請求目錄網(wǎng)站時,我們雖然只看到了成功請求的目標(biāo)網(wǎng)站,但是在請求目標(biāo)網(wǎng)站之前可能有通過js實(shí)現(xiàn)的跳轉(zhuǎn),此時可通過點(diǎn)擊perserve log按鈕觀察頁面的跳轉(zhuǎn)情況。在這些請求中,如果請求數(shù)量很多,一般來講,只有那些response中帶cookie字段的請求是有用的,也就是說通過這個請求,對方服務(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)證碼來反爬。通過打碼平臺或者是機(jī)器學(xué)習(xí)的方法識別驗(yàn)證碼,其中打碼平臺廉價易用,建議使用。

4)通過IP地址來反爬。同一個IP大量請求了對方服務(wù)器,有更大的可能性會被識別為爬蟲,對應(yīng)的通過購買高質(zhì)量的IP的方式能夠解決。

5)通過自定義字體來反爬??梢試L試切換到手機(jī)版試試。

6)通過css來反爬,比如通過css掩蓋真實(shí)數(shù)據(jù)。

(3)問題擴(kuò)展

網(wǎng)絡(luò)爬蟲,是一個自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。

幾乎是和爬蟲技術(shù)誕生的同一時刻,反爬蟲技術(shù)也誕生了。在90年代開始有搜索引擎網(wǎng)站利用爬蟲技術(shù)抓取網(wǎng)站時,一些搜索引擎從業(yè)者和網(wǎng)站站長通過郵件討論定下了一項(xiàng)“君子協(xié)議”—— robots.txt。即網(wǎng)站有權(quán)規(guī)定網(wǎng)站中哪些內(nèi)容可以被爬蟲抓取,哪些內(nèi)容不可以被爬蟲抓取。這樣既可以保護(hù)隱私和敏感信息,又可以被搜索引擎收錄、增加流量。

爬蟲技術(shù)剛剛誕生時,大多數(shù)從業(yè)者都會默守這一協(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ò)爬蟲。


猜你喜歡:

Python模塊有哪些?怎么使用? 

Django海量數(shù)據(jù)集分頁優(yōu)化方法 

Python數(shù)據(jù)挖掘教程下載:4天快速入門Python數(shù)據(jù)挖掘 

Python高級軟件工程師課程 

0 分享到:
和我們在線交談!