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的偏移