ipvolt / 实战笔记开发者资料库

建立更好的连接。

实用的代理知识:从第一个请求到真正重要的细节。清晰的示例,有用的区分,更少的假设。

接入你的技术栈。
以 Markdown 阅读 ↗

集成

接入你的技术栈。

显式配置、可控的请求,以及清晰的连接验证方法。

在 curl 中使用代理

如何在 curl 中使用代理:-x 参数、http_proxy 与 https_proxy 变量、通过 socks5h 使用 SOCKS5、代理认证,以及如何解读 CONNECT 与 407 错误。

配置 Python Requests

在 Python Requests 中配置代理:proxies 字典、Session 默认值、凭据、通过 requests[socks] 使用 SOCKS5、环境变量与 ProxyError。

为 Node.js fetch 配置代理

让 Node.js 原生 fetch 经由 Undici ProxyAgent 走代理,并配置显式的代理认证、中止期限和响应体清理。

在 Playwright 中配置代理

为 Playwright 浏览器上下文设置带认证的 HTTP 代理,保持测试状态隔离,并将页面导航与子资源请求的故障分开诊断。

HTTPX 异步代理

学习如何配置 HTTPX 异步代理客户端、正确关闭流式响应,并在改动代理设置之前先在本地复现 PoolTimeout 异常。

Amazon 商品信息通知

用经过测试的 SQLite 收件箱处理 Amazon SP-API 商品信息通知:对投递去重、重启后恢复,并拒绝已被取代的读取结果。

Playwright 澳大利亚时区测试

在 Playwright 中运行 12 项澳大利亚浏览器时钟检查,包括豪勋爵岛的 30 分钟夏令时调整。把固定的 UTC 输入、浏览器时区和 Node 运行器的时区分开验证。

Shopify 加拿大本地化测试

用一份配置快照和成对访问来测试 Shopify 加拿大本地化,把 IP、入口 URL、语言、已保存的选择和收货地址各自的影响区分开来。

Accept-Encoding 默认值

curl、Wget 1.x、urllib、node:http、PHP curl、Guzzle、Java HttpClient 默认不发送 Accept-Encoding 或只发 identity。附实测修复与字节检查。

Axios 代理设置

在 Node.js 中为 Axios 配置代理,把显式设置与环境变量路由、agent 路由区分开来,并用可下载的本地实验复现身份认证与 TLS 检查。

aiohttp 3.14 代理配置

在 aiohttp 3.14 中配置代理:替换已弃用的 BasicAuth 和 proxy_auth,启用 trust_env,并看懂 407 与 Bad status line 报错。基于 3.14.4 实测。

Scrapy 2.19 代理配置

Scrapy 2.19 代理配置:把凭据写进 meta["proxy"]、按请求轮换、HTTP_PROXY 环境变量,以及 TunnelError 407、被忽略的 407 响应和 socks5 报错的处理方法。

curl_cffi 代理配置

curl_cffi 0.16.3 代理配置:凭据与 impersonate,CONNECT 遇 407 抛出 ConnectionError 而非 ProxyError,HTTP_PROXY 规则与 socks5h。

Playwright 屏蔽图片与字体

在 Python 和 Node.js 中用 Playwright 的 route() 屏蔽图片、字体和媒体请求,可作用于整个浏览器上下文或按主机屏蔽,并说明 HTTP 缓存与 Service Worker 的注意事项。

核心概念

理解取舍。

带着正确的问题选择协议、会话模型或网络类型。

HTTP 与 SOCKS5 代理

对比 HTTP CONNECT 与 SOCKS5,理解 DNS 解析位置和 TLS 边界,并选择你的客户端和服务商实际支持的协议。

轮换代理与粘性代理

围绕最小的完整工作流来选择轮换策略,区分出口 IP 绑定与 Cookie 状态,并测试粘性会话提前结束时你的应用应当如何处理。

移动代理与住宅代理

对比蜂窝运营商网络与家庭宽带两类出口在 QA 测试中的表现,把浏览器设备仿真与代理路由分开处理,并只测量你的工作流真正需要的能力。

故障排查

定位故障。

在修改配置之前,先区分认证、连接和目标站点三类错误。

修复代理错误 407

按可重复的顺序诊断 Proxy Authentication Required:网关、认证方式、凭据编码、账户范围和客户端配置。

代理环境变量

通过一个隔离的本地检查,诊断 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 和 NO_PROXY 在 curl、Python Requests 和 Node.js 中的路由差异。

诊断代理超时

用 curl 计时把代理 DNS、TCP、CONNECT、TLS 和响应延迟分开,然后设置请求截止时间,并判断重试是否安全。

修复 Chromium 代理隧道错误

解释 ERR_TUNNEL_CONNECTION_FAILED 与 ERR_PROXY_CONNECTION_FAILED,附经验证的失败对照表,并说明如何找回 Chromium 隐藏的 CONNECT 状态码。

修复 fetch failed 错误

解读代理后的 Node.js TypeError: fetch failed:打印 err.cause 链,修复被忽略的 HTTPS_PROXY 或 undici 版本错配,并读懂代理的 403、407 或 502。

fetch 忽略 HTTPS_PROXY

Node 内置 fetch 会悄悄跳过 HTTP_PROXY 和 HTTPS_PROXY,导致请求以 UND_ERR_CONNECT_TIMEOUT 超时,而 curl 正常。本文说明原因及各 Node 版本的修复方法。

代理下的 SSL 版本号错误

使用代理时,同一个 SSL wrong version number 错误可能出在两跳:代理端口或目标端口。教你在 curl、Requests 和 HTTPX 中判断是哪一跳并修复。

SOCKS 依赖缺失报错

Python Requests、pip 或 HTTPX 报 Missing dependencies for SOCKS support?安装 requests[socks],或清除 ALL_PROXY 环境变量。

Scrapy 抓取 0 页

Scrapy 2.16 移除了 start_requests():爬虫输出 Crawled 0 pages 后以 finished 关闭且无警告。改用 async def start(),已在 2.19 实测。

国家/地区

核实位置。

了解本地网络,验证出口位置,在选择服务商之前问对问题。

荷兰代理

结合荷兰网络背景评估荷兰代理:出口 IP 与城市核查、ASN 证据,以及在选择供应商之前收集可比较证据的实用试用清单,逐项对照后再做决定。

美国代理

按国家、州和城市评估美国代理。在选择供应商之前,比较网络证据、规划地区核查,并测量会话行为,把位置需求变成可复现的测试。

英国代理

结合最新的运营商背景、UK 与 GB 的地理范围、邮编定位的局限,以及针对国家或网络需求的实用测试计划,全面评估英国代理。

德国代理

结合最新的运营商与漫游背景、城市定位的局限、浏览器语言控制,以及一份实用的验收清单,评估德国代理并设计一次可复现的试用。

法国代理

从运营商与品牌的区分、本土与海外领地的范围、出口 IP 证据,以及一份实用的本地化测试矩阵出发,评估法国代理并设计试用。

巴西代理

评估巴西代理IP(移动或住宅):弄清巴西标签能证明什么,了解 Vivo、Claro 和 TIM 的运营商背景、各州与时区、CEP 和 CPF 输入,并制定一份试用计划。

葡萄牙代理

明确并验证葡萄牙代理IP:本土与岛屿的范围、ANACOM 公布的运营商名称、pt-PT 设置、葡萄牙结账字段,以及一份由四行组成的试用计划。

澳大利亚代理

确定澳大利亚代理测试需要哪些证据:国家或城市、Telstra/Optus/TPG 网络标签、nbn 的服务商层级,以及会话要求。

加拿大代理

用国家、运营商和会话验收矩阵评估加拿大代理。把 Rogers、Bell、TELUS 和 Quebecor 的品牌与你的测试所需的证据区分开来。

日本代理

评估日本代理IP时,把 IP 位置、出口和移动接入证据分开核查;在接受样本之前,先理清 au/UQ 的品牌关系和 Rakuten 的漫游情况。