You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy爬虫如何配置代理以访问仅支持代理访问的站点?

Scrapy 代理配置完整解决方案

下面提供三种常用的代理配置方案,可根据你的使用场景选择:

方案1:全局固定代理(最简单,适合单代理场景)

直接在settings.py中添加全局代理配置即可,无需修改其他代码:

# settings.py 中添加以下内容
HTTP_PROXY = 'http://username:password@myproxy:port'
HTTPS_PROXY = 'http://username:password@myproxy:port'

# 你之前配置的HttpProxyMiddleware保持启用即可
DOWNLOADER_MIDDLEWARES = {   
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100
}

配置完成后所有爬虫请求都会自动走该代理。


方案2:自定义代理中间件(适合动态切换代理、多代理池场景)

你之前写的process_start_requests方法仅会处理初始启动请求,后续爬取生成的新请求不会生效,需要修改为下载中间件的process_request方法:

  1. 打开middlewares.py,添加完整的自定义代理中间件类:
# middlewares.py
class CustomProxyMiddleware:
    def process_request(self, request, spider):
        # 给每个请求都添加代理信息
        request.meta['proxy'] = 'http://username:password@myproxy:port'
  1. 回到settings.py,注册你写的自定义中间件,优先级要高于自带的HttpProxyMiddleware:
# settings.py
DOWNLOADER_MIDDLEWARES = {
    # 替换为你自己的项目名,这里项目名是scrapy_crawler
    'scrapy_crawler.middlewares.CustomProxyMiddleware': 90,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100
}

方案3:单爬虫单独配置代理

如果仅需要给当前digtionary爬虫使用代理,不需要全局生效,可以直接重写爬虫的相关方法:

# digtionary.py
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class ImdbCrawler(CrawlSpider):
    name = 'digtionary'
    allowed_domains = ['www.mywebsite.com']
    start_urls = ['https://mywebsite.com/digital/pages/start.aspx#']
    rules = (
        Rule(LinkExtractor(), process_request='add_proxy'),
    )

    # 给初始请求加代理
    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, meta={'proxy': 'http://username:password@myproxy:port'})
    
    # 给Rule生成的所有新请求加代理
    def add_proxy(self, request, spider):
        request.meta['proxy'] = 'http://username:password@myproxy:port'
        return request

注意事项

  • 请将配置中的username、password、myproxy、port替换为你实际的代理认证信息与地址端口
  • 如果你使用的是SOCKS代理,需要先安装依赖:pip install pysocks,代理地址格式改为socks5://username:password@myproxy:port
  • 调试时可以在运行爬虫时加参数scrapy crawl digtionary -s LOG_LEVEL=DEBUG,查看请求日志确认代理是否生效

内容的提问来源于stack exchange,提问作者NShini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:48:04