IP 是协议模拟的半壁江山
签名算法逆得再完美,单 IP 高频请求照样被封。代理池是规模化的基础设施,但代理类型选错,钱花了一倍效果打对折。先把三种主流代理的本质搞清楚。
三种代理的本质差异
1. 数据中心代理(机房 IP)
- 来源:阿里云/AWS 等机房 IP 段
- 特点:便宜(几毛钱/个)、快、稳定
- 致命伤:IP 段公开可查,风控直接按 ASN/段封——电商、社交类站点基本秒识别
- 适用:防护弱的站点、对 IP 质量不敏感的业务
2. 短效代理(动态转发)
- 模式:给你一个固定入口,后端 IP 池自动轮换(每分钟/每请求换 IP)
- 特点:IP 量大(百万级池子),按量计费
- 坑:IP 质量混杂(机房+住宅混合),且每次请求换 IP 对"需要登录态"的业务是灾难——登录态和 IP 跳变是风控强特征
- 适用:无登录态的公开数据抓取
3. 住宅代理(真人 IP)
- 来源:真实家庭宽带 IP(P2P 网络或运营商合作)
- 特点:最贵(按流量计费,几美元/GB)、最像真人
- 关键参数:会话保持(sticky session)——同一个出口 IP 能保持 10-30 分钟,登录态业务必备
- 适用:高风控站点(电商、社交)、登录态业务
选型决策树
需要登录态?
├─ 是 → 住宅代理 + 会话保持(IP 与账号绑定)
└─ 否 → 目标站点风控强?
├─ 强(电商/社交) → 住宅代理轮换
├─ 中(资讯/公开数据) → 短效代理
└─ 弱(政府/企业站) → 数据中心代理精髓一:会话保持是登录态业务的命脉
住宅代理的 sticky session 用法:
# 主流住宅代理的会话保持语法(用户名里编码会话 id)
proxy = 'http://user-session-sess123:pass@proxy.provider.com:8080'
# sess123 相同的请求走同一出口 IP,保持 10-30 分钟
# 账号池管理:每个账号固定一个 session id
account_proxy = f'http://user-session-{account_id}:pass@proxy...'账号与 session id 永久绑定——这个账号永远从"同一个城市同一个运营商"出现,符合真人特征。
精髓二:代理质量自检清单
接入代理后先自检,别直接上生产:
def check_proxy(proxy):
# 1. 匿名度:是否泄露真实 IP / 代理特征头
r = requests.get('https://httpbin.org/headers', proxies=proxy)
headers = r.json()['headers']
assert 'X-Forwarded-For' not in headers # 透明代理直接弃用
# 2. IP 类型:数据中心还是住宅
r = requests.get('https://ipinfo.io/json', proxies=proxy)
# 看 org 字段:ISP 名(住宅)vs 机房名(数据中心)
# 3. 目标站点实测:直接请求目标站的风控探测页
r = requests.get('https://target.com/', proxies=proxy)
# 状态码和响应长度异常 = IP 已在黑名单精髓三:轮换策略的学问
- 按请求轮换:每个请求换 IP——只适合无状态公开数据
- 按时间轮换:每 N 分钟换——适合浏览类业务
- 按失败轮换:请求失败才换——最省 IP 的策略,配合失败计数器
- 账号绑定不轮换:登录态业务的唯一正确解
轮换频率不是越高越好——真人不会一秒钟从美国跳到日本,IP 跳变速度和地理距离要符合物理常识。
总结
- 机房 IP 便宜但秒识别,住宅 IP 贵但像真人,按业务风控强度选型
- 登录态业务必须住宅代理 + 会话保持 + 账号绑定
- 接入先自检:匿名度、IP 类型、目标站黑名单
- 轮换策略匹配业务形态,IP 跳变要符合物理常识
交流微信:run1255