scrapy set_extra_http_headers方法不起作用

jm2pwxwz  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(155)

我是新来的剧作家,并试图创建一个Scrapy中间件,使用剧作家提出请求,并返回一个response.body。
问题是,我试图发送头与我的请求,但这两个方法不为我工作:

browser_context.set_extra_http_headers(headers)

page.set_extra_http_headers(headers)

我的代码如下所示:

async def navigate_page(self, url, headers):
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        context = await browser.new_context()
        # At first I tried this method, but it didn't work, so I decided to set headers with page method
        # context.set_extra_http_headers(headers)
        page = await context.new_page()
        await page.set_extra_http_headers(headers)
        await page.goto(url)
        print(page.request.headers) # showed nothing, debug also showed empty headers
        page_content = await page.content()
        await browser.close()
        return page_content

我的 headers 变量如下所示:

{'referer': 'some url'}

我很确定我错过了一些东西,但我搜索了谷歌能找到的每一篇文章,绝望地来到这里:)

7ivaypg9

7ivaypg91#

我不知道你是否已经解决了这个问题。我也有类似的问题,我还不明白所有的语法。文档肯定是更好的Javascript。
我可以用下面的代码设置额外的HTTP头:

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True).new_context(ignore_https_errors=True, extra_http_headers={"namex": "romeo"}, user_agent="joe", locale="de-DE", )
                        
    page = browser.new_page()
    page.set_viewport_size({"width": 1600, "height": 1200})
            
    page.goto("http://example.com")
                       
    browser.close()

相关问题