
手把手教你给爬虫挂代理IP
大伙儿做数据抓取时,最头疼的就是被目标网站封IP。这时候就需要给爬虫套个”马甲”——也就是代理IP。今天咱就拿最常见的Python爬虫举例,教你怎么给程序穿马甲。
第一步:搞到靠谱的代理IP
推荐用ipipgo家的动态住宅IP,7块多1GB流量挺划算。他们家的IP池子大,全球200多个国家的运营商资源,被封的概率低很多。重点说下怎么取IP:
import requests
从ipipgo的API获取代理
api_url = "https://api.ipipgo.com/getproxy"
params = {
"type": "dynamic",
"count": 5,
"protocol": "http"
}
response = requests.get(api_url, params=params)
proxies = response.json()['data']
这段代码能一次性拿5个动态住宅IP,注意实际使用时要替换成自己的API密钥。他们家客户端也能直接导出代理列表,对新手更友好。
第二步:给requests库挂代理
假设已经拿到了代理IP,最常用的配置方法是这样的:
session = requests.Session()
proxy = "http://用户名:密码@ip地址:端口"
try:
response = session.get('目标网址', proxies={'http': proxy}, timeout=10)
print(response.text)
except Exception as e:
print(f"这个IP不好使了,换下一个:{str(e)}")
注意这里要填用户名密码(ipipgo后台能生成),别直接用裸IP。遇到超时或403错误就赶紧换IP,别死磕。
代理IP轮换技巧
单用一个IP容易被发现,得学会打游击战。这里有个简单的轮换方案:
from itertools import cycle
proxy_pool = cycle(proxies) 把获取的代理列表放进来
for page in range(1, 100):
current_proxy = next(proxy_pool)
try:
res = requests.get(url, proxies={'http': current_proxy})
处理数据...
except:
print(f"跳过失效代理:{current_proxy}")
这样会自动循环使用代理池里的IP。建议每成功请求3-5次就主动换IP,别等被封了才换。
常见翻车现场QA
Q:为啥挂了代理还是被封?
A:两个可能:1.目标网站检测到HTTP头异常 2.代理IP质量不行。建议在代码里加上随机User-Agent,同时换用ipipgo的静态住宅IP(虽然贵点但更稳定)
Q:代理IP显示成功但收不到数据?
A:八成是代理服务器没开白名单。去ipipgo后台把本机IP加入白名单,或者用他们家的客户端直连模式,这个最省事。
Q:不同网站需要换不同代理吗?
A:抓国内网站用本地运营商IP,海外网站建议用ipipgo的跨境专线。要是做谷歌爬虫,记得选他们家TK专线套餐。
套餐选择指南
根据业务需求选套餐(价格可能有变动,以官网为准):
| 业务类型 | 推荐套餐 | 日均成本 |
|---|---|---|
| 数据采集 | 动态住宅(标准) | 约0.25元/GB |
| 账号注册 | 静态住宅 | 约1.16元/IP |
| 海外爬虫 | 跨境专线 | 联系客服报价 |
最后提醒下,用代理IP要遵守网站的robots协议。遇到复杂反爬策略的话,可以直接找ipipgo的技术支持要定制方案,他们能根据具体业务配不同的IP组合,比自己瞎折腾强多了。

