
一、爬虫为啥死活不走代理?先看这几个坑
很多兄弟在用requests库时,明明配了代理IP,结果一抓包发现还是自己的真实IP。这事儿就跟炒菜忘了开火一样尴尬。最常见的情况是代码里写了代理配置,但实际请求时被系统环境变量截胡了。比如有些开发环境默认会走全局代理,这时候代码里的配置就失效了。
举个真实案例:上周有个做电商的朋友,用requests设置了ipipgo的动态住宅代理,但查日志发现IP根本没变。后来发现是他在测试时开了Charles抓包工具,这玩意儿会自动设置系统代理,结果代码里的配置被覆盖了。
错误示例:环境变量代理和代码代理冲突
import requests
proxies = {
'http': 'http://username:password@proxy.ipipgo.cc:8080',
'https': 'http://username:password@proxy.ipipgo.cc:8080'
}
如果系统环境变量有HTTP_PROXY设置,这里的配置会失效!
response = requests.get('http://example.com', proxies=proxies)
二、requests代理配置三大雷区
这里给大伙儿说几个容易栽跟头的地方:
1. 协议没配对
比如目标网站是HTTPS协议,但你只配置了http的代理,这时候就会裸奔。建议用万能配置法:
proxies = {
'http': 'http://用户秘钥@proxy.ipipgo.cc:端口',
'https': 'http://用户秘钥@proxy.ipipgo.cc:端口'
}
2. 认证信息写错格式
很多兄弟直接把控制台看到的账号密码复制过来,结果认证失败。ipipgo的代理认证是@IP:端口格式,注意别漏了冒号:
3. 超时设置不合理
用代理IP时一定要设置timeout参数,特别是动态住宅IP。建议这样配置:
response = requests.get(url, proxies=proxies, timeout=(3, 10))
三、绝对生效的配置方案
这里给个万用模板,照着改基本不会出错:
import requests
强制清除系统代理干扰
session = requests.Session()
session.trust_env = False 关键!关闭环境变量代理
proxies = {
"http": "socks5://用户秘钥@gateway.ipipgo.cc:20000",
"https": "socks5://用户秘钥@gateway.ipipgo.cc:20000"
}
建议加上重试机制
from requests.adapters import HTTPAdapter
session.mount('http://', HTTPAdapter(max_retries=3))
session.mount('https://', HTTPAdapter(max_retries=3))
response = session.get('https://httpbin.org/ip', timeout=5)
IV. Botiquín de primeros auxilios para problemas comunes
| sintomático | Métodos de cribado | prescripción |
|---|---|---|
| 代理配置了但IP没变 | 1. 检查session是否继承环境变量 2. 用httpbin.org/ip测试 |
设置session.trust_env = False |
| 频繁出现407认证错误 | 1. 检查@符号是否被转义 2. 试用URL编码后的密码 |
密码包含特殊符号时用urllib.parse.quote()处理 |
| 连接超时率突然升高 | 1. 切换ipipgo的不同接入点 2. 检查本地网络防火墙 |
更换为静态住宅代理套餐 |
五、选对代理类型很重要
根据爬虫场景推荐这样选型:
动态住宅代理(标准版)
适合需要频繁更换IP的场景,比如数据采集、价格监控。ipipgo的动态代理池每请求自动切换IP,9000万+资源池根本用不完。
静态住宅代理(企业版)
需要长期稳定IP的选这个,比如自动填表、账号管理。50万+真实住宅IP,每个IP能用24小时,成功率直接拉满。
最近有个做海外电商的朋友,用静态代理做店铺管理,半年都没触发平台的风控。他们现在20个店铺账号共用5个ipipgo的静态IP,平均每个IP月成本才十几块钱。
六、专家级调试技巧
遇到疑难杂症时可以这样排查:
1. 在代码里强制指定DNS解析:
proxies = {
'http': 'http://代理账号@8.8.8.8:端口',
'https': 'http://代理账号@8.8.8.8:端口'
}
2. 开启详细日志调试:
importar logging
logging.basicConfig(level=logging.DEBUG)
3. 用curl命令快速测试代理是否生效:
curl -x http://账号:密码@gateway.ipipgo.cc:20000 https://httpbin.org/ip
最后说个冷知识:ipipgo的SOCKS5代理支持UDP协议,做视频采集的兄弟可以试试他们的跨境专线,延迟能压到2ms以内。不过具体怎么玩得看业务需求,别拿大炮打蚊子就行。

