Python Selenium访问指定页面出现CORS错误但真实浏览器正常如何修复
Selenium访问温德姆酒店页面CORS错误排查与修复方案
该问题的核心原因是网站反爬机制识别到Selenium启动的浏览器存在自动化特征,主动拦截请求并返回不符合CORS规则的响应头,并非原生跨域配置问题。
排查步骤
- 对比请求头差异:抓包对比正常浏览器与Selenium启动浏览器的请求头,重点检查User-Agent、Origin、Referer、Accept字段是否存在差异
- 检查浏览器特征:确认Selenium启动的浏览器是否存在
navigator.webdriver=true、无本地用户指纹等自动化标识 - 校验Cookie状态:确认Selenium启动的无痕环境是否携带网站前置访问生成的必要Cookie
修复方案
方案1:移除Selenium自动化特征
启动浏览器时添加参数掩盖自动化标识,示例代码(Chrome为例):
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time chrome_options = Options() # 禁用自动化控制标识 chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("useAutomationExtension", False) # 替换为你本地正常浏览器的User-Agent chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") # 可选:禁用跨域安全校验 chrome_options.add_argument("--disable-web-security") chrome_options.add_argument("--allow-running-insecure-content") driver = webdriver.Chrome(options=chrome_options) # 覆盖webdriver属性 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" })
方案2:访问前预加载前置Cookie
先访问网站首页生成必要Cookie后再跳转目标页面:
# 先访问首页加载Cookie driver.get("https://www.wyndhamhotels.com/") time.sleep(3) # 再跳转目标房型页面 driver.get("https://www.wyndhamhotels.com/days-inn/alexander-city-alabama/days-inn-alexander-city/rooms-rates")
方案3:复用本地正常浏览器配置
直接连接本地已可正常访问的浏览器进程,完全规避特征识别问题:
- 关闭所有Chrome窗口后,命令行启动Chrome开启调试端口:
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrome_debug_profile" - Selenium直接连接该调试端口:
chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options)
内容的提问来源于stack exchange,提问作者jis0324
相关产品推荐
相关产品推荐

