常見的反爬手段和解決思路
阿新 • • 發佈:2019-01-02
1.通過headers中的User-Agent欄位來反爬
隨機生成User-Agent:
import random def get_ua(): first_num = random.randint(55, 62) third_num = random.randint(0, 3200) fourth_num = random.randint(0, 140) os_type = [ '(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)', '(Macintosh; Intel Mac OS X 10_12_6)' ] chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num) ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36', '(KHTML, like Gecko)', chrome_version, 'Safari/537.36'] ) return ua
2. 通過referer欄位或者是其他欄位來反爬
通過referer欄位來反爬,我們只需要新增上即可
3.通過cookie來反爬
-
如果目標網站不需要登入 每次請求帶上前一次返回的cookie,比如requests模組的session
-
如果目標網站需要登入 準備多個賬號,通過一個程式獲取賬號對應的cookie,組成cookie池,其他程式使用這些cookie
4.通過js來反爬
使用selenium
5.通過驗證碼來反爬
通過打碼平臺或者是機器學習的方法識別驗證碼,其中打碼平臺廉價易用
6.通過ip地址來反爬
同一個ip大量請求了對方伺服器,有更大的可能性會被識別為爬蟲,對應的通過購買高質量的ip的方式能夠結局問題
7.通過自定義字型來反爬
解決思路:切換到手機版
8.通過css來反爬
解決思路:計算css的偏移