You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过NTLM认证代理发送请求时User-Agent未被识别问题排查

问题场景与疑问

我需要通过要求NTLM认证和特定User-Agent的代理发送HTTP请求,使用的Python代码如下:

headers = {"User-Agent": "SpecificAgent"}
response = requests.get(
            "url.com",
            headers=headers,
            proxies=proxies,
            auth=HttpNtlmAuth(user, password),
)

代理会同时检查认证信息和User-Agent:

  • 禁用User-Agent检查时,认证正常通过,返回<Response [200]>;
  • 开启User-Agent检查后,请求失败,返回错误码10054,代理日志显示未收到User-Agent。

开启HTTP连接调试后,得到以下通信内容:

send: b'CONNECT url.com:443 HTTP/1.1\r\nHost: url.com:443\r\n\r\n'
header:

send: b'GET / HTTP/1.1\r\nHost: url.com\r\nUser-Agent: SpecificAgent\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nAccept: */*\r\nConnection: Keep-Alive\r\n\r\n'

可见请求先执行CONNECT步骤再执行GET步骤,CONNECT阶段未发送请求头,GET阶段包含User-Agent。现在有两个疑问:

  1. 上述调试信息是否正常?
  2. 代理未识别User-Agent是否因CONNECT阶段无请求头?
解答
  1. 调试信息是正常的
    通过HTTPS代理访问目标站点时,确实会先发送CONNECT请求建立到目标服务器的隧道连接,这个阶段的CONNECT请求默认只携带Host头,不会附带自定义的User-Agent等请求头,这是HTTP代理处理HTTPS请求的标准流程。后续的GET请求才会携带你设置的所有自定义头,这部分完全符合HTTP规范。

  2. 代理未识别User-Agent的核心原因就是CONNECT阶段无请求头
    你的代理配置是在代理层面同时检查认证和User-Agent,说明代理的检查逻辑是针对CONNECT请求(也就是与代理建立连接的初始请求)进行的,而非后续发往目标站点的请求。当代理开启User-Agent检查时,它会要求CONNECT请求中必须携带指定的User-Agent,但当前代码生成的CONNECT请求没有这个头,所以代理判定请求不合法,直接断开连接(错误码10054一般对应连接被对方重置)。

解决思路

要让CONNECT请求也携带自定义User-Agent,需要修改requests的默认行为,把自定义头注入到CONNECT请求中。以下是基于Session重写的实现示例:

from requests import Session
from requests_ntlm import HttpNtlmAuth

class CustomProxySession(Session):
    def rebuild_proxies(self, prepared_request, proxies):
        proxies = super().rebuild_proxies(prepared_request, proxies)
        # 给CONNECT请求添加User-Agent头
        if prepared_request.method == "CONNECT":
            prepared_request.headers["User-Agent"] = "SpecificAgent"
        return proxies

session = CustomProxySession()
session.auth = HttpNtlmAuth(user, password)
session.headers.update({"User-Agent": "SpecificAgent"})
response = session.get("url.com", proxies=proxies)

内容的提问来源于stack exchange,提问作者deb2014

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:18:27