Cursor、Claude Code、OpenAI SDK 怎么区分系统代理和程序代理?
浏览器能访问但 Cursor、Claude Code 或 OpenAI SDK 请求失败,可能是系统代理、环境变量或程序代理配置不同。本文梳理各配置层级的作用,并提供确认实际出口的排查方法。
系统代理通常影响遵循操作系统网络设置的应用,程序代理只影响在 CLI、SDK 或应用配置中显式指定的请求。使用 Cursor 代理 IP、Claude Code 或 OpenAI SDK 时,浏览器能访问而程序失败,应分别检查环境变量、应用设置和实际出口。
先确认请求是由浏览器、应用还是 SDK 发起
浏览器、Cursor、Claude Code 和 OpenAI SDK 可能使用不同的代理配置。浏览器能访问而程序失败时,应先确认具体请求由哪个进程发出。
系统代理和程序代理分别会影响哪些请求
系统代理由操作系统或桌面网络设置提供,是否被应用采用取决于应用实现。程序代理由 CLI 参数、SDK 客户端或应用设置决定,通常只影响该程序的请求。
| 配置层级 | 典型配置来源 | 可能影响的请求 | 常见误区 |
|---|---|---|---|
| 系统代理 | 操作系统网络设置 | 遵循系统设置的应用 | 以为所有程序都会继承 |
| 环境变量 | HTTP_PROXY、HTTPS_PROXY | 读取环境变量的 CLI/SDK | 已打开终端未加载新变量 |
| 应用代理 | Cursor、Claude Code 设置 | 应用自身请求 | 与系统代理重复 |
| SDK 参数 | 客户端或传输层配置 | 当前程序请求 | 浏览器正常不代表 SDK 正常 |
Cursor、Claude Code 和 OpenAI SDK 分别在哪里配置代理
Cursor:设置项控制桌面应用请求
在 Cursor 的 Settings 中搜索 HTTP Proxy,或直接编辑设置 JSON 的 http.proxy(例如 http://user:pass@host:port);必要时同时检查 http.proxySupport。该配置主要由 Cursor 自己读取,不保证终端或 SDK 继承系统代理,修改后重载或重启 Cursor。
Claude Code:CLI 优先读取环境变量
在启动 Claude Code 的终端设置 HTTP_PROXY、HTTPS_PROXY,按需用 NO_PROXY 列出不应经过代理的域名,例如 NO_PROXY=localhost,127.0.0.1。Claude Code 作为 CLI 通常读取进程环境变量,不会自动采用 Cursor 的 http.proxy;设置后需重新打开终端或重启 CLI。
OpenAI SDK:在 httpx 客户端显式指定
OpenAI Python SDK 基于 httpx,可通过环境变量让 httpx 读取代理,也可显式传入客户端参数:httpx.Client(proxy="http://user:pass@host:port"),再以 OpenAI(http_client=client) 使用。旧版 httpx 使用过 proxies 参数,需按已安装版本核对;SDK 显式客户端参数不会自动继承 Cursor 的应用设置。
代理配置重复时怎样确认实际出口
出口核对方法:浏览器、CLI 与 SDK
分别记录系统代理、HTTP_PROXY/HTTPS_PROXY 和程序参数,使用同一出口核验页面或接口;记录最终出口 IP、TLS/连接错误和请求耗时。OpenAI SDK 的代理参数可对照 httpx 官方文档 与 OpenAI Python SDK 文档。
1. 记录系统代理、环境变量和应用配置。
2. 关闭其中一层,只保留一个代理来源做基线测试。
3. 确认接入参数为主机、端口、账号和密码。
4. 用 CLI、SDK 和浏览器分别检查实际出口 IP 和错误信息。
排障时建议先关闭系统代理,只保留程序代理测试;再反向测试系统代理。若两种配置同时存在,应比较请求是否出现认证失败、延迟增加或出口异常。
常见坑:NO_PROXY、大小写与进程继承
NO_PROXY 会让匹配的域名绕过代理,排查时要确认例外规则没有覆盖目标接口。不同工具和操作系统对 HTTP_PROXY、HTTPS_PROXY 与小写 http_proxy、https_proxy 的优先级并不完全一致,建议只保留一套大小写并在当前进程打印确认。GUI 应用通常只在启动时读取环境变量,修改后必须完全退出并重启;已打开的终端同样不会自动获得后来新增的变量。
FAQ
为什么浏览器能访问,Cursor 或 Claude Code 却失败?
浏览器可能读取系统代理,而 CLI 或应用使用独立配置。
系统代理和程序代理能同时设置吗?
可以,但容易造成重复代理、认证失败或延迟增加,排障时先只启用一层。
为什么改了环境变量,当前终端仍然没有变化?
已经打开的终端进程可能没有继承新变量,修改后应重新打开终端或应用。
OpenAI SDK 配置后如何确认生效?
比较直连与代理的出口 IP、响应状态和错误体,并确认当前进程读取了配置。
带走要点:Cursor 看 http.proxy,Claude Code 看终端环境变量,OpenAI SDK 看 httpx 客户端或环境变量。排障时先只启用一层代理,检查 NO_PROXY、变量大小写和 GUI 重启,再以实际出口 IP 和响应结果确认是否生效。
