javascript - Selenium Webdriver 在 starbucks.com 上被屏蔽,有什么办法吗?

标签 javascript c# selenium blocked

我正在尝试构建自己的密码管理器。我当前正在实现的网站是 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

我检查了两次按钮单击之间的网络流量。一种带网络驱动程序,一种不带网络驱动程序。它们非常相似,但正常提交的 cookie 数量大约只有一半。它们似乎都没有引用网络驱动程序,因此我认为在单击之前阻塞已被除冰。简而言之,我找不到它。

有人知道网络驱动程序的检测如何工作吗?有什么办法可以绕过这个检测吗?我认为它正在 javascipt 中的某个地方执行。

最佳答案

浏览页面的 HTML 会发现一些巨大的 JavaScript 函数

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

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

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

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

关于javascript - Selenium Webdriver 在 starbucks.com 上被屏蔽,有什么办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109320/

相关文章:

javascript - 如何使用 Google 脚本向 Trello 上的自定义字段添加值?

javascript - Jquery 保持分数并通过 "levels"取得进展

javascript - 从嵌入页面中运行的脚本向容器页面中的脚本发送数据

c# - 为什么 NUnit Android Test Runner 中的断言等于 0(零)?

python - (Ubuntu) Python3 脚本运行良好,但在 Apache/wsgi 下找不到 selenium 模块

javascript - 如何发送十进制数 "545.20"并删除双引号并发送 545.20

c# - OpenId 身份验证跳过 "Please wait..."屏幕

python - 将 anticaptcha 与 selenium 集成

python - 识别表格行和表格数据 - CSS Selector Python

c# - 使用十六进制 key 的 TripleDESCryptoServiceProvider