Selenium 反反爬蟲:UA偽裝 + 代理切換實(shí)戰(zhàn)技巧
Selenium 自動(dòng)化被攔截怎么辦?
在使用 Selenium 自動(dòng)化瀏覽網(wǎng)頁時(shí),經(jīng)常會(huì)遇到“異常訪問”、“驗(yàn)證碼校驗(yàn)”甚至直接拒絕訪問等情況。這是因?yàn)榇蠖鄶?shù)網(wǎng)站都部署了反爬機(jī)制,用來攔截腳本程序。
雖然 Selenium 是為了模擬真實(shí)用戶操作,但若使用方式不當(dāng),很容易被識(shí)別。為此,我們要特別注意以下幾點(diǎn):
- 限制請(qǐng)求頻率:不要頻繁刷新頁面或切換頁面。
- 動(dòng)態(tài)更換 IP 和 UA:避免單一客戶端指紋被封鎖。

如何設(shè)置代理 IP 和 User-Agent(UA)?
網(wǎng)站通常會(huì)根據(jù)請(qǐng)求的 UA 和 IP 識(shí)別請(qǐng)求者是否為機(jī)器人。我們可以通過以下方式隨機(jī)切換 UA 和代理,來迷惑目標(biāo)網(wǎng)站的反爬檢測。
第一步:安裝隨機(jī) UA 庫
pip3 install fake-useragent完整代碼示例:實(shí)現(xiàn) UA + IP 動(dòng)態(tài)偽裝
代碼如下:
#!/usr/bin/python
# coding: UTF-8
# -*- coding:utf-8 -*-
# IP代理和UA切換
from time import sleep
from fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
global driver
# 啟動(dòng)Chrome
def get_driver():
user_agent = UserAgent().random
# 代理地址
proxies = "http://xxx.xxx.xxx.xxx:80"
# 輸出當(dāng)前配置
print("headers請(qǐng)求頭", '--user-agent={}'.format(str(user_agent)))
print("proxies代理設(shè)置", '--proxy-server={}'.format(str(proxies)))
chrome_options = Options()
# 設(shè)置不加載圖片(可選)
# prefs = {"profile.managed_default_content_settings.images": 2}
# chrome_options.add_experimental_option("prefs", prefs)
# 設(shè)置代理(解開注釋啟用)
# chrome_options.add_argument('--proxy-server={}'.format(str(proxies)))
# 替換User-Agent
chrome_options.add_argument('--user-agent={}'.format(str(user_agent))) # 配置為自己設(shè)置的UA
chrome_driver_path = r'C:\Users\ws\Desktop\chrome-win64\chromedriver.exe'
chrome_browser_path = r'C:\Users\ws\Desktop\chrome-win64\chrome.exe'
chrome_options.binary_location = chrome_browser_path
service = Service(chrome_driver_path)
return webdriver.Chrome(service=service, options=chrome_options)
if __name__ == '__main__':
try:
driver = get_driver()
driver.get('http://httpbin.org/ip')
# 顯性等待頁面加載
WebDriverWait(driver, 10).until(
lambda _: driver.find_element(By.XPATH, '/html/body/pre')
)
print("頁面代理設(shè)置", driver.page_source)
sleep(1000)
except Exception as e:
driver.quit()
print('open_url:', e)獲取免費(fèi)代理地址:推薦工具 ProxyUtil
例如使用方法如下:
# 調(diào)用 ProxyUtil 自動(dòng)獲取代理,前提是先執(zhí)行工具的main方法
proxy_util = ProxyUtil()
proxies = proxy_util.load_proxy()當(dāng)然,也可以直接手動(dòng)填寫代理地址,按示例格式即可。
配置驗(yàn)證方式
運(yùn)行程序后,會(huì)打開一個(gè)頁面 http://httpbin.org/ip,此頁面會(huì)顯示你當(dāng)前的外部 IP 地址,用于驗(yàn)證代理是否生效。

你也可以按 F12 打開開發(fā)者工具,查看 User-Agent 請(qǐng)求頭信息,進(jìn)一步確認(rèn)偽裝是否成功。

結(jié)語
通過本文你已經(jīng)掌握了:
- 使用 fake_useragent 隨機(jī) UA
- 配置 Selenium 使用代理 IP
- 如何驗(yàn)證偽裝是否生效
這些技巧在應(yīng)對(duì)網(wǎng)站反爬機(jī)制中非常關(guān)鍵。































