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

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

常見(jiàn)的Python反爬方式有哪些?【Python面試題】

更新時(shí)間:2020年09月29日11時(shí)26分 來(lái)源:傳智播客 瀏覽次數(shù):

(1)問(wèn)題分析

面試官主要考察面試者有沒(méi)有反爬經(jīng)驗(yàn)。

(2)核心問(wèn)題講解

下面列舉一些常用的反爬策略。

1)通過(guò)設(shè)置headers字段來(lái)反爬

通過(guò)headers中的User-Agent字段來(lái)反爬。最好的反爬方式是使用User-Agent池,我們可以收集一些User-Agent,或者隨機(jī)生成User-Agent。

通過(guò)添加referer字段或者是其他字段來(lái)反爬。

通過(guò)cookie來(lái)反爬。若目標(biāo)網(wǎng)站無(wú)需登錄,則每次請(qǐng)求帶上上次返回的cookie,比如requests模塊的session;若目標(biāo)網(wǎng)站需要登錄,則準(zhǔn)備多個(gè)賬號(hào),通過(guò)一個(gè)程序獲取賬號(hào)對(duì)應(yīng)的cookie,組成cookie池,其他程序使用這些cookie。


2)通過(guò)js來(lái)反爬

通過(guò)js實(shí)現(xiàn)跳轉(zhuǎn)來(lái)反爬。在請(qǐng)求目錄網(wǎng)站時(shí),我們雖然只看到了成功請(qǐng)求的目標(biāo)網(wǎng)站,但是在請(qǐng)求目標(biāo)網(wǎng)站之前可能有通過(guò)js實(shí)現(xiàn)的跳轉(zhuǎn),此時(shí)可通過(guò)點(diǎn)擊perserve log按鈕觀察頁(yè)面的跳轉(zhuǎn)情況。在這些請(qǐng)求中,如果請(qǐng)求數(shù)量很多,一般來(lái)講,只有那些response中帶cookie字段的請(qǐng)求是有用的,也就是說(shuō)通過(guò)這個(gè)請(qǐng)求,對(duì)方服務(wù)器有設(shè)置cookie到本地。

通過(guò)js生成了請(qǐng)求參數(shù)。對(duì)應(yīng)的需要分析js,觀察加密的實(shí)現(xiàn)過(guò)程,可以使用selenium模塊解決。

通過(guò)js實(shí)現(xiàn)了數(shù)據(jù)的加密。對(duì)應(yīng)的需要分析js,觀察加密的實(shí)現(xiàn)過(guò)程,可以使用selenium模塊實(shí)現(xiàn)。

3)通過(guò)驗(yàn)證碼來(lái)反爬。通過(guò)打碼平臺(tái)或者是機(jī)器學(xué)習(xí)的方法識(shí)別驗(yàn)證碼,其中打碼平臺(tái)廉價(jià)易用,建議使用。

4)通過(guò)IP地址來(lái)反爬。同一個(gè)IP大量請(qǐng)求了對(duì)方服務(wù)器,有更大的可能性會(huì)被識(shí)別為爬蟲(chóng),對(duì)應(yīng)的通過(guò)購(gòu)買(mǎi)高質(zhì)量的IP的方式能夠解決。

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

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

(3)問(wèn)題擴(kuò)展

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

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

爬蟲(chóng)技術(shù)剛剛誕生時(shí),大多數(shù)從業(yè)者都會(huì)默守這一協(xié)定,但是當(dāng)網(wǎng)絡(luò)爬蟲(chóng)被濫用后,互聯(lián)網(wǎng)上就出現(xiàn)太多同質(zhì)的東西,原創(chuàng)得不到保護(hù),違反了“君子協(xié)議”。

當(dāng)君子協(xié)議失效,很多網(wǎng)站開(kāi)始反網(wǎng)絡(luò)爬蟲(chóng),想方設(shè)法保護(hù)自己的內(nèi)容,它們根據(jù)IP訪(fǎng)問(wèn)頻率、瀏覽網(wǎng)頁(yè)速率、賬戶(hù)登錄、輸入驗(yàn)證碼、flash封裝、ajax混淆、js加密、圖片、css混淆等五花八門(mén)的技術(shù)來(lái)反網(wǎng)絡(luò)爬蟲(chóng)。


猜你喜歡:

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

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

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

Python高級(jí)軟件工程師課程 

0 分享到:
和我們?cè)诰€(xiàn)交談!