【问题标题】:Selenium webdriver blocked on starbucks.com, any way around?Selenium webdriver 在 starbucks.com 上被阻止,有什么办法吗?
【发布时间】:2016-07-06 16:19:00
【问题描述】:

我正在尝试构建自己的密码管理器。我正在实施的当前网站是 starbucks.com。

我正在使用 C# 和 Selenium webdriver 与网站交互,特别是 chromedriver.exe。

登录页面(https://www.starbucks.com/account/signin)采用良好的凭据,但如果该页面是使用 chromedriver 启动的,则将我转储到主页而不登录。我在页面中所做的任何事情都不会影响这一点。手动新浏览器窗口工作正常,但即使与页面没有交互,chromedriver 版本也会被阻止,我输入详细信息并手动单击按钮。

查看页面的 HTML 会显示一些巨大的 javascript 函数,其中包含字符串 webdriver,我只能假设它以某种方式检查和阻止 webdriver。如果我关闭页面的 javascript,登录表单将不起作用。

我认为这种阻塞是由一项名为 Optimizely 的服务执行的。它可能不相关,但我在他们的网站上找到了这个标志,它不会影响问题。标志如下所示: https://www.starbucks.com/account/signin?optimizely_opt_out=true

我检查了两次按钮点击之间的网络流量。一个带有 webdriver,一个没有 webdriver。它们非常相似,但正常的提交引用大约是 cookie 的一半。他们似乎都没有引用网络驱动程序,所以我认为在点击之前阻塞正在被除冰。总而言之,我找不到。

有谁知道这种检测 webdriver 的工作原理吗?有没有办法绕过这个检测?我认为它正在 javascipt 中的某个地方执行。

【问题讨论】:

标签: javascript c# selenium blocked


【解决方案1】:

浏览页面的 HTML 会显示一些巨大的 javascript 函数

您正试图在页面完成加载之前对其进行操作。您需要添加代码等待:

  • “jQuery.active == 0”
  • 不显示任何加载微调器
  • document.readyState == '完成'

我在 GitHub 上有一个 cucumber-jvm、selenium webdriver、JUnit 模板项目设置来实现所有这些(您需要自定义加载微调器以适合您的应用程序)。它是公开的,你可以找到它here

环顾四周,看看是否有帮助。

【讨论】:

  • GitHub 帐户是免费的。如果您没有帐户,请创建一个帐户。
猜你喜欢
  • 2020-12-11
  • 2016-12-16
  • 2016-06-14
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2019-07-08
相关资源
最近更新 更多