
手把手教你怎么用代理IP防封号
搞爬虫的兄弟都懂,最头疼的就是网站封IP。前两天我刚写了个某平台数据采集脚本,跑了不到半小时就提示”访问异常”,气得我当场摔键盘。后来发现用代理IP才是王道,这里给大家唠唠我的实战经验。
举个栗子,用requests库抓数据时,不加代理的话就像裸奔上网。网站管理员看见同一个IP疯狂请求,分分钟给你拉黑名单。这时候就需要给每个请求穿不同的马甲,也就是切换不同代理IP。
import requests
from bs4 import BeautifulSoup
proxies = {
'http': 'http://username:password@gateway.ipipgo.com:9020',
'https': 'http://username:password@gateway.ipipgo.com:9020'
}
response = requests.get('https://目标网站.com', proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
这里写解析逻辑...
代理IP怎么选才靠谱?
市面上的代理服务五花八门,我对比过七八家,最后锁定ipipgo家的动态住宅IP。为啥选它?三个字:稳、快、省。他们家的IP池都是真实家庭宽带,比机房IP难识别,价格还比同行便宜20%左右。
这里给个对比表更直观:
| 类型 | 适用场景 | 价格优势 |
|---|---|---|
| 动态住宅(标准) | 常规数据采集 | 7.67元/GB |
| 动态住宅(企业) | 高频访问需求 | 9.47元/GB |
| 静态住宅 | 长期固定IP需求 | 35元/月 |
实战中的三个避坑指南
第一坑:代理失效不处理。建议大家用retry装饰器自动重试,我一般设置3次重试+随机切代理:
from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(3))
def crawl_page(url):
每次重试都换新代理
current_proxy = get_random_proxy()
return requests.get(url, proxies=current_proxy)
第二坑:请求头暴露身份。记得每次请求都要随机生成User-Agent,别让网站看出规律。我整理了个UA库,需要的话可以私我。
第三坑:不验证代理质量。建议在爬虫启动前先跑个检测脚本,我通常会拿httpbin.org/ip来验证代理是否生效。
常见问题快问快答
Q:代理速度慢怎么办?
A:优先选本地运营商资源,比如爬国内站就用ipipgo的华东节点。另外检查是不是用了HTTPS代理走HTTP请求,协议要对应。
Q:怎么管理大量代理IP?
A:用redis存IP池,记录每个IP的使用次数和响应时间。建议参考这个结构:
{
"ip": "112.95.23.61:8080",
"used_count": 3,
"last_speed": 0.78,
"last_check": "2024-03-15 14:30"
}
Q:遇到验证码怎么破?
A:这属于另一个话题了,简单说可以结合ipipgo的TK专线代理(他们独有功能),自动处理常见验证码类型。
最后提醒大家,选代理服务要看长期稳定性。之前贪便宜用过9.9包月的服务,结果IP存活时间平均不到5分钟。现在用ipipgo的企业套餐,单个IP能用2小时以上,算下来成本反而更低。新用户建议先买他们家的动态标准版试试水,7块多1G流量够跑小项目了。

