You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium4+Chrome Webdriver登录Twitter无法审查元素求助

解决方案

1. 绕过Selenium指纹检测

Twitter跳转到https://twitter.com/i/flow/login页面的核心原因是检测到了Selenium启动的浏览器特征,首先修改Chrome启动配置消除特征:

  • 启动时添加--disable-blink-features=AutomationControlled参数,移除浏览器的自动化控制标记
  • 排除enable-automation开关,关闭自动化扩展,避免被特征识别
  • 启动时添加--start-maximized参数,避免窗口尺寸异常触发反爬规则
  • 通过CDP命令修改navigator.webdriver属性为undefined,覆盖Selenium默认的true值
    示例配置代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
# 核心反爬配置
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--start-maximized")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# 页面加载前覆盖webdriver属性
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source": """
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
    """
})

完成上述配置后,大概率可以直接访问常规登录页,不会触发跳转。

2. 绕过元素审查限制

右键触发重定向是因为Twitter监听了右键事件做反爬,不用右键审查即可规避:

  • 直接按F12打开开发者工具,点击左上角的元素选择箭头,再点击对应的输入框即可定位元素,不会触发重定向

3. 流程登录代码示例

如果依然跳转到flow/login页面,可直接用固定属性定位元素,不需要手动审查:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)
# 输入用户名
username_input = wait.until(EC.presence_of_element_located((By.XPATH, '//input[@autocomplete="username"]')))
username_input.send_keys("你的Twitter用户名")
# 点击下一步按钮(英文界面将“下一步”替换为“Next”)
driver.find_element(By.XPATH, '//span[text()="下一步"]/ancestor::button').click()
# 输入密码
password_input = wait.until(EC.presence_of_element_located((By.XPATH, '//input[@autocomplete="current-password"]')))
password_input.send_keys("你的Twitter密码")
# 点击登录按钮(英文界面将“登录”替换为“Log in”)
driver.find_element(By.XPATH, '//span[text()="登录"]/ancestor::button').click()

4. 备用方案

如果上述配置依然被检测,可直接使用undetected-chromedriver库,该库对ChromeDriver做了特征抹除,兼容原生Selenium语法,绕过绝大多数反爬检测:
安装命令:pip install undetected-chromedriver
使用示例:

import undetected_chromedriver as uc

driver = uc.Chrome()
driver.get("https://twitter.com/login")
# 后续登录逻辑和上述代码一致

内容的提问来源于stack exchange,提问作者Maryam Nasseri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:36:07