爬虫代理怎么用?从获取到配置,新手上手的完整流程
发布时间:2026-05-19 阅读:40
第一次用爬虫代理,可能会遇到一堆问题:代理地址填哪、怎么验证代理有没有生效、请求总是失败怎么办。这篇文章从零开始,把爬虫用代理IP的完整流程串一遍。
第一步:拿到代理信息
买完代理服务后,你会收到类似这样的信息:
代理地址:proxy.example.com
端口:8080
用户名:your_username
密码:your_password
不同的代理产品,拿到的信息格式略有不同:
- 隧道代理:通常给你一个固定的代理地址和端口,IP自动切换,不用手动管理IP列表
- 静态住宅IP:给你具体的IP地址和端口,这个IP长期不变
- API接口提取:提供一个API地址,每次调用返回可用的代理IP列表
隧道代理对于爬虫新手最友好——不用写IP池管理逻辑,服务商在服务端自动完成IP轮换。悟空代理的隧道代理产品就是一个固定入口,每次请求自动分配新IP。
第二步:用 requests 配置代理
Python 爬虫最常用的库是 requests。配置代理只需要一行字典参数:
import requests
proxy = {
"http": "http://username:password@proxy.example.com:8080",
"https": "http://username:password@proxy.example.com:8080"
}
response = requests.get("https://httpbin.org/ip", proxies=proxy, timeout=10)
print(response.json()) # 应该返回代理的IP,不是你本机IP
如果是隧道代理,用户名密码认证方式就是上面的写法。有些服务商也用IP白名单认证,那就把爬虫服务器的出口IP加到控制台白名单里,代码里只需要配代理地址:
proxy = {
"http": "http://proxy.example.com:8080",
"https": "http://proxy.example.com:8080"
}
第三步:验证代理是否生效
配完代理后先别急着跑爬虫,花一分钟验证一下:
import requests
# 不带代理,先看本机IP
my_ip = requests.get("https://httpbin.org/ip", timeout=10).json()
print(f"本机IP:{my_ip['origin']}")
# 带上代理,看出去的是不是代理IP
proxy_ip = requests.get("https://httpbin.org/ip", proxies=proxy, timeout=10).json()
print(f"代理IP:{proxy_ip['origin']}")
# 两个IP不一样,说明代理生效了
if my_ip['origin'] != proxy_ip['origin']:
print("✅ 代理配置成功")
else:
print("❌ 代理未生效,检查配置")
第四步:在 Scrapy 中配置代理
如果你用 Scrapy 框架,可以通过中间件配置代理。在 middlewares.py 中:
class ProxyMiddleware:
def process_request(self, request, spider):
request.meta['proxy'] = "http://username:password@proxy.example.com:8080"
然后在 settings.py 中启用这个中间件,设置 DOWNLOADER_MIDDLEWARES 即可。
Scrapy 的代理中间件还可以做得更复杂——比如从多个代理中随机选取、对失败的请求自动换IP重试。这些属于进阶内容,新手先用固定配置跑通即可。
第五步:处理常见报错
用代理爬虫最常见的三种报错和解决思路:
报错1:Connection refused / Timeout。 代理地址填错,或者代理服务不可用。先检查地址和端口是否正确,再用 curl 测试连通性:
curl -x http://username:password@proxy.example.com:8080 https://httpbin.org/ip
报错2:407 Proxy Authentication Required。 用户名或密码错误。检查账号信息,注意大小写。
报错3:状态码 403 / 目标网站返回"访问被拒绝"。 说明代理IP被目标网站拦截了。可能原因:
- 请求频率太高 → 降低请求间隔,比如每请求间隔2-5秒
- IP质量不好 → 尝试换一个IP或更换代理服务商
- 缺少请求头伪装 → 加上 User-Agent、Referer 等常见请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url, proxies=proxy, headers=headers, timeout=10)
哪些方式不适合爬虫新手
不要用免费代理。 免费代理绝大多数是透明代理,会暴露你的真实IP;而且速度极慢、不稳定,一个请求要等十几秒甚至直接失败。
不要一开始就自己搭代理池。 搭建、验证、维护一个可靠的代理池需要大量代码和运维工作。新手应该先用付费代理服务跑通流程,理解了代理的工作机制后,再考虑是否需要自己搭建。
总结
爬虫用代理的正确姿势:拿到代理信息 → 用 requests 快速验证 → 确认代理生效 → 加上合理的请求头和请求间隔 → 开始采集。先跑通一个简单Demo,再逐步扩展。
产品链接:悟空代理隧道代理IP — 固定入口自动换IP,爬虫新手的理想选择 | 悟空代理住宅静态IP — 1000万+IP池,全国300+城市ISP直供

