日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...

發布時間:2025/4/5 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲(Spider),反爬蟲(Anti-Spider),反反爬蟲(Anti-Anti-Spider),這之間的斗爭恢宏壯闊...

Day 1

小莫想要某站上所有的電影,寫了標準的爬蟲(基于HttpClient庫),不斷地遍歷某站的電影列表頁面,根據 Html 分析電影名字存進自己的數據庫。

這個站點的運維小黎發現某個時間段請求量陡增,分析日志發現都是 IP(1.1.1.1)這個用戶,并且 useragent 還是 JavaClient1.6 ,基于這兩點判斷非人類后直接在Nginx 服務器上封殺。

Day 2

小莫電影只爬了一半,于是也針對性的變換了下策略:1. useragent 模仿百度("Baiduspider..."),2. IP每爬半個小時就換一個IP代理。

小黎也發現了對應的變化,于是在 Nginx 上設置了一個頻率限制,每分鐘超過120次請求的再屏蔽IP。 同時考慮到百度家的爬蟲有可能會被誤傷,想想市場部門每月幾十萬的投放,于是寫了個腳本,通過 hostname 檢查下這個 ip 是不是真的百度家的,對這些 ip 設置一個白名單。

Day 3

小莫發現了新的限制后,想著我也不急著要這些數據,留給服務器慢慢爬吧,于是修改了代碼,隨機1-3秒爬一次,爬10次休息10秒,每天只在8-12,18-20點爬,隔幾天還休息一下。

小黎看著新的日志頭都大了,再設定規則不小心會誤傷真實用戶,于是準備換了一個思路,當3個小時的總請求超過50次的時候彈出一個驗證碼彈框,沒有準確正確輸入的話就把 IP 記錄進黑名單。

Day 4

小莫看到驗證碼有些傻臉了,不過也不是沒有辦法,先去學習了圖像識別(關鍵詞 PIL,tesseract),再對驗證碼進行了二值化,分詞,模式訓練之后,識別了小黎的驗證碼(關于驗證碼,驗證碼的識別,驗證碼的反識別也是一個恢弘壯麗的斗爭史,這里先不展開....),之后爬蟲又跑了起來。

小黎是個不折不撓的好同學,看到驗證碼被攻破后,和開發同學商量了變化下開發模式,數據并不再直接渲染,而是由前端同學異步獲取,并且通過 js 的加密庫生成動態的 token,同時加密庫再進行混淆(比較重要的步驟的確有網站這樣做,參見微博的登陸流程)。

Day5

混淆過的加密庫就沒有辦法了么?當然不是,可以慢慢調試,找到加密原理,不過小莫不準備用這么耗時耗力的方法,他放棄了基于 HttpClient的爬蟲,選擇了內置瀏覽器引擎的爬蟲(關鍵詞:PhantomJS,Selenium),在瀏覽器引擎中js 加密腳本算出了正確的結果,又一次拿到了對方的數據。

小黎:.....

爬蟲與發爬蟲的斗爭還在繼續。

不過實際應用時候,一般大家做到根據 IP 限制頻次就結束了,除非很核心的數據,不會再進行更多的驗證,畢竟工程的問題一半是成本的問題。

至于高效部分,一些 Tips:

1.盡量減少請求次數,能抓列表頁就不抓詳情頁

2.不要只看 Web 網站,還有 App 和 H5,他們的反爬蟲措施一般比較少

3.如果真的對性能要求很高,可以考慮多線程(一些成熟的框架如 scrapy都已支持),甚至分布式

另外,想深入研究爬蟲/反爬蟲的同學,可以把簡歷發過來: shenyubaosouche.com ,本廣告長期有效。

====

2016.1.3 修改幾處 spider 拼寫錯誤,感謝 @Danilo

總結

以上是生活随笔為你收集整理的python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。