gpt4 book ai didi

python - 请求未通过中间件代理

转载 作者:行者123 更新时间:2023-12-01 00:59:29 36 4
gpt4 key购买 nike

我用 scrapy 编写了一个脚本,使请求通过自定义中间件,以便代理该请求。但是,该脚本似乎对该中间件没有任何影响。当我打印 response.meta 时,我得到 {'download_timeout': 180.0, 'download_slot': 'httpbin.org', 'download_latency': 0.9680554866790771} 清楚地表明我的请求没有通过自定义中间件传递。我使用 CrawlerProcess 来运行脚本。

蜘蛛包含:

import scrapy
from scrapy.crawler import CrawlerProcess

class ProxySpider(scrapy.Spider):
name = "proxiedscript"
start_urls = ["https://httpbin.org/ip"]

def parse(self,response):
print(response.meta)
print(response.text)

if __name__ == "__main__":
c = CrawlerProcess({'USER_AGENT':'Mozilla/5.0'})
c.crawl(ProxySpider)
c.start()

中间件包含:

class ProxiesMiddleware(object):
def process_request(self, request, spider):
request.meta['proxy'] = 'http://206.189.25.70:3128'
return request

我在 settings.py 中所做的更改:

DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
'proxyspider.middleware.ProxiesMiddleware': 100,
}

下图显示了项目层次结构: enter image description here

我应该进行哪些可能的更改才能通过中间件发出代理请求?

最佳答案

您需要检查此行的日志输出:[scrapy.middleware] INFO: Enabled downloader middlewares: 以获取事件下载器中间件的列表。如果您的中间件处于事件状态,它应该位于列表中。

据我所知,现在已弃用 scrapy.contrib 模块的使用。 Scrapy: No module named 'scrapy.contrib'

带有自定义中间件的代码几乎已准备好使用 scrapy 命令行工具
scrapy scrapy proxiedscript

然而,您的爬虫进程需要 read_projects_settings首先,如果需要将 scrapy 应用程序作为脚本启动。
或将 DOWNLOADER_MIDDLEWARES 设置定义为 CrawlerProcess 的参数:

c = CrawlerProcess({
'USER_AGENT':'Mozilla/5.0',
'DOWNLOADER_MIDDLEWARES':{
#'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,#deprecated in scrapy 1.6
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':110, #enabled by default
'proxyspider.middleware.ProxiesMiddleware': 100,
},
})

关于python - 请求未通过中间件代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928665/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com