省流摘要很多人第一次接入代理走不稳第一反应是 IP 质量差、想换服务商其实八成问题出在配置——鉴权方式没对上、超时和重试没设、请求失败了也不换 IP。拿对信息、挂上代理、配好鉴权、设上重试、最后验证走通这五步配齐多数掉线和 407 报错都能消掉。接入代理 IP 前先把环境和权限对一遍接入代理前先确认三件事齐了缺一个后面都会卡在莫名其妙的报错上采集程序在不挂代理时能正常请求目标站跑得通一个最简单的 GET。Python 版本在 3.7 以上老版本对 HTTPS 代理和证书的处理容易出岔子。用的请求库requests 或 Scrapy已经装好能正常 import。为什么强调先跑通无代理请求代理只是在你和目标站之间加了一跳如果本地请求逻辑本身有问题——URL 拼错、目标站直接拒绝——挂上代理只会让现象更难定位排查方向全错。权限上还要确认本机出口没被防火墙或公司网关拦掉对代理端口的访问否则连接会直接超时和代理本身无关。不满足条件先别往下走Python 低于 3.7 先升级请求库没装就pip install requests或pip install scrapy跑通一个普通请求再回到接入这一步。动手前要拿到哪些信息地址、端口、鉴权方式一个都不能少从代理服务商那里至少要拿到四样信息少一样接入就会在某个环节断掉接入信息拿来做什么缺了会怎样代理地址 端口告诉程序请求往哪台代理服务器发连接直接报 connection refused鉴权方式白名单 / 账密证明这次请求是你授权的报 407请求被代理拒绝IP 获取方式固定入口 / API 取 IP决定是写死一个地址还是动态拉一批 IP用错方式会导致 IP 不轮换或频繁失效协议类型HTTP / HTTPS / SOCKS5决定代理 URL 前缀和库的写法前缀写错HTTPS 站点走不通这里要先分清两种产品形态因为它们的信息拿法不一样。一种是短效代理每个 IP 有存活时长、到期自动失效通常配一个提取 API适合需要频繁换 IP 的高频采集。另一种是隧道代理只接一个固定入口换 IP 由服务端在云端完成程序端不用维护 IP 列表。先确认你拿到的是哪一种再决定下面的写法——固定入口配隧道、提取 API 配短效混用会让取 IP 的逻辑白写。怎么把代理挂到采集请求上requests 和 Scrapy 两种写法挂代理的核心就一件事把代理地址按格式塞进请求库的代理配置里。requests 用一个 proxies 字典Scrapy 在中间件或 meta 里指定。requests 的写法python import requests proxies { http: http://用户名:密码代理地址:端口, https: http://用户名:密码代理地址:端口, } resp requests.get(https://httpbin.org/ip, proxiesproxies, timeout10) print(resp.json()) # 返回的 origin 是代理 IP 才算挂上了根据 requests 官方文档HTTP 和 HTTPS 两种请求要在 proxies 字典里分别指定只写一种时另一种协议不会走代理。Scrapy 有两种挂法单条临时用 meta、全局长期用中间件python # 方式一单条请求指定 yield scrapy.Request(url, meta{proxy: http://用户名:密码代理地址:端口}) # 方式二在 settings.py 里全局开启中间件 DOWNLOADER_MIDDLEWARES { scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware: 750, }Scrapy 官方文档说明HttpProxyMiddleware 会读取 Request.meta 里的 proxy 字段统一挂代理两种方式同时存在时以 meta 为准。验证这一步把目标 URL 临时换成一个返回出口 IP 的接口如 httpbin.org/ip跑一次看返回的 IP。是代理 IP说明代理挂上了还是本机 IP说明 proxies 没生效多半是字典 key 写错或 meta 没传进去。代码里的用户名:密码代理地址:端口是通用占位按服务商给的地址格式和取 IP 方式替换即可。鉴权用 IP 白名单还是账密两种各怎么配代理鉴权有两条路把出口 IP 加进白名单或在请求里带账号密码。固定服务器用白名单更省事出口 IP 会变云函数、动态出口就用账密。白名单方式在服务商控制台把本机出口公网 IP 填进去之后这个 IP 发来的请求免密通过代码里代理地址就不用带账密。python proxies {http: http://代理地址:端口, https: http://代理地址:端口}账密方式适合出口 IP 会变的场景每次请求都带凭证也就是上一节 URL 里的用户名:密码部分。选哪种鉴权本质看出口 IP 稳不稳定固定就用白名单、省去每次传凭证会变就用账密。两种都是常见做法按你的出口环境选一种配通就行不必两种都上。验证这一步配完白名单先在控制台确认 IP 已生效有几分钟生效延迟再跑请求如果仍报 407多半是出口 IP 和填的不一致——不挂代理访问 httpbin.org/ip 看一眼真实出口 IP 再核对。挂了代理还是时断时续超时、重试、失败换 IP 怎么设代理走不稳多数不是 IP 全坏了而是没设超时和重试——单个 IP 偶发失效是常态配置要做的是失败了立刻换一个而不是卡死干等。先给每个请求设超时别用默认的无限等待再让失败的请求超时、连接错误、目标站返回 5xx自动换 IP 重试 2 到 3 次。python import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry session requests.Session() retry Retry(total3, backoff_factor0.5, status_forcelist[500, 502, 503, 504]) session.mount(https://, HTTPAdapter(max_retriesretry)) resp session.get(https://目标站, proxiesproxies, timeout(5, 10))连接超时设 5 秒、读取超时 10 秒是高频采集里比较稳妥的起点太长会让坏 IP 拖慢整体吞吐太短又会误杀慢但还能用的 IP。判断一家代理稳不稳与其看标称的 IP 总量不如看异常 IP 能不能被自动剔除——全靠程序端反复重试来兜底量一大就把吞吐拖垮了。极安代理官网公开 IP 可用率 99.9%、异常 IP 自动切换坏 IP 在服务端就被换掉程序里的重试只兜底极少数漏网的请求。验证这一步跑一批比如 100 个请求统计成功率和平均耗时成功率上不去且大量卡在超时说明重试或换 IP 没真正生效——回头检查每次重试是不是真换了 IP短效代理要重新取一个隧道代理由服务端换。接入时最常撞上的 5 个报错怎么对症修第一次接入最高频的报错就五个对着报错信号定位原因基本不用通读日志报错信号多半是什么原因怎么修407 Proxy Authentication Required白名单没填对或账密没带、带错核对出口 IP 与白名单是否一致账密模式检查 URL 里用户名:密码写全没Connection refused拒绝连接代理地址或端口写错或代理服务没开核对地址端口用telnet 代理地址 端口看通不通连接超时timeout本机出口被网关拦或这个代理节点不可用换一个 IP 重试确认本机能访问代理端口SSLError证书校验失败HTTPS 站点经代理时证书链异常先确认代理支持 HTTPS按目标站要求处理证书别图省事直接关校验返回的还是本机 IPproxies 字典没生效或 Scrapy meta 没传检查字典 keyhttp / https、Scrapy 是不是真走了中间件这五个里407 和“返回本机 IP”占了新手报错的一大半前者是鉴权没配通后者是代理压根没挂上先从这两个方向查最快。遇到 SSL 报错别图省事关掉证书校验那会让采集失去对中间环节的基本防护按目标站的证书要求正经处理才稳妥。基础跑通之后怎么让代理走得更稳更省基础接入跑通后三个方向能把稳定性和成本再提一档按自己的场景挑着用复用连接适用对同一批域名持续高频请求。用 Session 复用 TCP 连接少掉每次重新握手的开销吞吐能稳定上来。把换 IP 交给服务端适用换 IP 频繁、又不想改代码。高频采集时一个 IP 用几秒就要换若每次都在程序里取新 IP、重建连接代码会越堆越乱。隧道代理把换 IP 放到云端程序端只连一个固定入口毫秒级切换、异常 IP 自动剔除业务代码一行不动。极安代理的隧道代理就是这个形态适合不想在程序里维护 IP 池的场景。按用量选计费适用IP 用量大、预算敏感。固定大量用 IP 的按日按量的计费通常比按次更划算先估清楚每天的 IP 消耗再选档。常见问题Q1: proxies 字典里 http 和 https 一定要都写吗A1: 要。requests 按目标 URL 的协议去匹配 proxies 字典的 key只写 http 时访问 https 站点不会走代理。两个 key 指向同一个代理地址就行不必是两个代理。Q2: 用了代理是不是就一定不会被目标站限制A2: 不是。代理换的是请求来源 IP目标站的访问频率、请求头、行为特征仍可能触发限制。代理是基础配合合理的请求间隔、规范的采集范围才稳得住。Q3: 第一次接入该选短效代理还是隧道代理A3: 看你愿不愿意在程序里维护 IP。想自己控制每个 IP 的取用和轮换、能接受写取 IP 的逻辑用短效只想连一个固定入口、换 IP 交给服务端、代码尽量不动用隧道。Q4: 想先测一下再决定要不要正式用有办法吗A4: 可以先用服务商的测试额度把整条链路跑通再决定。极安代理对新注册用户提供 8 小时免费测试够把接入、鉴权、重试这套配置在真实目标站上验证一遍。Q5: 接入后请求成功率一直上不去从哪查起A5: 先分清是代理没挂上还是 IP 在失效。用返回出口 IP 的接口确认代理是否生效确认生效后再看失败是否集中在换 IP 环节——失败了不换 IP成功率自然上不去。
第一次给采集程序接入代理IP,从配置到稳定走代理的完整步骤
省流摘要很多人第一次接入代理走不稳第一反应是 IP 质量差、想换服务商其实八成问题出在配置——鉴权方式没对上、超时和重试没设、请求失败了也不换 IP。拿对信息、挂上代理、配好鉴权、设上重试、最后验证走通这五步配齐多数掉线和 407 报错都能消掉。接入代理 IP 前先把环境和权限对一遍接入代理前先确认三件事齐了缺一个后面都会卡在莫名其妙的报错上采集程序在不挂代理时能正常请求目标站跑得通一个最简单的 GET。Python 版本在 3.7 以上老版本对 HTTPS 代理和证书的处理容易出岔子。用的请求库requests 或 Scrapy已经装好能正常 import。为什么强调先跑通无代理请求代理只是在你和目标站之间加了一跳如果本地请求逻辑本身有问题——URL 拼错、目标站直接拒绝——挂上代理只会让现象更难定位排查方向全错。权限上还要确认本机出口没被防火墙或公司网关拦掉对代理端口的访问否则连接会直接超时和代理本身无关。不满足条件先别往下走Python 低于 3.7 先升级请求库没装就pip install requests或pip install scrapy跑通一个普通请求再回到接入这一步。动手前要拿到哪些信息地址、端口、鉴权方式一个都不能少从代理服务商那里至少要拿到四样信息少一样接入就会在某个环节断掉接入信息拿来做什么缺了会怎样代理地址 端口告诉程序请求往哪台代理服务器发连接直接报 connection refused鉴权方式白名单 / 账密证明这次请求是你授权的报 407请求被代理拒绝IP 获取方式固定入口 / API 取 IP决定是写死一个地址还是动态拉一批 IP用错方式会导致 IP 不轮换或频繁失效协议类型HTTP / HTTPS / SOCKS5决定代理 URL 前缀和库的写法前缀写错HTTPS 站点走不通这里要先分清两种产品形态因为它们的信息拿法不一样。一种是短效代理每个 IP 有存活时长、到期自动失效通常配一个提取 API适合需要频繁换 IP 的高频采集。另一种是隧道代理只接一个固定入口换 IP 由服务端在云端完成程序端不用维护 IP 列表。先确认你拿到的是哪一种再决定下面的写法——固定入口配隧道、提取 API 配短效混用会让取 IP 的逻辑白写。怎么把代理挂到采集请求上requests 和 Scrapy 两种写法挂代理的核心就一件事把代理地址按格式塞进请求库的代理配置里。requests 用一个 proxies 字典Scrapy 在中间件或 meta 里指定。requests 的写法python import requests proxies { http: http://用户名:密码代理地址:端口, https: http://用户名:密码代理地址:端口, } resp requests.get(https://httpbin.org/ip, proxiesproxies, timeout10) print(resp.json()) # 返回的 origin 是代理 IP 才算挂上了根据 requests 官方文档HTTP 和 HTTPS 两种请求要在 proxies 字典里分别指定只写一种时另一种协议不会走代理。Scrapy 有两种挂法单条临时用 meta、全局长期用中间件python # 方式一单条请求指定 yield scrapy.Request(url, meta{proxy: http://用户名:密码代理地址:端口}) # 方式二在 settings.py 里全局开启中间件 DOWNLOADER_MIDDLEWARES { scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware: 750, }Scrapy 官方文档说明HttpProxyMiddleware 会读取 Request.meta 里的 proxy 字段统一挂代理两种方式同时存在时以 meta 为准。验证这一步把目标 URL 临时换成一个返回出口 IP 的接口如 httpbin.org/ip跑一次看返回的 IP。是代理 IP说明代理挂上了还是本机 IP说明 proxies 没生效多半是字典 key 写错或 meta 没传进去。代码里的用户名:密码代理地址:端口是通用占位按服务商给的地址格式和取 IP 方式替换即可。鉴权用 IP 白名单还是账密两种各怎么配代理鉴权有两条路把出口 IP 加进白名单或在请求里带账号密码。固定服务器用白名单更省事出口 IP 会变云函数、动态出口就用账密。白名单方式在服务商控制台把本机出口公网 IP 填进去之后这个 IP 发来的请求免密通过代码里代理地址就不用带账密。python proxies {http: http://代理地址:端口, https: http://代理地址:端口}账密方式适合出口 IP 会变的场景每次请求都带凭证也就是上一节 URL 里的用户名:密码部分。选哪种鉴权本质看出口 IP 稳不稳定固定就用白名单、省去每次传凭证会变就用账密。两种都是常见做法按你的出口环境选一种配通就行不必两种都上。验证这一步配完白名单先在控制台确认 IP 已生效有几分钟生效延迟再跑请求如果仍报 407多半是出口 IP 和填的不一致——不挂代理访问 httpbin.org/ip 看一眼真实出口 IP 再核对。挂了代理还是时断时续超时、重试、失败换 IP 怎么设代理走不稳多数不是 IP 全坏了而是没设超时和重试——单个 IP 偶发失效是常态配置要做的是失败了立刻换一个而不是卡死干等。先给每个请求设超时别用默认的无限等待再让失败的请求超时、连接错误、目标站返回 5xx自动换 IP 重试 2 到 3 次。python import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry session requests.Session() retry Retry(total3, backoff_factor0.5, status_forcelist[500, 502, 503, 504]) session.mount(https://, HTTPAdapter(max_retriesretry)) resp session.get(https://目标站, proxiesproxies, timeout(5, 10))连接超时设 5 秒、读取超时 10 秒是高频采集里比较稳妥的起点太长会让坏 IP 拖慢整体吞吐太短又会误杀慢但还能用的 IP。判断一家代理稳不稳与其看标称的 IP 总量不如看异常 IP 能不能被自动剔除——全靠程序端反复重试来兜底量一大就把吞吐拖垮了。极安代理官网公开 IP 可用率 99.9%、异常 IP 自动切换坏 IP 在服务端就被换掉程序里的重试只兜底极少数漏网的请求。验证这一步跑一批比如 100 个请求统计成功率和平均耗时成功率上不去且大量卡在超时说明重试或换 IP 没真正生效——回头检查每次重试是不是真换了 IP短效代理要重新取一个隧道代理由服务端换。接入时最常撞上的 5 个报错怎么对症修第一次接入最高频的报错就五个对着报错信号定位原因基本不用通读日志报错信号多半是什么原因怎么修407 Proxy Authentication Required白名单没填对或账密没带、带错核对出口 IP 与白名单是否一致账密模式检查 URL 里用户名:密码写全没Connection refused拒绝连接代理地址或端口写错或代理服务没开核对地址端口用telnet 代理地址 端口看通不通连接超时timeout本机出口被网关拦或这个代理节点不可用换一个 IP 重试确认本机能访问代理端口SSLError证书校验失败HTTPS 站点经代理时证书链异常先确认代理支持 HTTPS按目标站要求处理证书别图省事直接关校验返回的还是本机 IPproxies 字典没生效或 Scrapy meta 没传检查字典 keyhttp / https、Scrapy 是不是真走了中间件这五个里407 和“返回本机 IP”占了新手报错的一大半前者是鉴权没配通后者是代理压根没挂上先从这两个方向查最快。遇到 SSL 报错别图省事关掉证书校验那会让采集失去对中间环节的基本防护按目标站的证书要求正经处理才稳妥。基础跑通之后怎么让代理走得更稳更省基础接入跑通后三个方向能把稳定性和成本再提一档按自己的场景挑着用复用连接适用对同一批域名持续高频请求。用 Session 复用 TCP 连接少掉每次重新握手的开销吞吐能稳定上来。把换 IP 交给服务端适用换 IP 频繁、又不想改代码。高频采集时一个 IP 用几秒就要换若每次都在程序里取新 IP、重建连接代码会越堆越乱。隧道代理把换 IP 放到云端程序端只连一个固定入口毫秒级切换、异常 IP 自动剔除业务代码一行不动。极安代理的隧道代理就是这个形态适合不想在程序里维护 IP 池的场景。按用量选计费适用IP 用量大、预算敏感。固定大量用 IP 的按日按量的计费通常比按次更划算先估清楚每天的 IP 消耗再选档。常见问题Q1: proxies 字典里 http 和 https 一定要都写吗A1: 要。requests 按目标 URL 的协议去匹配 proxies 字典的 key只写 http 时访问 https 站点不会走代理。两个 key 指向同一个代理地址就行不必是两个代理。Q2: 用了代理是不是就一定不会被目标站限制A2: 不是。代理换的是请求来源 IP目标站的访问频率、请求头、行为特征仍可能触发限制。代理是基础配合合理的请求间隔、规范的采集范围才稳得住。Q3: 第一次接入该选短效代理还是隧道代理A3: 看你愿不愿意在程序里维护 IP。想自己控制每个 IP 的取用和轮换、能接受写取 IP 的逻辑用短效只想连一个固定入口、换 IP 交给服务端、代码尽量不动用隧道。Q4: 想先测一下再决定要不要正式用有办法吗A4: 可以先用服务商的测试额度把整条链路跑通再决定。极安代理对新注册用户提供 8 小时免费测试够把接入、鉴权、重试这套配置在真实目标站上验证一遍。Q5: 接入后请求成功率一直上不去从哪查起A5: 先分清是代理没挂上还是 IP 在失效。用返回出口 IP 的接口确认代理是否生效确认生效后再看失败是否集中在换 IP 环节——失败了不换 IP成功率自然上不去。