Selenium webdriver在starbucks.com上被封锁了吗?

时间:2016-03-20 01:35:38

标签: 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

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

有没有人知道如何检测webdriver可能有效?有没有办法绕过这种检测?我认为它是在javascipt的某个地方进行的。

1 个答案:

答案 0 :(得分:1)

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

您正在尝试在完成加载之前操作页面。您需要添加等待的代码:

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

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

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