我正在尝试使用selenium和chromedriver从Discover网站屏蔽我自己的信用卡信息。作为响应,它返回错误:
目前无法访问您的帐户。
过时的浏览器可能会使您的计算机面临安全风险。要得到 在Discover.com上获得最佳体验,您可能需要更新您的 浏览器到最新版本并重试。
有趣的是,如果我编写一个脚本来打开一个带头的浏览器并输入一些随机帐户和密码,它就能正常工作。但如果脚本首先触摸网页然后我输入,我会收到上述错误消息。有效的脚本是:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('window.location.href = "https://portal.discover.com/customersvcs/universalLogin/ac_main";')
如果我将这些行附加到脚本并在睡眠结束后输入,则会失败:
time.sleep(5)
driver.find_element_by_id('userid-content').click()
我尝试了其他方法在页面中输入数据,例如send_keys和执行Javascript来修改页面,它们都以同样的方式失败。
网站如何检测遥控器?有没有办法绕过它?
答案 0 :(得分:1)
我已尝试使用您的概念和代码块,并已实现是 portal.discover.com能够检测自动登录。
一方面是填写用户ID 和密码字段,甚至点击提交按钮仍然可以实现。这是相关的代码块:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('window.location.href = "https://portal.discover.com/customersvcs/universalLogin/ac_main";')
time.sleep(5)
driver.find_element_by_css_selector("input#userid-content").send_keys("Harold")
driver.find_element_by_css_selector("input#password-content").send_keys("Harold")
# driver.find_element_by_css_selector("form#login-form-content input#log-in-button").click()
使用filledup 用户ID 和密码字段的快照:
但是,如果您点击提交按钮, loginForm 将通过 JavaScript 函数验证 validateForm(这个)<; strong>在 onsubmit 事件中调用。
令人惊讶的是,即使在验证用户凭据之前,网站似乎正在检测自动登录过程并发回:
Your account cannot currently be accessed.
Outdated browsers can expose your computer to security risks. To get the best experience on Discover.com, you may need to update your browser to the latest version and try again.
For questions, please contact us at 1-800-347-7769. We're always available 24 hours a day, 7 days a week.
错误快照:
$cdc_
,webdriver
等关键字的存在,但无济于事。也许 validateForm()包含所有答案。