首页 > 解决方案 > 在 chrome 响应式模拟器中重定向更改用户代理

问题描述

当我在 chrome 响应式模拟器中对返回 302 重定向的页面发出请求时,我看到一个带有不同用户代理字符串的新请求。

在这里,您可以看到带有“Android 7.1.1”的用户代理 在此处输入图像描述 在此处输入图像描述

对于 302 重定向后的下一个请求,用户代理字符串会更改。 在此处输入图像描述

标签: c#.nethttpweb

解决方案


您引用的问题与 .NET 服务器无关。它无法为浏览器返回用户代理字符串。用户代理字符串仅由浏览器设置。但是你的字符串被改变了。现在检查 Chrome (v95 x64)、Opera(在 Chromium v​​94 x64 上)、Edge (v95 x64) 和 FireFox (v94 x64)。对于重定向链接,我使用了 HTTP://google.com(是的,不是 HTTPS - 将 HTTPS 重定向为307 Inner redirect)。所有用于速度和统一的初始用户代理都设置为相同的“iPhone 5/SE”。我的结果如下。

铬合金。

HTTP 请求以 phone 形式发送Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1

HTTPS 为Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36. 用户代理已更改。问题。你强调的同一个案例。

Opera(几乎是另一个 Chrome 版本)。HTTP 请求以电话形式发送。HTTPS 就像电话一样。没有用户代理更改。一切都按预期工作。

Edge(几乎是相同的 Chrome 版本)。与 Chrome 上的情况相同。叮!

FireFox(不同的引擎)。HTTP 不适用 - 使用的 HTTP/3 最初以 HTTPS 开头。这里不是一个例子。

Chromium 错误列表中存在类似的问题。但它不像你的。 https://bugs.chromium.org/p/chromium/issues/detail?id=1234461&q=User-agent%20string&can=2

无论如何,看起来您在 v95 上发现了 Chromium 问题。

我的问候!报告问题是您的权利。

作为一个选项,可以在服务器上使用新User-Agent Client Hints标头: , , . 但这些扩展是新的。大多数大众现代浏览器都在使用它,但不是 Firefox 或 Safari。只需设置您的服务器以请求它们。如果客户端正在使用 UA 字符串,最好通过 JS 获取正确的值:、和.Sec-CH-UA*Sec-CH-UASec-CH-UA-MobileSec-CH-UA-Platformnavigator.userAgentnavigator.appVersionnavigator.platform

计划在未来摆脱已经不明确的UA字符串。


推荐阅读