IPIPGO ip代理 scrapy动态代理ip怎么设置?自定义下载中间件实战

scrapy动态代理ip怎么设置?自定义下载中间件实战

一、Scrapy代理中间件到底有啥用? 搞爬虫的兄弟应该都遇到过这种情况:刚跑几分钟程序,目标网站就给你IP封得死死的。这时候动态代理IP就是救命稻草,好比打游戏开无限复活挂,被封了自动换新马甲继续干。 …

scrapy动态代理ip怎么设置?自定义下载中间件实战

一、Scrapy代理中间件到底有啥用?

搞爬虫的兄弟应该都遇到过这种情况:刚跑几分钟程序,目标网站就给你IP封得死死的。这时候动态代理IP就是救命稻草,好比打游戏开无限复活挂,被封了自动换新马甲继续干。

Scrapy自带的代理设置太基础,应付不了复杂场景。咱们得自己写个下载中间件,这玩意儿就像快递公司的调度中心,能拦截每个请求,偷偷把快递员(请求)的工服(IP地址)给换了。

二、手把手造轮子:动态代理中间件

先准备个靠谱的代理池,这里用ipipgo的动态住宅代理举例。他们家的API返回格式长这样:

{
  "proxy": "123.45.67.89:8888",
  "expire_time": 1800
}

新建个middlewares.py文件,核心代码也就20行:

import random
import requests
from scrapy import signals

class DynamicProxyMiddleware:
    def __init__(self, api_url):
        self.api = api_url + "?apikey=YOUR_API_KEY"
        
    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            api_url=crawler.settings.get('IPIPGO_API')
        )

    def process_request(self, request, spider):
         捞个新鲜IP
        resp = requests.get(self.api)
        proxy = f"http://{resp.json()['proxy']}"
         重要!设置认证信息
        request.meta['proxy'] = proxy
        request.headers['Proxy-Authorization'] = 'Basic ' + base64.b64encode(b'username:password').decode()

三、配置文件的秘密参数

settings.py里激活咱们的中间件:

DOWNLOADER_MIDDLEWARES = {
    'your_project.middlewares.DynamicProxyMiddleware': 543,
}
IPIPGO_API = "https://api.ipipgo.com/getProxy"   官方接口地址

注意这两个坑:

1. 优先级数字别乱填,要比默认的HttpProxyMiddleware(750)小
2. 认证信息记得换成ipipgo后台给的账号密码

四、实战避坑指南

最近帮客户部署时遇到的真实问题:

症状 解决办法
连续返回407错误 检查Basic认证编码是否正确
IP存活时间太短 在API参数加&duration=600延长有效期
目标网站检测到WebDriver 开启ipipgo的header伪装功能

五、常见问题快问快答

Q:代理IP经常失效怎么办?
A:ipipgo的动态住宅套餐自带失败自动切换机制,建议把API调用频率设为每秒3-5次,他们家的IP池够大,经得起折腾。

Q:爬虫速度突然变慢?
A:检查是否开了CONCURRENT_REQUESTS并发控制,建议配合ipipgo的区域优化功能,把代理节点选在目标服务器所在地。

Q:需要处理CAPTCHA验证码?
A:在ipipgo控制台开启智能验证码绕过服务,这个要企业版套餐才支持,普通用户建议降低请求频率。

最后说个冷知识:用动态代理别开COOKIES_ENABLED,不然网站会发现不同IP用同一套cookie,立马露馅!如果业务必须带cookie,记得搭配ipipgo的会话保持功能,他们叫Sticky Session,能保证特定时间段内IP不变。

本文由ipipgo原创或者整理发布,转载请注明出处。https://www.ipipgo.com/ipdaili/47701.html
新增10W+美国动态IP年终钜惠

专业国外代理ip服务商—IPIPGO

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

13260757327

在线咨询: QQ交谈

邮箱: hai.liu@xiaoxitech.com

工作时间:周一至周五,9:30-18:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部
zh_CN简体中文