爬虫代理怎么用?从获取到配置,新手上手的完整流程

爬虫代理怎么用?从获取到配置,新手上手的完整流程

发布时间: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直供

悟空代理注册送ip
免费试用

客服

在线客服:

:3329077489

:18328351249 / 13316588914

:service@wukongdaili.com

官方客服微信二维码 官方客服

技术客服微信二维码 技术客服