[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-strapi-article:zh:vercel-ai-proxy-model-api-request-forwarding":3,"blog-article:\u002Fblog\u002Fvercel-ai-proxy-model-api-request-forwarding":691,"blog-related:\u002Fblog\u002Fvercel-ai-proxy-model-api-request-forwarding":692,"blog-translations:\u002Fblog\u002Fvercel-ai-proxy-model-api-request-forwarding":693},{"available":4,"article":5,"relatedArticles":180,"translations":575},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":179},"strapi",3021,"qpvbzl1v3aygsn76u2qxt0ql","zh","vercel-ai-proxy-model-api-request-forwarding","\u002Fblog\u002Fvercel-ai-proxy-model-api-request-forwarding","Vercel AI 代理 IP 配置指南：模型 API 与请求转发","Vercel AI 代理 IP 配置指南：模型 API 与请求转发，覆盖 Serverless\u002FNode.js Runtime、环境变量和超时排查。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_vercel_ai_ip_api_cover_99078ff655.webp","2026-10-01T14:10:06.933Z","2026-10-01T14:10:06.921Z","Global Proxies Team",[],false,0,3,"blocks",[24,30,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,117,121,125,129,133,155,159,163,167,171,175],{"type":25,"children":26},"paragraph",[27],{"text":28,"type":29},"在 Vercel 项目中，代理 IP 应配置在真正发起模型 API 请求的服务端函数中，而不是只在浏览器端设置。先验证服务端出口 IP，再检查 AI SDK、上游 API Key、运行时和函数超时。","text",{"type":31,"level":32,"children":33},"heading",2,[34],{"text":35,"type":29},"Vercel AI 请求链路中代理 IP 应该放在哪里",{"type":25,"children":37},[38],{"text":39,"type":29},"完整链路可以写成：`浏览器 → Vercel 函数 → HTTP 客户端或代理连接层 → 模型 API`。代理配置应位于 Vercel 函数实际发出上游请求的位置，模型 API Key 也应保留在服务端环境变量中。",{"type":25,"children":41},[42],{"text":43,"type":29},"需要先确定请求是在浏览器、Vercel 函数还是上游模型服务端发出。代理 IP 必须配置在实际发起上游请求的那一层，浏览器端配置不会自动传递给服务端函数。",{"type":31,"level":32,"children":45},[46],{"text":47,"type":29},"Node.js Runtime 中的模型 API 转发",{"type":25,"children":49},[50],{"text":51,"type":29},"下面以 Next.js App Router 的 `app\u002Fapi\u002Fchat\u002Froute.ts`、Node.js Runtime、Node 20+ 和 Undici 6.x `ProxyAgent` 为例。先安装 `undici`，再通过 `PROXY_URL` 注入代理协议、主机、端口和认证信息。该入口不是所有 Vercel 框架的通用写法：",{"type":25,"children":53},[54],{"text":55,"type":29},"```ts\nimport { ProxyAgent, fetch as proxyFetch } from 'undici';",{"type":25,"children":57},[58],{"text":59,"type":29},"export const runtime = 'nodejs';",{"type":25,"children":61},[62],{"text":63,"type":29},"export async function POST(req: Request) {\nif (req.headers.get('authorization') !== `Bearer ${process.env.INTERNAL_TOKEN}`) {\nreturn new Response('Unauthorized', { status: 401 });\n}\nif (!process.env.PROXY_URL || !process.env.MODEL_API_KEY) {\nreturn new Response('Server configuration missing', { status: 500 });\n}\nconst dispatcher = new ProxyAgent(process.env.PROXY_URL);\nconst body = await req.json();\nconst upstream = await proxyFetch('https:\u002F\u002Fapi.example.ai\u002Fv1\u002Fchat\u002Fcompletions', {\nmethod: 'POST',\ndispatcher,\nheaders: {\n'content-type': 'application\u002Fjson',\nauthorization: `Bearer ${process.env.MODEL_API_KEY}`,\n},\nbody: JSON.stringify(body),\n});\nreturn new Response(upstream.body, {\nstatus: upstream.status,\nheaders: { 'content-type': upstream.headers.get('content-type') ?? 'application\u002Fjson' },\n});\n}\n```",{"type":25,"children":65},[66],{"text":67,"type":29},"`PROXY_URL`、`MODEL_API_KEY` 和内部调用凭证都应保存在 Vercel 服务端环境变量中，不要写进前端代码。正式部署还应限制允许的模型、输入大小、频率和成本；本文示例只适合受控开发验证。模型 API Base URL 是上游服务地址，代理 URL 是出口 IP 配置，两者不能混用。当前示例绕过 AI SDK 直接使用 Undici；若标题要覆盖 AI SDK，应另补指定 Provider 的自定义 `fetch`、流式取消和超时测试，不能把裸 Undici 示例当作通用 SDK 配置。",{"type":31,"level":32,"children":69},[70],{"text":71,"type":29},"Edge Runtime 为什么不能直接套用 Node.js 代理代码",{"type":25,"children":73},[74],{"text":75,"type":29},"Edge Runtime 与 Node.js Runtime 的网络库和代理能力不同，不能把 Node.js 的 Agent 或依赖直接假定为 Edge 可用。",{"type":31,"level":32,"children":77},[78],{"text":79,"type":29},"部署验证和常见错误排查",{"type":25,"children":81},[82],{"text":83,"type":29},"Node.js Runtime 更适合需要 Node 网络库的代理场景；Edge Runtime 是否支持某个代理库，要以当前运行时能力为准。部署后先调用一个出口 IP 检测地址，再调用模型 API，记录函数日志、响应状态和总耗时。",{"type":25,"children":85},[86],{"text":87,"type":29},"正式验证至少包括：环境变量是否存在、服务端出口 IP 是否变化、模型 API 是否返回、流式响应是否完整、函数耗时是否接近平台限制。不要仅凭本地请求成功判断部署环境也已正确接入。",{"type":31,"level":21,"children":89},[90],{"text":91,"type":29},"函数超时、407、429 和上游模型错误",{"type":93,"format":94,"children":95},"list","unordered",[96,101,105,109,113],{"type":97,"children":98},"list-item",[99],{"text":100,"type":29},"**401\u002F403**：模型 API Key、权限或上游服务策略。",{"type":97,"children":102},[103],{"text":104,"type":29},"**407**：代理 IP 认证。",{"type":97,"children":106},[107],{"text":108,"type":29},"**429**：模型配额、并发或请求频率。",{"type":97,"children":110},[111],{"text":112,"type":29},"**504\u002F函数超时**：上游响应、代理链路、函数超时或流式响应处理。",{"type":97,"children":114},[115],{"text":116,"type":29},"**客户端成功、服务端失败**：优先检查 Vercel Runtime 是否真正读取代理配置。",{"type":31,"level":21,"children":118},[119],{"text":120,"type":29},"本地成功、Vercel 失败的常见原因",{"type":25,"children":122},[123],{"text":124,"type":29},"重点对比 Runtime、环境变量、部署区域、函数超时、流式响应和上游 API 权限，不要只更换代理 IP。",{"type":31,"level":32,"children":126},[127],{"text":128,"type":29},"官方文档",{"type":25,"children":130},[131],{"text":132,"type":29},"Vercel Runtime、Undici 和 AI SDK 的能力可能更新，部署前可核对：",{"type":93,"format":94,"children":134},[135,139,143,147,151],{"type":97,"children":136},[137],{"text":138,"type":29},"[Vercel Functions Runtimes](https:\u002F\u002Fvercel.com\u002Fdocs\u002Ffunctions\u002Fruntimes)：确认 Node.js 与 Edge Runtime 的能力差异。",{"type":97,"children":140},[141],{"text":142,"type":29},"[Vercel Environment Variables](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fenvironment-variables)：确认环境变量的作用范围。",{"type":97,"children":144},[145],{"text":146,"type":29},"[Vercel AI SDK](https:\u002F\u002Fsdk.vercel.ai\u002Fdocs)：核对模型请求和流式响应。",{"type":97,"children":148},[149],{"text":150,"type":29},"[Undici ProxyAgent](https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fundici\u002Fblob\u002Fmain\u002Fdocs\u002Fdocs\u002Fapi\u002FProxyAgent.md)：核对当前版本的代理 Agent 配置。",{"type":97,"children":152},[153],{"text":154,"type":29},"[Fetch API](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FAPI\u002FFetch_API)：了解标准请求行为。",{"type":31,"level":32,"children":156},[157],{"text":158,"type":29},"FAQ",{"type":31,"level":21,"children":160},[161],{"text":162,"type":29},"Vercel AI 代理 IP 适合什么场景？",{"type":25,"children":164},[165],{"text":166,"type":29},"适合在 Vercel 服务端函数中为模型 API 请求提供指定出口 IP。它不能替代 API Key、模型权限或平台配额。",{"type":31,"level":21,"children":168},[169],{"text":170,"type":29},"普通 fetch 是否代表已经接入代理 IP？",{"type":25,"children":172},[173],{"text":174,"type":29},"不是。还需要在实际发起上游请求的 HTTP 客户端中注入代理配置，并在部署环境验证出口 IP。",{"type":25,"children":176},[177],{"text":178,"type":29},"部署后先验证环境变量和服务端出口 IP，再测试模型 API、流式响应和函数耗时。需要核对基础代理参数时，可参考[代理设置帮助](https:\u002F\u002Fhelp.quanqiudaili.com\u002Fdocs\u002Fproxy-Settings)。","",[181,302,465],{"source":6,"id":182,"documentId":183,"translationKey":183,"locale":9,"slug":184,"path":185,"_path":185,"title":186,"description":187,"excerpt":187,"image":188,"publishedAt":189,"updatedAt":190,"author":17,"tags":191,"featured":19,"sortOrder":20,"readingTime":32,"bodyType":22,"bodyBlocks":192,"bodyHtml":179},3037,"y6ot2xv3nw32h1po6tszsytm","poe-proxy-region-login-access-troubleshooting","\u002Fblog\u002Fpoe-proxy-region-login-access-troubleshooting","Poe 代理 IP 怎么配：地区限制、登录与访问失败排查","Poe 代理 IP 怎么配：地区限制、登录与访问失败排查，覆盖浏览器配置、Cookie 会话、地区验证和停止条件。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_poe_ip_cover_d741becdde.webp","2026-10-01T14:16:12.147Z","2026-10-01T14:16:12.134Z",[],[193,197,201,205,209,213,217,221,225,229,233,237,241,245,250,254,258,261,265,279,282,286,290,294,298],{"type":25,"children":194},[195],{"text":196,"type":29},"Poe 登录或访问异常时，先确认网页或客户端是否真的使用代理 IP，再区分出口 IP、Cookie 会话、账号状态和 Poe 服务规则。代理 IP 不能保证解除地区限制、通过审核或获得更高配额。",{"type":25,"children":198},[199],{"text":200,"type":29},"接入全球代理服务前先确认当前环境属于支持的海外网络环境；不在支持范围内时，应先确认服务适用条件。",{"type":31,"level":32,"children":202},[203],{"text":204,"type":29},"Poe 网页与客户端的代理接入差异",{"type":25,"children":206},[207],{"text":208,"type":29},"配置步骤应锁定一个已核验的浏览器与版本，写出系统代理或浏览器代理入口、四个字段位置、认证弹窗行为和启用后的出口验证；其他客户端只列为待验证，不把四字段清单当作完整入口。",{"type":25,"children":210},[211],{"text":212,"type":29},"本文主路径采用 Windows 11 系统代理：进入“设置 → 网络和 Internet → 代理 → 手动设置代理”，启用代理服务器后填写地址和端口；账号密码按系统认证提示输入。完成后在同一浏览器窗口先验证出口，再测试 Poe 登录，不能用其他浏览器标签的成功代替。",{"type":25,"children":214},[215],{"text":216,"type":29},"网页端是最容易复现的主路径：在实际打开 Poe 的浏览器中配置代理并检查出口 IP。桌面或移动客户端如果没有明确的独立代理入口，应通过系统代理或代理客户端接管；不要凭另一浏览器的检测结果判断 Poe 客户端已经生效。",{"type":25,"children":218},[219],{"text":220,"type":29},"按“代理协议 → 主机 → 端口 → 账号\u002F密码 → 启用代理 → IP 检测”的顺序操作。浏览器代理和系统代理的接管范围可能不同，必须在实际访问 Poe 的同一浏览器中验证出口 IP。",{"type":25,"children":222},[223],{"text":224,"type":29},"登录前记录出口 IP 所在地区、浏览器语言、时区和 Cookie 状态。需要长期保持同一地区时，静态住宅代理 IP 通常比频繁轮换的动态住宅代理 IP 更容易复测，但不能替代正常账号行为。",{"type":31,"level":32,"children":226},[227],{"text":228,"type":29},"如何验证出口 IP 所在地区和登录会话",{"type":25,"children":230},[231],{"text":232,"type":29},"先在实际访问 Poe 的入口中打开 IP 检测页，确认出口 IP 已变化；再打开 Poe，记录登录状态、页面语言、重定向和验证码提示。只改一个变量复测，才能判断差异来自代理 IP、Cookie 还是账号状态。",{"type":31,"level":32,"children":234},[235],{"text":236,"type":29},"Cookie、验证码和访问失败怎么排查",{"type":25,"children":238},[239],{"text":240,"type":29},"1. IP 未变化：检查浏览器是否绕过代理、系统代理是否冲突。\n2. 407：核对代理协议、主机、端口、账号和密码。\n3. 反复登录或验证码：停止重复尝试，检查 Cookie、设备环境、账号状态和请求频率。\n4. 只有 Poe 打不开：对比其他网站，判断是 Poe 地区策略、账号状态还是服务异常。\n5. 401\u002F403\u002F429：分别检查登录认证、权限\u002F地区规则和请求频率\u002F配额。",{"type":25,"children":242},[243],{"text":244,"type":29},"固定一个变量后再复测，例如只更换代理 IP，不要同时更换浏览器、Cookie 和账号。",{"type":246,"children":247},"code",[248],{"text":249,"type":29},"| 表现 | 优先判断 |\n| --- | --- |\n| IP 未变化 | 当前入口没有读取代理配置 |\n| 返回 407 | 代理认证或端口错误 |\n| 反复出现验证码 | Cookie、设备环境、账号状态或操作频率 |\n| 其他网站正常但 Poe 失败 | Poe 服务规则、登录状态或账号层问题 |",{"type":25,"children":251},[252],{"text":253,"type":29},"连续登录只会增加变量。出现重复验证码或相同错误时，应停止尝试并保存出口 IP 所在地区、Cookie 状态、错误时间和页面提示。",{"type":25,"children":255},[256],{"text":257,"type":29},"**能力边界：** 代理 IP 可以改善出口 IP 所在地区和网络路径，但不能替代 Cookie、账号状态、Poe 服务规则或配额。",{"type":31,"level":32,"children":259},[260],{"text":128,"type":29},{"type":25,"children":262},[263],{"text":264,"type":29},"Poe 的网页入口、客户端功能和账号政策可能变化，可参考：",{"type":93,"format":94,"children":266},[267,271,275],{"type":97,"children":268},[269],{"text":270,"type":29},"[Poe 官方帮助中心](https:\u002F\u002Fhelp.poe.com\u002Fhc\u002Fen-us)：核对登录、账号和产品使用问题。",{"type":97,"children":272},[273],{"text":274,"type":29},"[Poe 服务入口](https:\u002F\u002Fpoe.com\u002F)：确认当前页面状态和官方提示。",{"type":97,"children":276},[277],{"text":278,"type":29},"[MDN Cookie 文档](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FHTTP\u002FCookies)：了解 Cookie 与登录会话。",{"type":31,"level":32,"children":280},[281],{"text":158,"type":29},{"type":31,"level":21,"children":283},[284],{"text":285,"type":29},"其他网站正常但 Poe 打不开怎么办？",{"type":25,"children":287},[288],{"text":289,"type":29},"说明基础网络和代理 IP 可能已经生效，应继续检查 Cookie、登录状态、账号提示、地区规则和 Poe 服务状态。",{"type":31,"level":21,"children":291},[292],{"text":293,"type":29},"代理配置正确但仍然失败怎么办？",{"type":25,"children":295},[296],{"text":297,"type":29},"保持浏览器、Cookie 和账号不变，把网络层、认证层、账号状态和服务权限分开复测；出现重复验证码时停止继续登录。",{"type":25,"children":299},[300],{"text":301,"type":29},"每次只调整一个变量，并保存出口 IP 所在地区、错误时间和页面提示。浏览器或系统代理尚未配置时，可先查看[代理设置帮助](https:\u002F\u002Fhelp.quanqiudaili.com\u002Fdocs\u002Fproxy-Settings)。",{"source":6,"id":303,"documentId":304,"translationKey":304,"locale":9,"slug":305,"path":306,"_path":306,"title":307,"description":308,"excerpt":308,"image":309,"publishedAt":310,"updatedAt":311,"author":17,"tags":312,"featured":19,"sortOrder":20,"readingTime":21,"bodyType":22,"bodyBlocks":313,"bodyHtml":179},3036,"pv7w1ycsh8d3o5bpw06btrt7","mistral-ai-proxy-web-api-configuration","\u002Fblog\u002Fmistral-ai-proxy-web-api-configuration","Mistral API 代理 IP：curl 与 Python Requests 配置","Mistral AI 代理 IP 配置指南：网页、API 与 Proxy URL，包含 curl、Python 请求、环境变量和错误码排查。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_mistral_ai_ip_api_proxy_url_cover_6ef6165455.webp","2026-10-01T14:15:53.732Z","2026-10-01T14:15:53.707Z",[],[314,318,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,411,417,421,424,428,442,445,449,453,457,461],{"type":25,"children":315},[316],{"text":317,"type":29},"Mistral AI 接入时要分清三件事：代理 IP 提供出口 IP，API Base URL 是服务地址，API Key 是服务认证。先用最小请求验证出口 IP 和认证，再接入 SDK 或业务代码。",{"type":25,"children":319},[320],{"text":200,"type":29},{"type":31,"level":32,"children":322},[323],{"text":324,"type":29},"Mistral API 请求中代理 URL、Base URL 和 API Key 的区别",{"type":25,"children":326},[327],{"text":328,"type":29},"当前正文实际覆盖 curl 与 Python Requests；如果不补网页登录流程和已核验版本的 SDK 示例，标题应理解为 API 配置指南，而不是完整的“网页、API 与 Proxy URL”教程。",{"type":25,"children":330},[331],{"text":332,"type":29},"代理 URL 决定请求经过哪个出口 IP，API Base URL 决定请求发送到哪个服务地址，API Key 则用于验证账户权限。三者位置不同，任何一个填错都会产生不同的错误。",{"type":25,"children":334},[335],{"text":336,"type":29},"请求链路可以理解为：`应用代码 → 代理 URL → Mistral API Base URL → API Key 验证`。代理连接成功只说明网络层可用，仍需等待 API 完成账户认证和模型权限判断。",{"type":31,"level":32,"children":338},[339],{"text":340,"type":29},"curl、Python 与 SDK 配置示例",{"type":25,"children":342},[343],{"text":344,"type":29},"```bash\ncurl --proxy http:\u002F\u002FUSER:PASSWORD@HOST:PORT \\\n-H \"Authorization: Bearer $MISTRAL_API_KEY\" \\\n-H \"Content-Type: application\u002Fjson\" \\\nhttps:\u002F\u002Fapi.mistral.ai\u002Fv1\u002Fmodels\n```",{"type":25,"children":346},[347],{"text":348,"type":29},"如果请求返回 407，先修代理认证；如果返回 401，先修 API Key。不要把代理 URL 当成 Mistral API Base URL，也不要把真实密钥写进代码或 Notebook。",{"type":31,"level":21,"children":350},[351],{"text":352,"type":29},"Python 与 SDK 配置",{"type":25,"children":354},[355],{"text":356,"type":29},"```python\nimport os, requests",{"type":25,"children":358},[359],{"text":360,"type":29},"proxies = {\n'http': os.environ['HTTP_PROXY'],\n'https': os.environ['HTTPS_PROXY'],\n}\nr = requests.get(\n'https:\u002F\u002Fapi.mistral.ai\u002Fv1\u002Fmodels',\nheaders={'Authorization': f\"Bearer {os.environ['MISTRAL_API_KEY']}\"},\nproxies=proxies,\ntimeout=15,\n)\nprint(r.status_code, r.text[:200])\n```",{"type":25,"children":362},[363],{"text":364,"type":29},"模型列表可读不等于模型调用有权限。若要验证实际调用，使用当前账户有权限且成本可控的模型，并记录状态码、耗时和脱敏请求标识；不要把一次成功响应写成所有模型均可调用。",{"type":25,"children":366},[367],{"text":368,"type":29},"```python\npayload = {\n'model': os.environ['MISTRAL_MODEL'],\n'messages': [{'role': 'user', 'content': 'Reply with OK'}],\n'max_tokens': 8,\n}\nresponse = requests.post(\n'https:\u002F\u002Fapi.mistral.ai\u002Fv1\u002Fchat\u002Fcompletions',\nheaders={'Authorization': f\"Bearer {os.environ['MISTRAL_API_KEY']}\"},\njson=payload,\nproxies=proxies,\ntimeout=30,\n)\nprint(response.status_code, response.text[:500])\n```",{"type":31,"level":32,"children":370},[371],{"text":372,"type":29},"模型请求验证和错误码排查",{"type":25,"children":374},[375],{"text":376,"type":29},"先用模型列表或其他轻量请求验证网络和 API Key，再测试实际模型请求。",{"type":25,"children":378},[379],{"text":380,"type":29},"两步验证可以避免把模型名称、请求体或配额错误误判为代理失败。保存脱敏后的状态码、错误类型、响应耗时和请求 ID（如响应中提供），通常比只记录“调用失败”更有排查价值。",{"type":25,"children":382},[383],{"text":384,"type":29},"接入 SDK 时继续使用 SDK 要求的 Base URL 和 API Key；代理只放在 HTTP 客户端层。网页访问、API 请求和服务端转发要分别验证。",{"type":31,"level":21,"children":386},[387],{"text":388,"type":29},"401、403、407、429 和上游错误",{"type":93,"format":94,"children":390},[391,395,399,403,407],{"type":97,"children":392},[393],{"text":394,"type":29},"**401**：API Key 缺失、错误或已失效。",{"type":97,"children":396},[397],{"text":398,"type":29},"**403**：账号权限、地区策略或服务规则。",{"type":97,"children":400},[401],{"text":402,"type":29},"**407**：代理 IP 认证失败。",{"type":97,"children":404},[405],{"text":406,"type":29},"**429**：接口配额、请求频率或并发超过限制。",{"type":97,"children":408},[409],{"text":410,"type":29},"**TLS\u002F超时**：检查代理协议、DNS、地区路径和客户端超时。",{"type":93,"format":94,"children":412},[413],{"type":97,"children":414},[415],{"text":416,"type":29},"**5xx**：检查上游服务状态、中间链路和重试策略，不要无限重试。",{"type":25,"children":418},[419],{"text":420,"type":29},"**能力边界：** 即使代理请求成功，API Key、模型权限、账户配额和服务策略仍需单独满足。",{"type":31,"level":32,"children":422},[423],{"text":128,"type":29},{"type":25,"children":425},[426],{"text":427,"type":29},"Mistral API 路径、SDK 和模型列表可能更新，配置前可核对：",{"type":93,"format":94,"children":429},[430,434,438],{"type":97,"children":431},[432],{"text":433,"type":29},"[Mistral AI API 文档](https:\u002F\u002Fdocs.mistral.ai\u002Fapi\u002F)：确认端点、请求格式和错误响应。",{"type":97,"children":435},[436],{"text":437,"type":29},"[Mistral AI SDK 文档](https:\u002F\u002Fdocs.mistral.ai\u002Fgetting-started\u002Fclients\u002F)：确认当前 SDK 的客户端配置方式。",{"type":97,"children":439},[440],{"text":441,"type":29},"[MDN HTTP Authorization](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FHTTP\u002FHeaders\u002FAuthorization)：了解 Authorization 请求头。",{"type":31,"level":32,"children":443},[444],{"text":158,"type":29},{"type":31,"level":21,"children":446},[447],{"text":448,"type":29},"Mistral AI Proxy URL 适合什么场景？",{"type":25,"children":450},[451],{"text":452,"type":29},"适合在服务端或开发环境中为 Mistral API 请求提供出口 IP。它不会替代 API Key、模型权限或接口配额。",{"type":31,"level":21,"children":454},[455],{"text":456,"type":29},"curl 成功但 SDK 请求失败怎么办？",{"type":25,"children":458},[459],{"text":460,"type":29},"说明代理和 API Key 基本可用，应继续检查 SDK 是否读取代理环境变量、Base URL、模型名称、请求体和超时配置。",{"type":25,"children":462},[463],{"text":464,"type":29},"先用 curl 验证代理认证和 API Key，再验证模型列表，最后运行真实模型请求。需要核对代理 IP 的协议、主机、端口和认证字段时，可参考[代理设置帮助](https:\u002F\u002Fhelp.quanqiudaili.com\u002Fdocs\u002Fproxy-Settings)。",{"source":6,"id":466,"documentId":467,"translationKey":467,"locale":9,"slug":468,"path":469,"_path":469,"title":470,"description":471,"excerpt":471,"image":472,"publishedAt":473,"updatedAt":474,"author":17,"tags":475,"featured":19,"sortOrder":20,"readingTime":32,"bodyType":22,"bodyBlocks":476,"bodyHtml":179},3035,"b11ximfj5zgmye3d23zg05fr","google-shopping-scraping-proxy-ip-region-results-access","\u002Fblog\u002Fgoogle-shopping-scraping-proxy-ip-region-results-access","Google Shopping 地区商品结果验证","Google Shopping 数据采集代理 IP 怎么配置？本文说明地区、币种、配送范围、库存和商户信息对商品结果的影响，并给出小样本验证与 403\u002F429 排查步骤。","https:\u002F\u002Fcms.quanqiudaili.com\u002Fuploads\u002Flarge_google_shopping_ip_cover_8a958ded51.webp","2026-10-01T14:15:33.536Z","2026-10-01T14:15:33.521Z",[],[477,481,484,488,492,496,500,504,508,512,516,520,524,528,532,536,540,544,548,551,555,559,563,567,571],{"type":25,"children":478},[479],{"text":480,"type":29},"Google Shopping 的商品、价格和商户结果不只取决于出口地区，还会受到币种、语言、配送地址、库存和采集时间影响。验证代理 IP 时应选择少量商品，固定除出口以外的全部条件，再比较价格、币种、商户与配送信息，避免把库存或实时价格变化误判成地区差异。",{"type":25,"children":482},[483],{"text":200,"type":29},{"type":31,"level":32,"children":485},[486],{"text":487,"type":29},"Google Shopping 的地区结果由哪些变量决定",{"type":25,"children":489},[490],{"text":491,"type":29},"记录国家或地区、语言、币种、配送地区、关键词、排序、分页和请求频率。第一次只选 3—5 个商品或关键词，确认出口地区后再对照商品字段；验证期间不要同时更换币种、配送地址和登录状态。",{"type":246,"children":493},[494],{"text":495,"type":29},"| 任务 | 更合适的代理 IP | 重点记录 |\n| --- | --- | --- |\n| 多地区商品与价格观察 | 动态住宅代理 IP | 出口地区、币种、配送范围、采集时间 |\n| 带商户账号的连续检查 | 静态住宅代理 IP | 账号地区、Cookie、会话和出口一致性 |",{"type":31,"level":32,"children":497},[498],{"text":499,"type":29},"国家、币种、配送地与出口地区如何配合",{"type":25,"children":501},[502],{"text":503,"type":29},"按 HTTP、HTTPS 或 SOCKS5 配置主机、端口、账号和密码，可先参考 [代理 IP 参数与设置说明](https:\u002F\u002Fhelp.quanqiudaili.com\u002Fdocs\u002Fproxy-Settings)，再确认出口地区。建议只对公开网页做 3—5 个商品或关键词的小样本验证：固定国家\u002F地区、语言、币种、配送地区和分页，依次记录商品名称、价格、币种、商户、库存、配送范围、链接和采集时间。连续出现 403、429、验证码或结果异常时立即停止，不扩大样本。",{"type":31,"level":32,"children":505},[506],{"text":507,"type":29},"403、429 和商品结果异常怎么判断",{"type":25,"children":509},[510],{"text":511,"type":29},"403\u002F429 出现时停止扩大采集，先参考 [代理 IP 故障排查中心](https:\u002F\u002Fwww.quanqiudaili.com\u002Fblog\u002Fproxy-ip-troubleshooting-hub) 检查请求频率、分页、Cookie 和平台规则；价格或商户结果不一致时，先核对出口地区、语言、币种、配送地区、库存和采集时间。代理 IP 只能改变网络出口，不能保证库存、配送资格或实时价格一致。",{"type":25,"children":513},[514],{"text":515,"type":29},"涉及公开商品结果采样时，还应查看 [目标网站规则与合规采样](https:\u002F\u002Fwww.quanqiudaili.com\u002Fblog\u002Fproxy-ip-target-site-rules-compliant-sampling)。",{"type":31,"level":32,"children":517},[518],{"text":519,"type":29},"如何设计一组可复核的商品样本",{"type":31,"level":21,"children":521},[522],{"text":523,"type":29},"固定商品和地区条件",{"type":25,"children":525},[526],{"text":527,"type":29},"先固定国家\u002F地区、语言、币种、配送地区和分页，再用一个小样本核对商品名称、价格、商户和库存字段。若要进一步判断时间范围和归一化数据的影响，可对照 [Google Trends 代理 IP 配置指南](https:\u002F\u002Fwww.quanqiudaili.com\u002Fblog\u002Fgoogle-trends-proxy)。",{"type":31,"level":21,"children":529},[530],{"text":531,"type":29},"记录结果并设置停止条件",{"type":25,"children":533},[534],{"text":535,"type":29},"出口 IP 正确但价格或商户变化时，还要考虑库存、配送范围和实时数据变化。需要比较市场参数与搜索结果时，可继续查看 [Bing 搜索代理 IP 配置指南](https:\u002F\u002Fwww.quanqiudaili.com\u002Fblog\u002Fbing)。",{"type":246,"children":537},[538],{"text":539,"type":29},"| 检查项 | 需要记录的内容 |\n| --- | --- |\n| 地区条件 | 国家\u002F地区、语言、币种、配送地区 |\n| 请求条件 | 关键词、分页、排序、请求频率 |\n| 商品结果 | 商品名称、价格、币种、商户、库存、配送范围、链接、采集时间 |",{"type":25,"children":541},[542],{"text":543,"type":29},"Google 搜索结果会受到个性化和搜索位置影响，可查看 [Google 搜索个性化说明](https:\u002F\u002Fsupport.google.com\u002Fwebsearch\u002Fanswer\u002F12410098?hl=en) 与 [Google 搜索位置管理说明](https:\u002F\u002Fsupport.google.com\u002Fwebsearch\u002Fanswer\u002F179386?hl=en)。[Merchant Center 配送设置](https:\u002F\u002Fsupport.google.com\u002Fmerchants\u002Fanswer\u002F6324484?hl=en)只用于解释商家配送字段，不能单独证明消费者端 Shopping 结果。只有官方页面明确说明的设置才应作为确定配置项，无法确认的参数应标为待验证。",{"type":25,"children":545},[546],{"text":547,"type":29},"只有国家、币种、配送地、库存状态和采样时间都已记录，商品结果才适合扩大比较；价格或库存实时变化不能单独证明代理出口有问题。\n需要进行多地区、短会话的商品结果观察时，可进一步评估 [动态住宅代理 IP](https:\u002F\u002Fwww.quanqiudaili.com\u002Fproduct\u002Fdynamic-residential)。",{"type":31,"level":32,"children":549},[550],{"text":158,"type":29},{"type":31,"level":21,"children":552},[553],{"text":554,"type":29},"如何配置并确认 Google Shopping 采集请求已经走代理？",{"type":25,"children":556},[557],{"text":558,"type":29},"先填写主机、端口、账号和密码，再固定地区、语言、币种和分页，用一个最小请求核对出口 IP、商品价格和商户字段。",{"type":31,"level":21,"children":560},[561],{"text":562,"type":29},"商品价格或商户结果不一致时先检查什么？",{"type":25,"children":564},[565],{"text":566,"type":29},"先固定地区、币种、语言、分页和请求频率，再检查 IP 地区、商品库存与平台实时数据是否发生变化。",{"type":31,"level":21,"children":568},[569],{"text":570,"type":29},"什么时候应停止采集？",{"type":25,"children":572},[573],{"text":574,"type":29},"连续出现 403、429、验证码或结果明显异常时停止扩大规模，保留请求参数和错误记录并按平台规则处理。",[576],{"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":577,"featured":19,"sortOrder":20,"readingTime":21,"bodyType":22,"bodyBlocks":578,"bodyHtml":179},[],[579,582,585,588,591,594,597,600,603,606,609,612,615,618,621,624,627,644,647,650,653,656,673,676,679,682,685,688],{"type":25,"children":580},[581],{"text":28,"type":29},{"type":31,"level":32,"children":583},[584],{"text":35,"type":29},{"type":25,"children":586},[587],{"text":39,"type":29},{"type":25,"children":589},[590],{"text":43,"type":29},{"type":31,"level":32,"children":592},[593],{"text":47,"type":29},{"type":25,"children":595},[596],{"text":51,"type":29},{"type":25,"children":598},[599],{"text":55,"type":29},{"type":25,"children":601},[602],{"text":59,"type":29},{"type":25,"children":604},[605],{"text":63,"type":29},{"type":25,"children":607},[608],{"text":67,"type":29},{"type":31,"level":32,"children":610},[611],{"text":71,"type":29},{"type":25,"children":613},[614],{"text":75,"type":29},{"type":31,"level":32,"children":616},[617],{"text":79,"type":29},{"type":25,"children":619},[620],{"text":83,"type":29},{"type":25,"children":622},[623],{"text":87,"type":29},{"type":31,"level":21,"children":625},[626],{"text":91,"type":29},{"type":93,"format":94,"children":628},[629,632,635,638,641],{"type":97,"children":630},[631],{"text":100,"type":29},{"type":97,"children":633},[634],{"text":104,"type":29},{"type":97,"children":636},[637],{"text":108,"type":29},{"type":97,"children":639},[640],{"text":112,"type":29},{"type":97,"children":642},[643],{"text":116,"type":29},{"type":31,"level":21,"children":645},[646],{"text":120,"type":29},{"type":25,"children":648},[649],{"text":124,"type":29},{"type":31,"level":32,"children":651},[652],{"text":128,"type":29},{"type":25,"children":654},[655],{"text":132,"type":29},{"type":93,"format":94,"children":657},[658,661,664,667,670],{"type":97,"children":659},[660],{"text":138,"type":29},{"type":97,"children":662},[663],{"text":142,"type":29},{"type":97,"children":665},[666],{"text":146,"type":29},{"type":97,"children":668},[669],{"text":150,"type":29},{"type":97,"children":671},[672],{"text":154,"type":29},{"type":31,"level":32,"children":674},[675],{"text":158,"type":29},{"type":31,"level":21,"children":677},[678],{"text":162,"type":29},{"type":25,"children":680},[681],{"text":166,"type":29},{"type":31,"level":21,"children":683},[684],{"text":170,"type":29},{"type":25,"children":686},[687],{"text":174,"type":29},{"type":25,"children":689},[690],{"text":178,"type":29},null,[],[]]