
手把手教你用Python+代理IP薅数据
搞爬虫的兄弟都懂,网站反爬机制越来越狠。上周有个做电商的朋友跟我吐槽,他们用Python抓价格数据,结果刚跑半小时IP就被封得死死的。这时候就该祭出大杀器——代理IP,这玩意儿就像给爬虫穿上了隐身衣。
代理IP到底怎么玩?
简单来说,代理IP就是个中间商。假设你要访问A网站,先连上ipipgo的代理服务器,用他们的IP地址去访问,这样对方网站看到的就不是你本机的真实IP了。好比你去超市买烟,让邻居老王帮你去买,收银员只会记住老王的样貌。
import requests
proxies = {
'http': 'http://username:password@gateway.ipipgo.com:9020',
'https': 'http://username:password@gateway.ipipgo.com:9020'
}
response = requests.get('http://目标网站.com', proxies=proxies)
上面这段代码就是最基础的代理设置,注意要把username和password换成自己在ipipgo后台拿到的认证信息。他们家代理有动态住宅IP和静态机房IP两种套餐,做数据抓取建议选动态的,IP池更大更安全。
避开代理IP的三大坑
1. IP存活时间:有些廉价代理号称百万IP池,实际每个IP只能用两三分钟。ipipgo的独享代理能做到30分钟稳定不断线,足够完成复杂的数据采集任务。
2. 请求头泄露:别以为用了代理就万事大吉,记得在代码里加上随机User-Agent。这里推荐个取巧的办法,直接调用ipipgo的浏览器指纹伪装功能,省得自己折腾。
3. 连接超时设置:建议给requests加上timeout参数,遇到卡死的代理及时切换。实测用ipipgo的话设5秒超时足够,他们家响应速度在行业里算第一梯队。
实战技巧:轮换IP大法
对付特别严的反爬系统,得学会自动切换IP。这里推荐用ipipgo的API动态获取代理,搭配Python的retrying模块食用更佳:
from retrying import retry
import random
def get_proxy():
调用ipipgo的API获取最新代理
proxy_list = requests.get('https://api.ipipgo.com/dynamic').json()
return random.choice(proxy_list)
@retry(stop_max_attempt_number=3)
def crawl_page(url):
current_proxy = get_proxy()
try:
return requests.get(url, proxies=current_proxy, timeout=8)
except:
print(f"IP {current_proxy} 歇菜了,换下一个!")
raise
常见问题QA
Q:用了代理还是被封怎么办?
A:先检查请求频率是不是太高,建议控制在3-5秒/次。如果还不行,联系ipipgo客服开通高匿代理服务,彻底隐藏爬虫特征。
Q:代理IP速度慢影响效率?
A:在ipipgo后台开启智能路由功能,系统会自动分配物理位置最近的节点。实测延迟能降60%以上,比自建代理池省心多了。
Q:需要抓取大量数据怎么计费划算?
A:他们家流量包套餐比按IP计费便宜40%,适合长期稳定爬取。首次注册还送20G测试流量,足够跑个小项目试试水。
为什么选ipipgo?
最后说点实在的,我对比过市面上七八家代理服务,ipipgo有三大杀招:
| 优势 | 具体表现 |
|---|---|
| IP纯净度 | 自建机房+运营商合作,拒绝二手IP |
| 协议支持 | Socks5/HTTP全兼容,适配各种爬虫框架 |
| 售后服务 | 7×24小时技术支持,响应速度贼快 |
最近他们搞了个代理IP压力测试工具,能模拟高并发场景检测IP质量。建议正式开搞前先用这个工具跑一遍,比盲目上项目靠谱得多。

