常见的反爬手段和解决思路
生活随笔
收集整理的這篇文章主要介紹了
常见的反爬手段和解决思路
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.明確反反爬的主要思路
反反爬的主要思路就是:盡可能的去模擬瀏覽器,瀏覽器在如何操作,代碼中就如何去實現。
例如:瀏覽器先請求了地址url1,保留了cookie在本地,之后請求地址url2,帶上了之前的cookie,代碼中也可以這樣去實現。
2.通過headers字段來反爬
headers中有很多字段,這些字段都有可能會被對方服務器拿過來進行判斷是否為爬蟲
2.1 通過headers中的User-Agent字段來反爬
- 反爬原理:爬蟲默認情況下沒有User-Agent
- 解決方法:請求之前添加User-Agent即可;更好的方式是使用User-Agent池來解決(收集一堆User-Agent的方式,或者是隨機生成User-Agent)
2.2 通過referer字段或者是其他字段來反爬
- 反爬原理:爬蟲默認情況下不會帶上referer字段
- 解決方法:添加referer字段
2.3 通過cookie來反爬
- 如果目標網站不需要登錄 每次請求帶上前一次返回的cookie,比如requests模塊的session 如果目標網站需要登錄
- 準備多個賬號,通過一個程序獲取賬號對應的cookie,組成cookie池,其他程序使用這些cookie
3.通過js來反爬
普通的爬蟲默認情況下無法執行js,獲取js執行之后的結果,所以很多時候對方服務器會通過js的技術實現反爬
3.1 通過js實現跳轉來反爬
- 反爬原理:js實現頁面跳轉,肉眼不可見
- 解決方法: 在chrome中點擊perserve log按鈕實現觀察頁面跳轉情況。在這些請求中,如果請求數量很多,一般來講,只有那些response中帶cookie字段的請求是有用的,意味著通過這個請求,對方服務器有設置cookie到本地
3.2 通過js生成了請求參數
- 反爬原理:js生成了請求參數
- 解決方法:分析js,觀察加密的實現過程,通過js2py獲取js的執行結果,或者使用selenium來實現
3.3 通過js實現了數據的加密
- 反爬原理:js實現了數據的加密
- 解決方法:分析js,觀察加密的實現過程,通過js2py獲取js的執行結果,或者使用selenium來實現
4.通過驗證碼來反爬
- 反爬原理:對方服務器通過彈出驗證碼強制驗證用戶瀏覽行為
- 解決方法:打碼平臺或者是機器學習的方法識別驗證碼,其中打碼平臺廉價易用,更值得推薦
5.通過ip地址來反爬
- 反爬原理:正常瀏覽器請求網站,速度不會太快,同一個ip大量請求了對方服務器,有更大的可能性會被識別為爬蟲
- 解決方法:對應的通過購買高質量的ip的方式能夠解決問題
6.通過用戶行為來反爬
- 反爬原理:通過瀏覽器請求數據,很多用戶行為會在瀏覽器中是很容易實現或者無法實現.比如瀏覽器請求額外的圖片地址,服務端進行記錄,出現意味著不是爬蟲(爬蟲中不會主動請求圖片)
- 解決方法:通過獲取數據的情況來觀察請求,尋找異常出現的可能請求
7.其他的反爬方式
7.1 通過自定義字體來反爬
下圖來自貓眼電影電腦版
解決思路:切換到手機版
7.2 通過css來反爬
下圖來自貓眼去哪兒電腦版
解決思路:計算css的偏移
總結
以上是生活随笔為你收集整理的常见的反爬手段和解决思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: selenium的使用教程3
- 下一篇: scrapy框架的概念和流程