Selenium自动化Discover信用卡网站登录遇浏览器过时提示问题
解决Discover信用卡网站Selenium登录被拦截问题
你的三个问题解答:
代码和访问方式存在问题:
- chromedriver版本未完全匹配Chrome浏览器,哪怕同大版本下的小版本差异也可能触发网站检测;
- 代码未配置任何模拟真实用户的参数,且开启
accept_insecure_certs可能让网站判定环境不安全; implicitly_wait与time.sleep混用,操作行为过于机械(比如一次性输入账号密码),容易被识别为机器人。
核心是未充分模拟真实用户,而非Cookie/SSL问题:
- Selenium默认会暴露自动化特征(如
window.navigator.webdriver为true),哪怕用undetected_chromedriver/selenium-stealth,若配置不到位仍会被网站检测到; - 需要从浏览器参数、环境特征、操作行为多个维度模拟真实用户浏览场景。
- Selenium默认会暴露自动化特征(如
Discover的反爬机制确实严格:
- 金融类网站对自动化登录的检测标准极高,会从浏览器特征、操作节奏、访问轨迹等多维度判定是否为机器人,即使优化代码也存在被拦截的可能。
具体优化方案:
1. 确保chromedriver与Chrome版本完全一致
打开Chrome设置 → 关于Chrome,查看完整版本号(比如109.0.5414.120),下载对应版本的chromedriver,确保路径配置正确。
2. 优化浏览器配置,隐藏自动化特征
修改Options配置,添加以下参数:
opts = Options() # 禁用自动化检测标志 opts.add_argument("--disable-blink-features=AutomationControlled") opts.add_experimental_option("excludeSwitches", ["enable-automation"]) opts.add_experimental_option('useAutomationExtension', False) # 设置真实Chrome的User-Agent(替换成你浏览器的UA) opts.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.120 Safari/537.36") # 窗口最大化,模拟真实用户场景 opts.add_argument("--start-maximized") # 注释掉不安全的证书接受配置 # opts.accept_insecure_certs = True
3. 用selenium-stealth完善环境模拟
安装selenium-stealth后,添加以下代码模拟真实浏览器环境:
from selenium_stealth import stealth browser = Chrome(service=s, options=opts) # 模拟真实浏览器的环境特征 stealth(browser, languages=["en-US", "en"], vendor="Google Inc.", platform="Win32", webgl_vendor="Intel Inc.", renderer="Intel Iris OpenGL Engine", fix_hairline=True, )
4. 模拟真实输入行为
避免一次性输入账号密码,加入随机延迟模拟手动输入节奏:
import random def slow_type(element, text): for char in text: element.send_keys(char) time.sleep(random.uniform(0.1, 0.3)) # 随机延迟0.1-0.3秒,模拟真实输入速度 # 替换原有的send_keys代码 userID = browser.find_element(By.ID, 'userid-content') slow_type(userID, 'myUserName') password = browser.find_element(By.ID, 'password-content') slow_type(password, 'myPassword')
5. 优化登录操作
用click()代替submit(),并添加随机延迟符合真实用户操作节奏:
time.sleep(random.uniform(0.5, 1.5)) # 随机延迟后点击登录 clickSubmit = browser.find_element(By.ID, 'log-in-button') clickSubmit.click()
额外说明
即使完成以上优化,仍可能被Discover的反爬机制拦截,因为金融网站会检测IP、登录频率、操作轨迹等更多维度。作为学习项目可以尝试,但如果是长期需求,建议优先查看Discover是否提供官方API接口,避免自动化登录带来的账户安全风险。
内容的提问来源于stack exchange,提问作者Sage Herrin
相关产品推荐
相关产品推荐

