首页 > 解决方案 > 网站正在检测 SELENIUM。这怎么可能?

问题描述

所以你可以去这个聊天网站,点击“以访客身份连接”,输入你的用户名,完成一个 ReCaptcha v2,点击“连接”,你就进去了。

如果我在浏览器中执行此操作,它可以正常工作。如果我在 selenium 控制的 chromedriver 浏览器中执行此操作,则会出现错误。(错误是“请输入验证码”,但这无关紧要。服务器明显检测到我,因为服务器有特殊响应,触发此错误)

重要提示:在这两种情况下(我的浏览器和 chromedriver 浏览器),我都是 100% 手动完成的!我只是使用 selenium 启动浏览器,然后从那里继续。我什至尝试向 chromedriver 浏览器添加一个选项以使用我的实际浏览器设置。它加载了我的历史记录、cookies 和所有内容。但是当我尝试进入聊天室时,我得到了错误。

我还在网上查看,发现有些人声称网站可以通过注意到一些特定的 javascript 变量“cdc_”来检测硒。我已经编辑了chromedriver的十六进制代码,按照网上的说明更改了变量,再次尝试,同样的结果。我花了几个小时试图解决这个问题......

有一件有趣的事情可以帮助找到问题:如果我打开浏览器并尝试使用我的配置文件运行带有 chromedriver 的 python 脚本,chromedriver 浏览器将启动,python 代码将返回一个错误,说明配置文件是已在使用中(但浏览器将保持打开状态)。现在,如果我尝试使用这个 chromedriver 浏览器访问聊天室,它可以工作。

编辑:我已经通过 Fiddler 查看了这两种情况的请求,并且标头是 100% 相同的!我的意思是100%!甚至 sessionid、PHPSESSID 和 cfuid 也是相同的,因为它使用相同的配置文件。

唯一改变的是发布请求数据。更具体地说,验证码响应(因为它是不同的)和另一个变量 s。这个变量 s 是使用一个叫做 challenge 的奇怪的 javascript 文件以某种方式计算出来的。我不确定它可以做什么或它是如何工作的。

编辑:解决 了我通过添加一个选项来解决这个问题:

options.add_argument("--disable-blink-features=AutomationControlled");

标签: pythonseleniumselenium-webdriverselenium-chromedriver

解决方案


推荐阅读