【发布时间】:2021-07-14 07:15:07
【问题描述】:
这是我尝试过的:
from selenium import webdriver
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get("https://secure07c.chase.com/web/auth/#/logon/logon/chaseOnline?")
username = driver.find_element_by_id("userId-text-input-field")
我遇到的问题是,当我简单地执行此操作然后手动填写字段并单击登录时,会弹出一个用于防止机器人攻击的错误页面。
当我删除username = driver.find_element_by_id("userId-text-input-field") 行时,网站可以正常工作,我可以从自动化的 selenium webdriver 驱动页面手动登录。
在执行driver.page_source 和许多其他从网页请求元素的测试时也会出现同样的问题。
我尝试了很多东西(大多数选项、标志、用户代理……),但它们与这个问题无关,这就是为什么我包含了导致问题的代码的简化版本,基本上是任何元素选择.
我猜 selenium 请求元素的方式很可疑,只是在大通银行网站上找到元素就引起了怀疑。我想了解 selenium 如何查找/选择元素以及反机器人如何检测这个非常简单的动作。有办法解决吗?
【问题讨论】:
-
当我尝试通过 Selenium 访问登录页面时,我收到此警告“我们找不到该用户名和密码。您可以重置密码或重试。”那是使用纯自动化。这是您收到的错误吗?
-
@Lifeiscomplex 不,我得到了一个旨在保护免受机器人攻击的覆盖页面,您能分享一下您的尝试吗?是带有特定版本的 chromedriver 的 chrome 90 吗?你试过的代码是什么?是我共享的确切的 4 行然后手动输入凭据或其他内容吗?
-
我使用的是 chromedriver 90.x。我有超过 50 行代码。我没有 Chase 帐户来全面测试代码。
-
你能分享你的代码吗?因为我的简单代码在任何
find_element之后都会导致问题,无论我在代码中添加什么,即使find_element之后没有任何操作,我需要它来测试一些实现类似安全性的网站(提炼网络安全性) , distil 与 selenium 战斗的很辛苦, 你可以查一下, 我需要过去不被发现, 这是我的目标, 不是特定的网站, 而是了解和绕过安全性, 提前非常感谢你 -
我做了更多测试,代码在绕过机器人保护时遇到问题,我认为这不是 Distil Networks。我没有在 javascript 文件中看到对 distil 的引用。如果我发现了什么,我会在这里告诉你。
标签: python selenium selenium-webdriver webdriver bots