使用Selenium Chrome Driver时网站账户信息异常的解决咨询
解决Selenium登录后账户信息异常的问题
复用已登录的浏览器会话
网站通常依靠Cookie、本地存储或会话存储识别已登录状态,而Selenium默认启动全新浏览器实例,没有你手动登录时的这些数据。可以让Selenium连接到你已经登录好的浏览器进程:- Chrome:先关闭所有Chrome窗口,在命令行执行
chrome.exe --remote-debugging-port=9222启动浏览器,手动登录目标网站后,用以下代码连接:from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=options)
这样Selenium会直接接管已登录的窗口,账户信息和手动访问一致。
- Chrome:先关闭所有Chrome窗口,在命令行执行
手动导入Cookie
在常规浏览器登录后,通过开发者工具的Application面板复制网站Cookie(格式为包含name、value、domain等字段的列表),然后在Selenium中添加Cookie并刷新页面:# 示例Cookie列表,替换为你实际复制的内容 cookies = [ {"name": "session_id", "value": "xxx", "domain": "example.com"}, {"name": "user_token", "value": "yyy", "domain": "example.com"} ] for cookie in cookies: # 删除可能导致报错的expiry字段 if 'expiry' in cookie: del cookie['expiry'] driver.add_cookie(cookie) driver.refresh()隐藏Selenium自动化特征
部分网站会检测navigator.webdriver等特征,把自动化脚本判定为异常会话。可以通过配置浏览器选项屏蔽这些特征:- Chrome:
options = Options() options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(options=options) # 执行JS修改navigator.webdriver属性 driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") - Firefox:
from selenium.webdriver.firefox.options import Options options = Options() options.set_preference("dom.webdriver.enabled", False) options.set_preference('useAutomationExtension', False) driver = webdriver.Firefox(options=options)
- Chrome:
统一用户代理字符串
Selenium默认用户代理和常规浏览器有差异,可能被网站识别为不同会话。可以设置和你常用浏览器一致的用户代理:# 替换为你实际浏览器的用户代理,可通过about:version(Chrome)或about:support(Firefox)查看 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')
内容的提问来源于stack exchange,提问作者Universecode
相关产品推荐
相关产品推荐

