什么爬蟲
常見的反爬方式及解決辦法
1. 通過headers字段來反爬
1.1 通過headers中的User-Agent字段來反爬
通過User-Agent字段反爬的話,只需要給他在請(qǐng)求之前添加User-Agent即可,更好的方式是使用User-Agent池來解決,我們可以考慮收集一堆User-Agent的方式,或者是隨機(jī)生成User-Agen
1.2 通過referer字段或者是其他字段來反爬
通過referer字段來反爬,我們只需要添加上即可
1.3 通過cookie來反爬
如果目標(biāo)網(wǎng)站不需要登錄 每次請(qǐng)求帶上前一次返回的cookie邪意,比如requests模塊的session
如果目標(biāo)網(wǎng)站需要登錄 準(zhǔn)備多個(gè)賬號(hào),通過一個(gè)程序獲取賬號(hào)對(duì)應(yīng)的cookie,組成cookie池斗塘,其他程序使用這些cookie
2.通過js來反爬
2.1 通過js實(shí)現(xiàn)跳轉(zhuǎn)來反爬
在請(qǐng)求目標(biāo)網(wǎng)站的時(shí)候,我們看到的似乎就請(qǐng)求了一個(gè)網(wǎng)站亮靴,然而實(shí)際上在成功請(qǐng)求目標(biāo)網(wǎng)站之前馍盟,中間可能有通過js實(shí)現(xiàn)的跳轉(zhuǎn),我們?nèi)庋鄄豢梢娂氲酰@個(gè)時(shí)候可以通過點(diǎn)擊perserve log按鈕實(shí)現(xiàn)觀察頁面跳轉(zhuǎn)情況
在這些請(qǐng)求中贞岭,如果請(qǐng)求數(shù)量很多,一般來講搓侄,只有那些response中帶cookie字段的請(qǐng)求是有用的瞄桨,意味著通過這個(gè)請(qǐng)求,對(duì)方服務(wù)器有設(shè)置cookie到本地
2.2 通過js生成了請(qǐng)求參數(shù)(百度翻譯讶踪,有道翻譯)
對(duì)應(yīng)的需要分析js讲婚,觀察加密的實(shí)現(xiàn)過程
- 簡單的可以直接用python實(shí)現(xiàn)邏輯
- 一般復(fù)雜的可以把js代碼拷出來 執(zhí)行
- 復(fù)雜的可以使用selenium模塊解決
3.3 通過js實(shí)現(xiàn)了數(shù)據(jù)的加密 示例
3. 通過驗(yàn)證碼來反爬
通過打碼平臺(tái)或者是機(jī)器學(xué)習(xí)的方法識(shí)別驗(yàn)證碼,其中打碼平臺(tái)廉價(jià)易用俊柔,建議使用
4. 通過ip地址來反爬
同一個(gè)ip大量請(qǐng)求了對(duì)方服務(wù)器筹麸,有更大的可能性會(huì)被識(shí)別為爬蟲活合,對(duì)應(yīng)的通過購買高質(zhì)量的ip的方式能夠解決
5.1 通過自定義字體來反爬
解決思路:可以嘗試切換到手機(jī)版試試
5.2 通過css來反爬 自如價(jià)格,去哪價(jià)格
如通過css掩蓋真實(shí)數(shù)據(jù)
解決思路:計(jì)算css的偏量
5.3 手機(jī)app
找工作網(wǎng)站 sign 破解