[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-strapi-article:zh:public-vs-authenticated-data-scraping-proxy":3,"blog-article:\u002Fblog\u002Fpublic-vs-authenticated-data-scraping-proxy":617,"blog-related:\u002Fblog\u002Fpublic-vs-authenticated-data-scraping-proxy":618,"blog-translations:\u002Fblog\u002Fpublic-vs-authenticated-data-scraping-proxy":619},{"available":4,"article":5,"relatedArticles":131,"translations":538},true,{"source":6,"id":7,"documentId":8,"translationKey":8,"locale":9,"slug":10,"path":11,"_path":11,"title":12,"description":13,"excerpt":13,"image":14,"publishedAt":15,"updatedAt":16,"author":17,"tags":18,"featured":19,"sortOrder":20,"readingTime":21,"bodyType":22,"bodyBlocks":23,"bodyHtml":130},"strapi",2547,"ibsbmkagb2hwmpt9riwp1mqv","zh","public-vs-authenticated-data-scraping-proxy","\u002Fblog\u002Fpublic-vs-authenticated-data-scraping-proxy","公开数据采集和登录态采集代理策略有什么不同？","公开数据采集更关注请求规模、频率和地区覆盖，登录态采集更重视账号、Cookie、设备与出口一致性。本文比较两类任务的代理 IP 选择、会话管理和失败排查方法。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_cover_023a829c28.webp","2026-09-08T02:03:41.730Z","2026-09-08T02:03:41.713Z","Global Proxies Team",[],false,0,1,"blocks",[24,30,36,40,45,49,53,57,61,65,69,74,78,82,86,90,94,98,102,106,110,114,118,122,126],{"type":25,"children":26},"paragraph",[27],{"text":28,"type":29},"公开数据采集更关注请求规模、频率和地区覆盖；登录态采集更关注账号、Cookie、设备与出口的一致性。前者通常评估动态住宅代理 IP 或数据中心代理 IP，后者通常优先评估静态住宅代理 IP。","text",{"type":31,"level":32,"children":33},"heading",2,[34],{"text":35,"type":29},"公开数据采集和登录态采集到底有什么不同",{"type":25,"children":37},[38],{"text":39,"type":29},"公开页面通常不依赖个人会话，重点是合法授权、访问频率、请求规模和结果稳定性。登录态采集还要维护账号、Cookie、设备环境和出口之间的一致，不同账号应分别保存会话和失败日志。",{"type":41,"children":42},"code",[43],{"text":44,"type":29},"| 任务特征 | 代理 IP 选择 | 会话要求 | 重点控制项 |\n| --- | --- | --- | --- |\n| 公开、多地区、短会话 | 动态住宅代理 IP | 可切换 | 频率、地区、请求规模 |\n| 公开、住宅属性非硬要求 | 数据中心代理 IP | 以效率为主 | 延迟、吞吐、成本 |\n| 登录态、连续会话 | 静态住宅代理 IP | 保持稳定 | 账号、Cookie、设备和出口一致 |",{"type":31,"level":32,"children":46},[47],{"text":48,"type":29},"不同采集任务应该怎么选择代理 IP",{"type":25,"children":50},[51],{"text":52,"type":29},"多地区、短会话和大量出口需求可评估动态住宅代理 IP；住宅属性非硬要求且重视速度或成本，可测试数据中心代理 IP。登录态任务需要连续会话时，优先评估静态住宅代理 IP。",{"type":31,"level":32,"children":54},[55],{"text":56,"type":29},"公开数据采集如何控制频率和失败率",{"type":25,"children":58},[59],{"text":60,"type":29},"记录目标 URL、出口 IP、请求时间、状态码、响应耗时和失败原因，控制请求频率并设置合理重试。若小范围请求正常、扩大规模后出现 429，应先检查频率和并发，而不是立即更换代理 IP。代理 IP 不能替代目标站规则和数据授权。",{"type":31,"level":32,"children":62},[63],{"text":64,"type":29},"登录态采集怎样保持账号和会话一致",{"type":25,"children":66},[67],{"text":68,"type":29},"登录态采集仅适用于你自有或已获明确授权的账号，且须遵守目标平台服务条款；不得使用他人或未经授权的登录态抓取非公开数据。",{"type":31,"level":70,"children":71},3,[72],{"text":73,"type":29},"对照方法：未登录页与登录态页",{"type":25,"children":75},[76],{"text":77,"type":29},"固定同一账号、Cookie、设备和出口，仅切换未登录与登录态请求；记录状态码、跳转次数、Cookie 是否失效、响应时间和失败原因。Cookie 行为可对照 [RFC 6265](https:\u002F\u002Fhttpwg.org\u002Fspecs\u002Frfc6265.html) 核验。\n为账号和浏览器 profile 保持稳定的 Cookie、设备、时区、语言和出口，不要频繁切换 IP。出现鉴权失败时先查账号与 Cookie，网络失败再查代理参数和出口；如果登录后才异常，还要检查账号状态和平台规则。",{"type":31,"level":32,"children":79},[80],{"text":81,"type":29},"出现 403、429 或验证码时如何排查",{"type":25,"children":83},[84],{"text":85,"type":29},"先区分鉴权失败、访问频率过高、账号状态异常和网络出口问题，再检查代理配置。固定账号、请求参数和时间窗口，每次只修改一个变量，并保留错误文本和请求日志。",{"type":31,"level":32,"children":87},[88],{"text":89,"type":29},"FAQ",{"type":31,"level":70,"children":91},[92],{"text":93,"type":29},"两种采集任务能共用账号和登录会话吗？",{"type":25,"children":95},[96],{"text":97,"type":29},"不建议，应分别管理账号、Cookie、设备环境和失败日志。",{"type":31,"level":70,"children":99},[100],{"text":101,"type":29},"公开数据采集和登录态采集能共用同一代理 IP 吗？",{"type":25,"children":103},[104],{"text":105,"type":29},"不建议直接共用，应根据会话、账号和出口稳定要求分别评估。",{"type":31,"level":70,"children":107},[108],{"text":109,"type":29},"登录态采集可以使用动态住宅代理 IP 吗？",{"type":25,"children":111},[112],{"text":113,"type":29},"短时任务可以测试，长期连续会话通常优先评估静态住宅代理 IP。",{"type":31,"level":70,"children":115},[116],{"text":117,"type":29},"出现 403、429 或验证码先查什么？",{"type":25,"children":119},[120],{"text":121,"type":29},"先区分鉴权、频率、账号状态和网络出口问题，再检查代理配置。",{"type":25,"children":123},[124],{"text":125,"type":29},"---",{"type":25,"children":127},[128],{"text":129,"type":29},"行动步骤：先确认数据和账号授权，再判定公开或登录态任务；固定账号、设备与会话做小范围测试；遇到 429 按频率和并发排查，遇到鉴权失败先核对账号与 Cookie，最后才调整代理 IP。","",[132,250,408],{"source":6,"id":133,"documentId":134,"translationKey":134,"locale":9,"slug":135,"path":136,"_path":136,"title":137,"description":138,"excerpt":138,"image":139,"publishedAt":140,"updatedAt":141,"author":17,"tags":142,"featured":19,"sortOrder":20,"readingTime":32,"bodyType":22,"bodyBlocks":143,"bodyHtml":130},2554,"gnqor0trqqgag36cbbo54ebg","openai-api-403-429-proxy-ip","\u002Fblog\u002Fopenai-api-403-429-proxy-ip","OpenAI API 403\u002F429 和代理 IP 的关系","OpenAI API 返回 403 或 429 时，应先区分密钥权限、地区、速率、并发和额度问题。本文说明哪些错误证据可能指向代理 IP，并给出直连与代理的对照排障方法。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_openai_api_403_429_ip_cover_859fb85858.webp","2026-09-08T02:06:14.087Z","2026-09-08T02:06:14.074Z",[],[144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,211,215,219,223,227,231,235,239,243,246],{"type":25,"children":145},[146],{"text":147,"type":29},"OpenAI API 报 403 时，先查密钥、项目权限、地区和请求策略；报 429 时，先区分速率限制、并发过高和额度不足。代理 IP 只在错误证据指向网络出口或地区时才值得调整，不能把所有 403\u002F429 都归因于代理。",{"type":31,"level":32,"children":149},[150],{"text":151,"type":29},"遇到 403 和 429 时分别先查什么",{"type":25,"children":153},[154],{"text":155,"type":29},"保留完整错误体、请求 ID、响应头和发生时间。403 重点查认证、项目权限、地区和请求策略；429 重点查速率限制、并发、额度和重试策略。",{"type":41,"children":157},[158],{"text":159,"type":29},"| 错误 | 优先检查 | 代理 IP 是否可能相关 | 典型证据 | 下一步 |\n| --- | --- | --- | --- | --- |\n| 403 | 密钥、项目权限、地区、请求策略 | 仅错误证据指向地区或网络时相关 | 特定出口触发，错误体提到地区 | 核对错误体和项目配置 |\n| 429 | 速率、并发、额度、重试策略 | 通常不是首要变量 | 错误体含限流或额度信息 | 降低频率、检查项目用量 |",{"type":31,"level":32,"children":161},[162],{"text":163,"type":29},"哪些现象能证明 403 与代理 IP 有关",{"type":31,"level":70,"children":165},[166],{"text":167,"type":29},"先固定请求条件",{"type":25,"children":169},[170],{"text":171,"type":29},"在密钥和项目权限确认无误后，固定密钥、项目、请求参数、并发数和时间窗口，只更换代理出口进行对照。",{"type":31,"level":70,"children":173},[174],{"text":175,"type":29},"再看错误体和响应头",{"type":25,"children":177},[178],{"text":179,"type":29},"确认错误体或响应头是否明确指向地区、网络或访问策略。认证失败不会因更换出口自动解决。",{"type":31,"level":70,"children":181},[182],{"text":183,"type":29},"重复测试确认结果是否稳定",{"type":25,"children":185},[186],{"text":187,"type":29},"只有相同请求条件下，特定出口反复触发 403，且更换出口后结果稳定变化，才应把代理 IP 作为高优先级变量继续测试。",{"type":31,"level":32,"children":189},[190],{"text":191,"type":29},"429 怎么区分速率限制、并发过高和额度不足",{"type":25,"children":193},[194],{"text":195,"type":29},"查看错误体和响应头中的限制信息，记录请求频率、并发数、项目额度和重试时间。降低请求频率或补充额度后仍出现同样错误，才继续检查网络出口。",{"type":31,"level":32,"children":197},[198],{"text":199,"type":29},"OpenAI API 的代理 IP 应该怎样配置和排查",{"type":31,"level":70,"children":201},[202],{"text":203,"type":29},"直连与代理的 403\u002F429 对照排查步骤",{"type":25,"children":205},[206],{"text":207,"type":29},"固定 API Key、模型、请求体和并发，仅切换直连与代理；记录状态码、错误字段、响应头限速信息、并发、额度和重试结果。错误分类以 [OpenAI API 错误处理](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Ferror-codes) 和 [速率限制](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Frate-limits) 为准，结论只适用于本次日志条件。\n1. 确认代理接入参数为主机、端口、账号和密码。\n2. 记录直连与代理的出口 IP、响应状态和错误体。\n3. 固定密钥、项目、请求参数和并发条件做对照。\n4. 每次只修改一个变量，不要连续更换代理 IP。",{"type":31,"level":32,"children":209},[210],{"text":89,"type":29},{"type":31,"level":70,"children":212},[213],{"text":214,"type":29},"换代理 IP 能解决 OpenAI API 的 403 吗？",{"type":25,"children":216},[217],{"text":218,"type":29},"不一定。先查密钥、项目权限、地区和请求策略；只有错误证据明确指向出口或地区时，才测试代理 IP。",{"type":31,"level":70,"children":220},[221],{"text":222,"type":29},"OpenAI API 的 429 一定是代理 IP 导致的吗？",{"type":25,"children":224},[225],{"text":226,"type":29},"不是。429 常见原因包括速率限制、并发过高和额度不足，应先查看错误体并核对项目用量。",{"type":31,"level":70,"children":228},[229],{"text":230,"type":29},"如何判断 API 请求是否真的走了代理？",{"type":25,"children":232},[233],{"text":234,"type":29},"在相同请求条件下比较出口 IP、响应状态、错误体和请求耗时，并确认当前程序读取了代理配置。",{"type":31,"level":70,"children":236},[237],{"text":238,"type":29},"为什么换代理后 403 仍然存在？",{"type":25,"children":240},[241],{"text":242,"type":29},"如果 403 来自密钥、项目权限、请求参数或账号资格，换代理不会改变这些条件。应先按错误体核对认证和项目配置。",{"type":25,"children":244},[245],{"text":125,"type":29},{"type":25,"children":247},[248],{"text":249,"type":29},"403 应优先检查密钥、项目权限、地区和请求策略，429 应优先检查速率、并发和额度；只有错误信息指向地区或网络出口时，才进一步测试代理 IP。先保留错误体、请求 ID、响应头和项目用量，再做直连与代理对照。",{"source":6,"id":251,"documentId":252,"translationKey":252,"locale":9,"slug":253,"path":254,"_path":254,"title":255,"description":256,"excerpt":256,"image":257,"publishedAt":258,"updatedAt":259,"author":17,"tags":260,"featured":19,"sortOrder":20,"readingTime":70,"bodyType":22,"bodyBlocks":261,"bodyHtml":130},2553,"ud49a06o1bzvxeww4n87vqd7","github-clone-slow-proxy-settings","\u002Fblog\u002Fgithub-clone-slow-proxy-settings","GitHub clone 慢和代理设置有什么关系？","GitHub clone 变慢不一定是代理 IP 导致，也可能与 DNS、HTTPS、SSH、LFS 或仓库体积有关。本文按协议和下载阶段拆解排查步骤，帮助判断代理是否真正改善速度。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_github_clone_cover_1eb79d48c0.webp","2026-09-08T02:05:55.939Z","2026-09-08T02:05:55.924Z",[],[262,266,270,274,278,282,286,290,294,298,302,306,310,314,318,322,326,330,334,338,342,346,350,354,358,362,366,369,373,377,381,385,389,393,397,401,404],{"type":25,"children":263},[264],{"text":265,"type":29},"GitHub clone 变慢不一定是代理 IP 的问题，也可能来自 DNS、仓库体积、LFS、HTTPS\u002FSSH 配置或本地网络。先用同一仓库比较直连与代理的延迟、吞吐和失败情况，再决定是否调整代理设置。",{"type":31,"level":32,"children":267},[268],{"text":269,"type":29},"GitHub clone 变慢通常卡在哪个环节",{"type":31,"level":70,"children":271},[272],{"text":273,"type":29},"域名解析阶段",{"type":25,"children":275},[276],{"text":277,"type":29},"先看 DNS 解析耗时和解析结果。所有仓库都变慢时，应优先排查本地 DNS、网络链路和代理解析方式。",{"type":31,"level":70,"children":279},[280],{"text":281,"type":29},"建立 HTTPS 或 SSH 连接阶段",{"type":25,"children":283},[284],{"text":285,"type":29},"如果只在 HTTPS 或 SSH 下变慢，应检查对应协议的代理配置、连接耗时和 SSH 握手情况。",{"type":31,"level":70,"children":287},[288],{"text":289,"type":29},"Git 对象下载阶段",{"type":25,"children":291},[292],{"text":293,"type":29},"小仓库正常而大仓库变慢时，重点检查对象数量、压缩处理、带宽和下载吞吐，不要直接归因于代理 IP。",{"type":31,"level":70,"children":295},[296],{"text":297,"type":29},"LFS 文件下载阶段",{"type":25,"children":299},[300],{"text":301,"type":29},"如果普通对象正常但 LFS 很慢，应单独检查 LFS 下载地址、配置、耗时和失败率。",{"type":31,"level":32,"children":303},[304],{"text":305,"type":29},"为什么 DNS、HTTPS、SSH 和 LFS 要分开测试",{"type":25,"children":307},[308],{"text":309,"type":29},"对上述四个阶段分别记录解析耗时、连接或握手耗时、下载吞吐、失败率和错误信息，确保测试指标与具体阶段对应。",{"type":41,"children":311},[312],{"text":313,"type":29},"| 层级 | 应检查内容 | 对比指标 |\n| --- | --- | --- |\n| DNS | 域名解析链路 | 解析耗时、解析结果 |\n| HTTPS | Git 代理和连接配置 | 连接耗时、下载吞吐 |\n| SSH | SSH 配置文件和代理命令 | 握手时间、失败信息 |\n| LFS | LFS 独立下载地址和配置 | LFS 文件耗时、失败率 |",{"type":31,"level":32,"children":315},[316],{"text":317,"type":29},"Git、SSH 和系统代理冲突时先检查什么",{"type":25,"children":319},[320],{"text":321,"type":29},"检查 Git 的全局和项目级配置，以及 SSH 的独立配置文件。系统代理生效不代表 Git、SSH 或 LFS 一定继承，Git 单独设置代理也可能绕过系统代理。",{"type":31,"level":70,"children":323},[324],{"text":325,"type":29},"HTTPS：直接设置 Git 的代理 IP",{"type":25,"children":327},[328],{"text":329,"type":29},"```bash\ngit config --global http.proxy http:\u002F\u002Fuser:pass@host:port\ngit config --global https.proxy http:\u002F\u002Fuser:pass@host:port\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo.git\n```\n只想对当前仓库生效时去掉 `--global`；测试直连可用 `git config --global --unset http.proxy` 和 `git config --global --unset https.proxy`。",{"type":31,"level":70,"children":331},[332],{"text":333,"type":29},"SSH：在 `~\u002F.ssh\u002Fconfig` 使用 ProxyCommand",{"type":25,"children":335},[336],{"text":337,"type":29},"```sshconfig\nHost github.com\nHostName github.com\nUser git\nProxyCommand ncat --proxy host:port --proxy-type http %h %p\n```\n上例需要安装 Ncat；SSH 不会读取 Git 的 `http.proxy`，因此必须单独配置或明确走系统代理。",{"type":31,"level":32,"children":339},[340],{"text":341,"type":29},"代理什么时候能加快 clone，什么时候反而变慢",{"type":25,"children":343},[344],{"text":345,"type":29},"遇到 GitHub clone 慢时，当本地到目标站的网络质量较差、代理出口链路更稳定时，代理可能改善下载；如果代理距离更远、带宽不足或多了一层转发，速度反而可能下降，因此要用同一仓库和协议做对照。大仓库可先用 `git clone --depth 1 https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo.git` 做浅克隆；`git config --global http.postBuffer 524288000` 只用于应对部分大请求失败，不能替代带宽或链路优化。",{"type":31,"level":32,"children":347},[348],{"text":349,"type":29},"GitHub clone 很慢时应该按什么顺序排查",{"type":31,"level":70,"children":351},[352],{"text":353,"type":29},"出口与耗时记录示例：HTTPS、SSH 与代理开关",{"type":25,"children":355},[356],{"text":357,"type":29},"对同一仓库分别测试 HTTPS、SSH、LFS 及代理开关；记录 DNS 时间、TLS 建连、首字节、总耗时、吞吐和重试次数，并保留命令输出。下面是记录格式示例（数值为演示，不代表本文实测结论）：",{"type":41,"children":359},[360],{"text":361,"type":29},"| 方式 | DNS\u002FTLS | 总耗时 | 吞吐 | 结果 |\n| --- | ---: | ---: | ---: | --- |\n| 直连 HTTPS | 180\u002F420 ms | 96 s | 2.1 MB\u002Fs | 完成 |\n| 代理 IP HTTPS | 42\u002F160 ms | 58 s | 3.6 MB\u002Fs | 完成 |\n| 代理 IP SSH | —\u002F510 ms | 71 s | 2.9 MB\u002Fs | 完成 |",{"type":25,"children":363},[364],{"text":365,"type":29},"可用 `curl -w 'dns=%{time_namelookup} tls=%{time_appconnect} total=%{time_total}\\n' -o NUL -s https:\u002F\u002Fgithub.com` 记录 HTTPS 的 DNS、TLS 和总耗时。仓库地址与认证方式可对照 [GitHub 克隆仓库文档](https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fcreating-and-managing-repositories\u002Fcloning-a-repository)。\n1. 用小仓库和目标仓库分别做直连基线。\n2. 分别测试 DNS、HTTPS、SSH 和 LFS。\n3. 检查 Git、SSH、LFS 与系统代理的配置来源。\n4. 对比代理前后的延迟、吞吐、失败率和总下载时间。",{"type":31,"level":32,"children":367},[368],{"text":89,"type":29},{"type":31,"level":70,"children":370},[371],{"text":372,"type":29},"为什么浏览器访问 GitHub 正常，但 git clone 仍然很慢？",{"type":25,"children":374},[375],{"text":376,"type":29},"浏览器和 Git 可能使用不同的代理配置，clone 还涉及 HTTPS、SSH 或 LFS，应分别检查配置。",{"type":31,"level":70,"children":378},[379],{"text":380,"type":29},"如何判断代理是否让 clone 变快？",{"type":25,"children":382},[383],{"text":384,"type":29},"固定同一仓库、协议和时间窗口，比较解析耗时、连接耗时、吞吐、失败率和总下载时间。",{"type":31,"level":70,"children":386},[387],{"text":388,"type":29},"Git、SSH 和系统代理应该怎么排查？",{"type":25,"children":390},[391],{"text":392,"type":29},"先确认配置来源，再只启用一层代理做基线，确认实际出口和下载结果后再处理冲突。",{"type":31,"level":70,"children":394},[395],{"text":396,"type":29},"为什么小仓库正常，大仓库或 LFS 下载很慢？",{"type":25,"children":398},[399],{"text":400,"type":29},"大仓库可能受对象数量、压缩处理或 LFS 下载影响。应分别比较普通对象和 LFS 文件的耗时，不要只根据一次完整 clone 的总时间判断代理效果。",{"type":25,"children":402},[403],{"text":125,"type":29},{"type":25,"children":405},[406],{"text":407,"type":29},"带走要点：先固定仓库和协议做直连基线，再分别配置 Git HTTPS 代理、SSH `ProxyCommand` 或环境变量；大仓库优先比较浅克隆与吞吐，并核对 DNS\u002FTLS 计时。只有代理 IP 的出口和耗时持续改善，才值得保留该配置。",{"source":6,"id":409,"documentId":410,"translationKey":410,"locale":9,"slug":411,"path":412,"_path":412,"title":413,"description":414,"excerpt":414,"image":415,"publishedAt":416,"updatedAt":417,"author":17,"tags":418,"featured":19,"sortOrder":20,"readingTime":32,"bodyType":22,"bodyBlocks":419,"bodyHtml":130},2552,"i88cwumwz25fihllz6npimuu","system-vs-program-proxy-cursor-claude-openai","\u002Fblog\u002Fsystem-vs-program-proxy-cursor-claude-openai","Cursor、Claude Code、OpenAI SDK 怎么区分系统代理和程序代理？","浏览器能访问但 Cursor、Claude Code 或 OpenAI SDK 请求失败，可能是系统代理、环境变量或程序代理配置不同。本文梳理各配置层级的作用，并提供确认实际出口的排查方法。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_cursor_claude_code_openai_sdk_cover_b995e3742e.webp","2026-09-08T02:05:38.450Z","2026-09-08T02:05:38.432Z",[],[420,424,428,432,436,440,444,448,452,456,460,464,468,472,476,480,484,488,492,496,499,503,507,511,515,519,523,527,531,534],{"type":25,"children":421},[422],{"text":423,"type":29},"系统代理通常影响遵循操作系统网络设置的应用，程序代理只影响在 CLI、SDK 或应用配置中显式指定的请求。使用 Cursor 代理 IP、Claude Code 或 OpenAI SDK 时，浏览器能访问而程序失败，应分别检查环境变量、应用设置和实际出口。",{"type":31,"level":32,"children":425},[426],{"text":427,"type":29},"先确认请求是由浏览器、应用还是 SDK 发起",{"type":25,"children":429},[430],{"text":431,"type":29},"浏览器、Cursor、Claude Code 和 OpenAI SDK 可能使用不同的代理配置。浏览器能访问而程序失败时，应先确认具体请求由哪个进程发出。",{"type":31,"level":32,"children":433},[434],{"text":435,"type":29},"系统代理和程序代理分别会影响哪些请求",{"type":25,"children":437},[438],{"text":439,"type":29},"系统代理由操作系统或桌面网络设置提供，是否被应用采用取决于应用实现。程序代理由 CLI 参数、SDK 客户端或应用设置决定，通常只影响该程序的请求。",{"type":41,"children":441},[442],{"text":443,"type":29},"| 配置层级 | 典型配置来源 | 可能影响的请求 | 常见误区 |\n| --- | --- | --- | --- |\n| 系统代理 | 操作系统网络设置 | 遵循系统设置的应用 | 以为所有程序都会继承 |\n| 环境变量 | `HTTP_PROXY`、`HTTPS_PROXY` | 读取环境变量的 CLI\u002FSDK | 已打开终端未加载新变量 |\n| 应用代理 | Cursor、Claude Code 设置 | 应用自身请求 | 与系统代理重复 |\n| SDK 参数 | 客户端或传输层配置 | 当前程序请求 | 浏览器正常不代表 SDK 正常 |",{"type":31,"level":32,"children":445},[446],{"text":447,"type":29},"Cursor、Claude Code 和 OpenAI SDK 分别在哪里配置代理",{"type":31,"level":70,"children":449},[450],{"text":451,"type":29},"Cursor：设置项控制桌面应用请求",{"type":25,"children":453},[454],{"text":455,"type":29},"在 Cursor 的 Settings 中搜索 `HTTP Proxy`，或直接编辑设置 JSON 的 `http.proxy`（例如 `http:\u002F\u002Fuser:pass@host:port`）；必要时同时检查 `http.proxySupport`。该配置主要由 Cursor 自己读取，不保证终端或 SDK 继承系统代理，修改后重载或重启 Cursor。",{"type":31,"level":70,"children":457},[458],{"text":459,"type":29},"Claude Code：CLI 优先读取环境变量",{"type":25,"children":461},[462],{"text":463,"type":29},"在启动 Claude Code 的终端设置 `HTTP_PROXY`、`HTTPS_PROXY`，按需用 `NO_PROXY` 列出不应经过代理的域名，例如 `NO_PROXY=localhost,127.0.0.1`。Claude Code 作为 CLI 通常读取进程环境变量，不会自动采用 Cursor 的 `http.proxy`；设置后需重新打开终端或重启 CLI。",{"type":31,"level":70,"children":465},[466],{"text":467,"type":29},"OpenAI SDK：在 httpx 客户端显式指定",{"type":25,"children":469},[470],{"text":471,"type":29},"OpenAI Python SDK 基于 httpx，可通过环境变量让 httpx 读取代理，也可显式传入客户端参数：`httpx.Client(proxy=\"http:\u002F\u002Fuser:pass@host:port\")`，再以 `OpenAI(http_client=client)` 使用。旧版 httpx 使用过 `proxies` 参数，需按已安装版本核对；SDK 显式客户端参数不会自动继承 Cursor 的应用设置。",{"type":31,"level":32,"children":473},[474],{"text":475,"type":29},"代理配置重复时怎样确认实际出口",{"type":31,"level":70,"children":477},[478],{"text":479,"type":29},"出口核对方法：浏览器、CLI 与 SDK",{"type":25,"children":481},[482],{"text":483,"type":29},"分别记录系统代理、`HTTP_PROXY\u002FHTTPS_PROXY` 和程序参数，使用同一出口核验页面或接口；记录最终出口 IP、TLS\u002F连接错误和请求耗时。OpenAI SDK 的代理参数可对照 [httpx 官方文档](https:\u002F\u002Fwww.python-httpx.org\u002Fadvanced\u002Fproxies\u002F) 与 [OpenAI Python SDK 文档](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python)。\n1. 记录系统代理、环境变量和应用配置。\n2. 关闭其中一层，只保留一个代理来源做基线测试。\n3. 确认接入参数为主机、端口、账号和密码。\n4. 用 CLI、SDK 和浏览器分别检查实际出口 IP 和错误信息。",{"type":25,"children":485},[486],{"text":487,"type":29},"排障时建议先关闭系统代理，只保留程序代理测试；再反向测试系统代理。若两种配置同时存在，应比较请求是否出现认证失败、延迟增加或出口异常。",{"type":31,"level":32,"children":489},[490],{"text":491,"type":29},"常见坑：NO_PROXY、大小写与进程继承",{"type":25,"children":493},[494],{"text":495,"type":29},"`NO_PROXY` 会让匹配的域名绕过代理，排查时要确认例外规则没有覆盖目标接口。不同工具和操作系统对 `HTTP_PROXY`、`HTTPS_PROXY` 与小写 `http_proxy`、`https_proxy` 的优先级并不完全一致，建议只保留一套大小写并在当前进程打印确认。GUI 应用通常只在启动时读取环境变量，修改后必须完全退出并重启；已打开的终端同样不会自动获得后来新增的变量。",{"type":31,"level":32,"children":497},[498],{"text":89,"type":29},{"type":31,"level":70,"children":500},[501],{"text":502,"type":29},"为什么浏览器能访问，Cursor 或 Claude Code 却失败？",{"type":25,"children":504},[505],{"text":506,"type":29},"浏览器可能读取系统代理，而 CLI 或应用使用独立配置。",{"type":31,"level":70,"children":508},[509],{"text":510,"type":29},"系统代理和程序代理能同时设置吗？",{"type":25,"children":512},[513],{"text":514,"type":29},"可以，但容易造成重复代理、认证失败或延迟增加，排障时先只启用一层。",{"type":31,"level":70,"children":516},[517],{"text":518,"type":29},"为什么改了环境变量，当前终端仍然没有变化？",{"type":25,"children":520},[521],{"text":522,"type":29},"已经打开的终端进程可能没有继承新变量，修改后应重新打开终端或应用。",{"type":31,"level":70,"children":524},[525],{"text":526,"type":29},"OpenAI SDK 配置后如何确认生效？",{"type":25,"children":528},[529],{"text":530,"type":29},"比较直连与代理的出口 IP、响应状态和错误体，并确认当前进程读取了配置。",{"type":25,"children":532},[533],{"text":125,"type":29},{"type":25,"children":535},[536],{"text":537,"type":29},"带走要点：Cursor 看 `http.proxy`，Claude Code 看终端环境变量，OpenAI SDK 看 httpx 客户端或环境变量。排障时先只启用一层代理，检查 `NO_PROXY`、变量大小写和 GUI 重启，再以实际出口 IP 和响应结果确认是否生效。",[539],{"source":6,"id":7,"documentId":8,"translationKey":8,"locale":9,"slug":10,"path":11,"_path":11,"title":12,"description":13,"excerpt":13,"image":14,"publishedAt":15,"updatedAt":16,"author":17,"tags":540,"featured":19,"sortOrder":20,"readingTime":21,"bodyType":22,"bodyBlocks":541,"bodyHtml":130},[],[542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614],{"type":25,"children":543},[544],{"text":28,"type":29},{"type":31,"level":32,"children":546},[547],{"text":35,"type":29},{"type":25,"children":549},[550],{"text":39,"type":29},{"type":41,"children":552},[553],{"text":44,"type":29},{"type":31,"level":32,"children":555},[556],{"text":48,"type":29},{"type":25,"children":558},[559],{"text":52,"type":29},{"type":31,"level":32,"children":561},[562],{"text":56,"type":29},{"type":25,"children":564},[565],{"text":60,"type":29},{"type":31,"level":32,"children":567},[568],{"text":64,"type":29},{"type":25,"children":570},[571],{"text":68,"type":29},{"type":31,"level":70,"children":573},[574],{"text":73,"type":29},{"type":25,"children":576},[577],{"text":77,"type":29},{"type":31,"level":32,"children":579},[580],{"text":81,"type":29},{"type":25,"children":582},[583],{"text":85,"type":29},{"type":31,"level":32,"children":585},[586],{"text":89,"type":29},{"type":31,"level":70,"children":588},[589],{"text":93,"type":29},{"type":25,"children":591},[592],{"text":97,"type":29},{"type":31,"level":70,"children":594},[595],{"text":101,"type":29},{"type":25,"children":597},[598],{"text":105,"type":29},{"type":31,"level":70,"children":600},[601],{"text":109,"type":29},{"type":25,"children":603},[604],{"text":113,"type":29},{"type":31,"level":70,"children":606},[607],{"text":117,"type":29},{"type":25,"children":609},[610],{"text":121,"type":29},{"type":25,"children":612},[613],{"text":125,"type":29},{"type":25,"children":615},[616],{"text":129,"type":29},null,[],[]]