現在大型網站的反爬策略越來越高明了,不僅是對IP訪問頻率、User-Agent請求頭進行異常識別,還會分析IP地址、瀏覽器指紋、JS動態加載、API逆向、行為模式等方式各種設卡,動不動跳出五花八門的驗證碼,非常難搞。
怎么應對反爬是個系統性問題,需要采取多種策略,而且涉及到法律法規,得遵守網站的robot協議,做一些自動化檢測、采集少量公開數據沒啥問題,對網站造成干擾的事情可不能干。
我覺得有幾下幾個事情比較重要,可以很好的處理反爬蟲策略。
1、盡量不要使用無頭瀏覽器
因為很多網站會直接識別headless模式,也就是無頭模式,只有selenium、playwright這樣的自動化工具才會這么干,真人只會在瀏覽器界面訪問,所以用selenium、playwright時要打開真實瀏覽器界面,這樣不容易被檢測。
2、要模仿真人使用瀏覽器的行為
在playwright點擊、翻頁、下載等動作之間設置不定時的延遲,比如1~5秒的隨機延遲,這樣是為了模仿真人行為的不規律性。
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:# 啟動瀏覽器,設置更真實的視圖窗口browser = p.chromium.launch(headless=True)context = browser.new_context(viewport={'width': 1920, 'height': 1080})page = context.new_page()# 導航到頁面page.goto("https://example.com")# 模擬隨機鼠標移動(可選,根據需要)# page.mouse.move(random.randint(0, 1920), random.randint(0, 1080))
3、調整瀏覽器指紋
瀏覽器指紋包括像User-Agent、屏幕分辨率等,可以使用多個真實的User-Agent隨機輪換訪問,設置瀏覽器界面為常見分辨率等。
import requests
import random# 準備一個User-Agent列表
USER_AGENTS = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36...",# ... 更多User-Agent
]headers = {"User-Agent": random.choice(USER_AGENTS)}
4、可以設置代理IP池
同一個IP訪問頻率和時間過長,也會被檢測,所以需要找一些質量好點的IP池,可以切換訪問。
python selenium可以通過options模塊專門設置代理,可以隨機切換,設置不定時的延遲,這樣就不容易被封掉。
import requests
import random# 假設的代理IP池
proxies_list = [{"http": "http://1.2.3.4:8080", "https": "http://1.2.3.4:8080"},# ... 更多代理
]proxy = random.choice(proxies_list)
5、修改execute_cdp_cmd文件,隱藏selenium痕跡
selenium會默認在DOM中加入selenium標記腳本,這比較容易被識別出來,可以修改execute_cdp_cmd文件
6、可以嘗試用亮數據的采集api
如果是技術小白,不會寫上面提到的那些規避措施代碼,就可以嘗試用亮數據的這樣的采集api,它把各種規避檢測的技術、IP代理池都封裝到一個接口里,還提供專門的云上瀏覽器,用selenium接入,和普通瀏覽器一樣,有頭無頭都支持,但不需要再寫各種反爬措施之類的腳本,比較簡單直接。
而且亮數據還提供了專門的數據采集API-Scraper APIs,已經配置好所有爬蟲環節,你只需要配置好API接口就能一鍵采集到各大主流網站的數據。
Scraper APIs是亮數據專門為批量采集數據而開發的接口,支持上百個網站,200多個專門API采集器,例如商品、短視頻數據采集器,當然這些數據都是公開可抓取的,不會涉及任何隱私安全問題。
https://get.brightdata.com/weijun
亮數據使用方法:
- 注冊賬號 → 選擇“亮數據瀏覽器”。
https://get.brightdata.com/webscra - 輸入目標網址 → 生成Python代碼示例。
- 運行代碼 → 自動采集并存儲數據。
總的來說,應對反爬有很多措施,核心是模擬真人訪問行文,但現在檢測技術也越來越先進,魔高一尺道高一丈的博弈。不管怎么樣,一定要尊重robots
協議,還得控制爬取頻率,合法合規最關鍵。