反爬蟲與反反爬蟲

喜歡爬蟲的伙伴都知道,在爬網站的內容的時候并不是一爬就可以了,有時候就會遇到一些網站的反爬蟲,折回讓你爬不到數據,給你返回一些404,403或者500的狀態碼,這有時候會讓人苦不堪言,就如我昨天發的爬網易云音樂評論,在你爬的數據較多時,網站認為你是一個機器,就不讓你爬了,網易云就給我返回了一個{"code":-460,"msg":"Cheating"},你不看下他的返回內容還不知道自己被反爬蟲,不過不用擔心,既然網頁有反爬蟲,可我們也有反反爬蟲,今天就給大家說說反爬蟲與反反爬蟲。

1).網頁的反爬蟲

1.通過網頁的請求頭

首先我們先看看網易云音樂評論的請求頭

請求頭


User-Agent:這個是保存用戶訪問該網站的瀏覽器的信息,我上面這個表示的是我通過window的瀏覽器來訪問這個網站的,如果你是用python來直接請求這個網站的時候,這個的信息會帶有python的字眼,所以網站管理員可以通過這個來進行反爬蟲。

Referer:當瀏覽器發送請求時,一般都會帶上這個,這個可以讓網站管理者知道我是通過哪個鏈接訪問到這個網站的,上面就說明我是從網易云音樂的主頁來訪問到這個頁面的,若你是用python來直接請求是,就沒有訪問來源,那么管理者就輕而易舉地判斷你是機器在操作。

authorization:有的網站還會有這個請求頭,這個是在用戶在訪問該網站的時候就會分配一個id給用戶,然后在后臺驗證該id有沒有訪問權限從而來進行發爬蟲。

2.用戶訪問網站的ip

當你這個ip在不斷地訪問一個網站來獲取數據時,網頁后臺也會判斷你是一個機器。就比如我昨天爬的網易云音樂評論,我剛開始爬的一首《海闊天空》時,因為評論較少,所以我容易就得到所有數據,但是當我選擇爬一首較多評論的《等你下課》時,在我爬到800多頁的時候我就爬不了,這是因為你這個ip的用戶在不斷地訪問這個網站,他已經把你視為機器,所以就爬不了,暫時把你的ip給封了。

2).我們的反反爬蟲

1.添加請求頭

既然在請求網頁的時候需要請求頭,那么我們只需要在post或者get的時候把我們的請求頭加上就可以了,怎樣加?可以使用requests庫來添加,在post,get或者其他方法是加上headers參數就可以了,而請求頭不需要復制所有的信息,只需要上面的三個之中一個就可以,至于哪個自己判斷,或者直接添加所有也可以,這樣我們就可以繼續爬了。

2.使用代理ip

若是網站把你的ip給封了,你添加什么的請求頭也都沒有用了,那我們就只有等他解封我們才可以繼續爬嗎?我可以十分自信告訴你:不需要,我們可以使用代理ip來繼續爬,我們可以爬取網絡上的免費ip來爬,至于免費的代理ip質量怎樣你們應該知道,有必要可以買些不免費的,這樣好點,我們平時的練習用免費的代理ip就可以了,可以自己爬取一些免費代理ip建成ip池,然后爬的時候就把ip隨機取出來,我偷偷告訴你:小編明天的文章就是教你怎樣搭建自己的代理ip池。

END

結束語:上面的只是個人在爬一些網站時候遇到的一些反爬蟲,這只是很簡單的,還有那些動態網站的反爬蟲自己還沒有接觸,等到以后接觸了,再一 一補充。最后給大家在爬蟲上的建議,就是爬取速度不要太快,最好每幾個就隔幾秒,不要給服務器造成太大的壓力,也可以在爬蟲的時候選擇一些訪問量少點的時間段,這是對服務器好,也是對你自己好!

日常學python
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,076評論 25 708
  • iOS學習網站 objc 中國objc.io 是關于 Objective-C 最佳實踐和先進技術的期刊,每期一個話...
    lyking閱讀 663評論 0 2
  • 想要還清 所有人 對我的好 不再 跟這個世界 有一點點聯系 想要還清 欠別人 所有的不好 不再 跟這...
    光之予閱讀 200評論 0 2
  • 現在金姐終于能夠笑著說起自己失敗的婚姻了。 25歲被逼和談了三年男友分手嫁給一個家人安排的男人,婚前就見過三次面。...
    慵懶的小柒閱讀 625評論 5 19