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

使用Python Selenium+Chrome登录eToro遭反爬拦截的解决问询

解决eToro识别Selenium拦截登录的方案

eToro通过检测Selenium的特征标识拦截登录,以下是几种可行的绕过方案:

1. 移除Selenium核心特征标识

网站通常会检测window.navigator.webdriver属性,以及Chrome启动时的自动化相关参数。可以通过以下方式处理:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 禁用自动化扩展提示
options.add_argument("--disable-extensions")
# 隐藏Chrome正在被自动化控制的提示
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

driver = webdriver.Chrome(options=options)
# 执行JS移除webdriver属性
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

driver.get("https://www.etoro.com/login")
# 后续输入账号密码操作...

2. 加载本地真实Chrome用户数据

使用本地Chrome的用户数据目录启动Selenium,让浏览器环境和你日常使用的完全一致,大幅降低被检测概率:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 替换为你本地Chrome的用户数据路径,Windows一般是C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data
# macOS一般是/Users/你的用户名/Library/Application Support/Google/Chrome
options.add_argument(r"user-data-dir=C:\Users\YourName\AppData\Local\Google\Chrome\User Data")

driver = webdriver.Chrome(options=options)
driver.get("https://www.etoro.com/login")
# 后续登录操作...

注意:启动前要关闭所有本地Chrome窗口,否则会报错。

3. 使用undetected-chromedriver库

这个库是专门为绕过反爬检测开发的,会自动处理Selenium的特征隐藏,用法和原生Selenium几乎一致:

# 先安装库:pip install undetected-chromedriver
import undetected_chromedriver as uc

driver = uc.Chrome()
driver.get("https://www.etoro.com/login")
# 输入虚构账号密码,比如:
username_input = driver.find_element("id", "username")
password_input = driver.find_element("id", "password")
username_input.send_keys("fake_user_123")
password_input.send_keys("wrong_pass_456")
# 点击登录按钮
driver.find_element("css selector", "button[type='submit']").click()

使用这个库后,基本能模拟真实浏览器环境,触发正常的"invalid username/password"错误提示。

4. 额外优化:添加真实请求头和模拟人类操作

  • 设置浏览器语言、时区等参数,让环境更真实:
options.add_argument("--lang=en-US")
options.add_argument("--timezone=America/New_York")
  • 避免快速连续操作,添加随机延迟:
import time
import random

# 输入账号后随机延迟0.5-2秒
time.sleep(random.uniform(0.5, 2))
# 输入密码后再延迟
time.sleep(random.uniform(0.5, 2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:51:37