问题标题可能没有涵盖整个主题,因为我做了很多研究并发现了许多奇怪的事情。
因此,首先,我想要实现的是某种代表用户工作的网站客户端(不做任何非法的事情,只是优化用户的一些工作流程)。我已经为很多网站这样做过,效果很好。然而,目前的情况存在一个问题。
通常,如果我遇到验证码,我只会打开一个嵌入式 Chrome 窗口供用户通过。但是,对于我正在谈论的网站,它没有帮助,因为验证码不会显示在浏览器中,而是在我模仿浏览器准确发送的请求时发送给我。
因此,我尝试调查 Chrome 发送的请求与使用 Fiddler 的应用程序发送的请求之间的差异。
然而,如果我启用 Fiddler,即使是真正的 Chrome 发送的请求也会面临相同的验证码。
我在 Chrome 中禁用了 HTTP/2、SPDY 和 IPv6,因为我认为这可能是区别。这没有帮助。我尝试使用 Chrome 开发工具比较 Chrome 发送的请求 - 没有区别,它们都使用 HTTP/1.1,都具有完全相同的标头,完全相同的 cookie(或没有 cookie,没有区别) 。但每当我启用 Fiddler 时,网站就会用验证码进行响应。
这是我第一次遇到这样的事情,我几乎准备好用头撞墙,因为我看不到任何可能的方式让网站了解该请求是由 Fiddler 代理的,因为它不是添加任何自定义标头或其他内容。
除非网站以某种方式检测 HTTPS 连接的设置方式,这听起来很疯狂……这应该是不可能的。
寻找有关如何进一步调试的建议。
Update:
我没有找到解决方案,也不了解相关网站如何检测来自 Chrome 的直接连接,但设法找到了解决方法:
我正在获取带有我的代码从网站接收到的验证码的页面,并用该验证码页面动态替换 CEF 收到的实际页面,从而允许用户通过它。
由于它没有回答原来的问题,我不会将其作为答案发布,并将保留这个问题。