如何防止网站检测Fiddler

问题描述 投票:1回答:1

问题标题可能没有涵盖整个主题,因为我做了很多研究,发现了很多奇怪的东西。

首先,我要实现的是某种网站的客户端,该客户端将代表用户运行(不做任何非法的事情,只是优化用户的某些工作流程)。我已经在许多网站上做到了,而且效果很好。但是,对于当前版本,存在一个问题。

[通常,如果遇到验证码,我只是打开一个嵌入式Chrome窗口供用户传递。但是,我所说的网站没有帮助,因为验证码没有显示在浏览器中,而是在我模仿浏览器发送的请求时发送给我的。

[因此,我尝试使用Fiddler研究Chrome发送的请求和应用发送的请求之间的区别。但是,如果启用了Fiddler,即使是真正的Chrome发送的请求也面临相同的验证码。

我认为Chrome浏览器已禁用了HTTP / 2,SPDY和IPv6,因为我认为这可能有所不同。它没有帮助。我已经尝试过使用Chrome开发人员工具比较Chrome发送的请求-没什么区别,它们都使用HTTP / 1.1,它们的标头完全相同,Cookie完全相同(或者没有Cookie,也没有区别) 。但是,每当我启用Fiddler时,该网站就会以一个验证码进行响应。

这是我第一次遇到这样的事情,并且我几乎准备好将头撞在墙上,因为我看不到网站有任何可能的方式来理解该请求正在由Fiddler代理,因为它没有添加任何自定义标头或其他任何内容。

除非网站以某种方式检测到正在建立HTTPS连接的确切方法,这听起来很疯狂……不可能。

正在寻求有关如何进一步调试的建议。

更新:

我没有找到解决方案,我也不了解有问题的网站如何检测到来自Chrome的直接连接,但是设法找到了解决方法:

我正在用我的代码从网站接收的验证码来获取页面,并用该验证码页面即时替换CEF接收到的实际页面,从而使用户可以通过它。

因为它没有回答原始问题,所以我没有将其发布为答案,而是将这个问题保留为开放状态。

http https fiddler chromium-embedded
1个回答
1
投票

该网站本身通常不检测任何内容。验证码通常由反Dos保护服务提供商(例如Cloudflare)提供。

根据我的经验,这种系统将通过JavaScript的浏览器指纹识别系统(获取使用的Web浏览器名称,版本和使用的OS)与HTTPS(TLS)级别的检测功能结合在一起:

在TLS协议握手中,客户端发送CLIENT_HELLLO消息,其中包含有关受支持的TLS版本和密码套件以及某些TLS扩展中的其他附加数据的信息(例如,如果它支持HTTP / 2)。

此握手可以再次被指纹化。例如,如果您现在通过Fiddler使用Firefox,则浏览器指纹将显示Firefox,但Fiddler是.Net应用程序,因此该指纹指示已使用Windows schannel TLS库。两个指纹都不匹配,因此保护系统会将您重定向到验证码对话框。

© www.soinside.com 2019 - 2024. All rights reserved.