这个网站如何用selenium和chromedriver检测远程控制?

Har*_*old 6 selenium webdriver selenium-chromedriver google-chrome-headless

我正在尝试使用 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";')
Run Code Online (Sandbox Code Playgroud)

如果我将这些行附加到脚本并在睡眠完成后键入,它会失败:

time.sleep(5)
driver.find_element_by_id('userid-content').click()
Run Code Online (Sandbox Code Playgroud)

我尝试了其他方法将数据输入到页面中,例如 send_keys 和执行 Javascript 来修改页面,但它们都以同样的方式失败。

网站如何检测遥控器?有没有办法绕过它?

Deb*_*anB 2

我尝试过您的概念和代码块,并意识到是的, 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()
    
    Run Code Online (Sandbox Code Playgroud)
  • 已填写用户 ID密码字段的快照:

折断

  • 但是,一旦您单击“提交”按钮,登录表单就会通过JavaScript函数validateForm(this) 进行验证;在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.
    
    Run Code Online (Sandbox Code Playgroud)
  • 错误快照:

检测到


参考

您可以在以下位置找到一些详细的讨论: