1. 程式人生 > >常見的反爬手段和解決思路

常見的反爬手段和解決思路

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