Selenium 反反爬蟲:UA偽裝 + 代理切換實戰(zhàn)技巧
Selenium 自動化被攔截怎么辦?
在使用 Selenium 自動化瀏覽網頁時,經常會遇到“異常訪問”、“驗證碼校驗”甚至直接拒絕訪問等情況。這是因為大多數網站都部署了反爬機制,用來攔截腳本程序。
雖然 Selenium 是為了模擬真實用戶操作,但若使用方式不當,很容易被識別。為此,我們要特別注意以下幾點:
- 限制請求頻率:不要頻繁刷新頁面或切換頁面。
- 動態(tài)更換 IP 和 UA:避免單一客戶端指紋被封鎖。
如何設置代理 IP 和 User-Agent(UA)?
網站通常會根據請求的 UA 和 IP 識別請求者是否為機器人。我們可以通過以下方式隨機切換 UA 和代理,來迷惑目標網站的反爬檢測。
第一步:安裝隨機 UA 庫
pip3 install fake-useragent
完整代碼示例:實現(xiàn) UA + IP 動態(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
# 啟動Chrome
def get_driver():
user_agent = UserAgent().random
# 代理地址
proxies = "http://xxx.xxx.xxx.xxx:80"
# 輸出當前配置
print("headers請求頭", '--user-agent={}'.format(str(user_agent)))
print("proxies代理設置", '--proxy-server={}'.format(str(proxies)))
chrome_options = Options()
# 設置不加載圖片(可選)
# prefs = {"profile.managed_default_content_settings.images": 2}
# chrome_options.add_experimental_option("prefs", prefs)
# 設置代理(解開注釋啟用)
# chrome_options.add_argument('--proxy-server={}'.format(str(proxies)))
# 替換User-Agent
chrome_options.add_argument('--user-agent={}'.format(str(user_agent))) # 配置為自己設置的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("頁面代理設置", driver.page_source)
sleep(1000)
except Exception as e:
driver.quit()
print('open_url:', e)
獲取免費代理地址:推薦工具 ProxyUtil
例如使用方法如下:
# 調用 ProxyUtil 自動獲取代理,前提是先執(zhí)行工具的main方法
proxy_util = ProxyUtil()
proxies = proxy_util.load_proxy()
當然,也可以直接手動填寫代理地址,按示例格式即可。
配置驗證方式
運行程序后,會打開一個頁面 http://httpbin.org/ip,此頁面會顯示你當前的外部 IP 地址,用于驗證代理是否生效。
你也可以按 F12 打開開發(fā)者工具,查看 User-Agent 請求頭信息,進一步確認偽裝是否成功。
結語
通過本文你已經掌握了:
- 使用 fake_useragent 隨機 UA
- 配置 Selenium 使用代理 IP
- 如何驗證偽裝是否生效
這些技巧在應對網站反爬機制中非常關鍵。