为什么 curl 不会读取 Windows 浏览器代理
区分 libcurl 的代理输入与 Windows 浏览器代理发现及自动配置。
通过公司代理运行的 Windows 浏览器,并不能说明基于 libcurl 的应用程序发现了同一份配置。libcurl 有文档化的代理选项和环境变量;Windows 浏览器代理发现是另一个接口。
想要遵循当前用户 Windows 设置的应用程序,可以通过 Windows 代理配置 API 查询这些设置。但这仍然留下工作。自动配置 URL 指向的是 PAC 策略,而不是一个可以直接复制进 CURLOPT_PROXY 的固定代理端点。
- 手动代理设置
- 解析受支持的配置,并把合适的代理与绕过选项交给客户端。
- PAC 或自动发现
- 使用受支持的集成,针对实际目标评估该策略。
- 后台服务
- 检查 哪个账户拥有实际生效的配置;交互式用户的设置可能并不是该服务的设置。
对于小型诊断请求,显式指定 libcurl 代理选项,就能把代理发现从对比中排除。一条 有边界的 curl 命令 可以独立检查同一个 HTTP 端点。对于受管理的应用程序,应当实现预期的发现策略,而不是把浏览器请求成功当作共享配置的证据。