网站正在检测本地代理(Fiddler 捕获获取 HTTP 429)
Posted
技术标签:
【中文标题】网站正在检测本地代理(Fiddler 捕获获取 HTTP 429)【英文标题】:Website is detecting local proxy (Fiddler capture gets HTTP 429) 【发布时间】:2022-01-11 22:57:51 【问题描述】:我经常发现自己在调试网站或分析幕后发生的事情。 Fiddler 在这方面为我提供了非常好的帮助,而且我经常让它运行。
我刚刚注意到一个非常奇怪的问题,当我在 Fiddler 运行时访问 https://degoo.com/me/login 时,我收到了 429 响应。如果我将其切换为不捕获流量,该站点就可以正常工作。我重新打开它的那一刻,又是 429。我曾尝试自己制作请求以查看是否可以重现 200,但无济于事。
我对此非常感兴趣,因为该站点似乎检测到 Fiddler 正在运行,但我无法完全理解它。我想网站可能正在使用 JS 和 WebSocket 工作人员进行检查以检测这些东西,但初始请求如何通过 Fiddler 拦截流量立即失败并显示 429?
编辑:阅读https://***.com/a/62194160/3511297 表明 Fiddler 提供的 TLS 握手证书可能是这里的关键。
编辑 #2:阅读它,似乎 Fiddler 无法生成 TLS 1.3 证书,所以这可能是问题,但是根据 ssllabs.com/ssltest ,该站点支持 TLS 1.0、TLS 1.1 和 TLS 1.3
【问题讨论】:
【参考方案1】:没有 TLS 1.3 证书。 SSL/TLS 中的证书独立于使用的 TLS 版本。只有使用的密钥对算法(例如 RSA、ECC、)可以限制可以使用的 TLS 密码。但这只会影响客户端和 Fiddler 之间的连接,而不影响到服务器的连接(拒绝访问)。
关于支持的 TLS 版本 Fiddler 是一个 Windows/.Net 应用程序,因此它继承了 Windows 的 TLS 功能。根据这里的一些帖子,您可能需要manually enable TLS 1.3。另外不要忘记在 Fiddler HTTPS 选项中启用 tls1.3。
但如果真的在服务器端使用 SSL/TLS 指纹,我怀疑这是否足以将指纹更改为可接受的东西。通常,完整的密码套件列表以及应用层协议协商 (ALPN) 等可选扩展也会进入指纹,我认为如果不更改 Fiddler 的代码,您就无法在 Fiddler 中启用此类扩展。
如果您想检查 Fiddler 和您的网络浏览器的 TLS 指纹,您可以使用 Wireshark。捕获 TLS 握手流量,然后应用运行时过滤器 ssl.handshake.type == 1
(仅显示 CLIENT_HELLO)。展开条目Transport Layer Security
-> TLSv1? Record Layer...
-> Handshake Protocol: Client Hello
并向下滚动。
您会发现两行以JA3
(这是常见的 TLS 指纹识别算法的名称)开头的两行,如下所示:
[JA3 Fullstring: 771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-41,29-23-24-25-256-257,0]
[JA3: c279b0189edb9269da7bc43dea5e0c36]
使用Fullstring
可以比较不同客户端的CLIENT_HELLO消息。
【讨论】:
以上是关于网站正在检测本地代理(Fiddler 捕获获取 HTTP 429)的主要内容,如果未能解决你的问题,请参考以下文章
Maven:如何通过 Fiddler 捕获 HTTPS 流量
通过 Fiddler 捕获 Java https 并获取 javax.net.ssl.SSLHandshakeException