為什麼scrapy沒法爬中紀委網站?

來源:互聯網
上載者:User

回複內容:

無論是什麼裝置,第一次訪問該站,都會彈出一個521的錯誤狀態代碼,與此同時還會返回一個Cookie。無論是什麼裝置,第一次訪問該站,都會彈出一個521的錯誤狀態代碼,與此同時還會返回一個Cookie。
瀏覽器接受到狀態代碼與Cookie,會再次進行一次請求,因為接收到了Set-Cookie,所以第二次的Request Headers會附上之前接收到的Cookie。
這樣的請求才是成功的。這樣的請求才是成功的。

這個防爬蟲的方法非常基礎,利用了普通爬蟲與瀏覽器對於Status Code的處理方式不同。

你要爬取,只需要先請求一次,獲得一個Cookie並儲存,然後之後所有的請求都附上這個儲存下來的Cookie,這樣就行了。

爬蟲的要訣在於:儘力模仿使用者使用瀏覽器的行為。想了一會兒要不要回答,因為題目被貼上了作死標籤……╭(°A°`)╮
---------------------------------------------------------------
Chrome大法好,Python大法好。



@林燦斌 說的方法沒錯,不過一般這種網站的Cookie生效時間都比較長,所以你直接複製你Request Headers中的Cookie值,放到你類比post請求的包中就可以了。你自己在瀏覽器裡開啟該網址,然後查看Request Headers中的內容。針對各種反抓取機制,主要有以下幾種:
1、Cookie:這個不用多說,你把你的Cookie記下來就好,還可以解決一串需要類比登陸才能抓取的網站,比如微博之類的;
2、Host:這個不用多說,帶上就好,不會變;
3、Referer:有些網站比較變態不僅會檢查你是否帶Referer資訊還會 檢查你的Referer是否合法,這兒就不點名了,怕被查水表;
4、User-Agent:這裡面就是你使用者使用環境的一些資訊,如瀏覽器和作業系統,儘可能帶上。最好是自己有一個UA表, 每次構造請求的時候,隨機採用一條UA資訊

除此之外,最重要的就是在IP上下工夫。

1、偽造X-forwarded-for頭:這是最容易偽造IP的一個方法,當然也最容易被識破;
2、使用TCP包注入:這個方法被Scrapy封裝起來了,具體可以查相關文檔,比如還可以藉此實現偽造IP源進行SYN FLOOD拒絕服務的攻擊(好像走偏了……);
3、使用代理IP池:這是最靠譜的做法,缺點就是代理IP的品質常常參差不齊,所以還需要寫一個指令碼來維護這個代理IP池,比如要擷取新的代理IP以及剔除庫中無效的IP(我一般就挨個拿來嘗試能否訪問百度)。

如果你抓取的內容是通過AJAX獲得的,那麼你的任務就是找到那條JS發出去的請求,按以上套路類比之即可。祭出神器
http://jeanphix.me/Ghost.py/ 爬蟲是蛀蟲,害怕中紀委,不敢爬中紀委的網站。這種頁數不太多的建議自己寫爬蟲,比直接用scrapy靈活性強一些。這種內容並不是很多的頁面用bs4/re+requests+gevent/threading已經可以隨意抓了,我始終覺得爬蟲難在爬下來的東西要怎麼處理。
不知道頁面是怎麼跳的時候祭出神器Wireshark。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.