Scrapy 默认使用 HTTP 1.0

0 投票
1 回答
714 浏览
提问于 2025-04-17 02:04

看起来Scrapy默认使用的是HTTP 1.0。有没有设置可以让它使用HTTP 1.1来发送请求呢?

谢谢。

1 个回答

4

来自 http://dev.scrapy.org/wiki/ScrapyRecipes:

如何伪装请求以符合HTTP 1.1标准

你可以通过覆盖Scrapy的HTTP客户端工厂来实现这一点,使用以下(未记录的)设置:

DOWNLOADER_HTTPCLIENTFACTORY = 'myproject.downloader.HTTPClientFactory'

这是我项目中下载器模块的一个可能实现:

from scrapy.core.downloader.webclient import ScrapyHTTPClientFactory, ScrapyHTTPPageGetter

class PageGetter(ScrapyHTTPPageGetter):

    def sendCommand(self, command, path):
        self.transport.write('%s %s HTTP/1.1\r\n' % (command, path))

class HTTPClientFactory(ScrapyHTTPClientFactory):

    protocol = PageGetter           

撰写回答