
手把手教你用Python Requests玩转代理IP配置
搞网络请求的老铁们应该都遇到过被目标网站封IP的情况吧?这时候就需要代理IP来救场了。今天咱们就拿Python Requests库开刀,教你们怎么把代理IP配置得明明白白。注意看重点,特别是认证配置那部分,很多教程都没讲透。
基础配置:给Requests穿个马甲
先上段实用代码,把下面这个模板存好:
import requests
proxies = {
'http': 'http://用户名:密码@gateway.ipipgo.com:9021',
'https': 'http://用户名:密码@gateway.ipipgo.com:9021'
}
response = requests.get('目标网址', proxies=proxies, timeout=10)
这里注意用户名密码要和代理服务商给你的完全一致,大小写都不能错。ipipgo的用户名一般是”业务代码_随机字符”的格式,别自己瞎编。那个9021端口是他们家动态住宅代理的专用端口,别用错了。
认证失败的五大坑
新手最容易栽在认证配置上,这里列几个常见雷区:
| 症状 | 解决方法 |
|---|---|
| 407代理认证错误 | 检查用户名密码是否包含特殊符号需要URL编码 |
| 连接超时 | 把http换成https协议试试,或者换个可用端口 |
| 反复要求认证 | 在请求头里加’Proxy-Connection’: ‘keep-alive’ |
| SSL证书报错 | 给requests.get()加上verify=False参数(慎用) |
| 突然连不上 | 可能是IP被封了,设置自动更换IP的机制 |
实战技巧:让代理稳如老狗
推荐用ipipgo的动态住宅代理,他们家有个独门绝技——每请求一次自动换IP。配置起来也简单:
from requests.auth import HTTPProxyAuth
auth = HTTPProxyAuth('业务代码', '动态密钥')
response = requests.get(url, proxies=proxies, auth=auth)
这个动态密钥在ipipgo后台能实时获取,比固定密码安全多了。记得设置超时参数别超过15秒,网站响应慢就果断放弃换下一个IP。
QA时间:新手必看
Q:代理突然失效怎么办?
A:先ping一下gateway.ipipgo.com看网络通不通,再用不带认证的请求测试,如果返回407说明代理本身没问题
Q:怎么提高请求速度?
A:把请求头里的Accept-Encoding改成gzip,能压缩传输数据。ipipgo的BGP线路本身就低,别自己瞎优化
Q:遇到网站验证码咋整?
A:说明当前IP被标记了,立即切换IP。ipipgo的流量池有千万级IP储备,换个地区参数重新请求就行
Q:HTTPS网站请求失败?
A:把代理协议从http换成https,或者上socks5代理。ipipgo的socks5端口是9011,记得配套改认证方式
升级玩法:自动化代理管理
给老鸟们推荐个骚操作——用会话对象管理代理:
session = requests.Session()
session.proxies.update(proxies)
session.auth = HTTPProxyAuth('业务代码', '动态密钥')
后续所有请求自动带代理
response1 = session.get('网址1')
response2 = session.post('网址2')
这样不仅能复用TCP连接,还能自动处理cookie。配合ipipgo的按量计费套餐,做爬虫项目能省不少银子。
最后提醒下,选代理服务商要看准三点:IP池规模、认证协议支持度、响应速度。像ipipgo这种支持http/https/socks5多协议,又有专属客户端工具的,用起来确实省心。他们家最近还出了个智能路由功能,能自动选择最快的接入节点,需要高并发的可以试试。

