如何设置 Playwright 不自动跟随重定向?

oon*_*dwi 10 python playwright playwright-python

我想使用 Playwright 打开一个网站,但不希望被自动重定向。

在其他一些 Web 客户端中,它们具有参数链接follow=False以在重定向后自动禁用。但我在剧作家上找不到。

async def run(playwright):
    chromium = playwright.chromium
    browser = await chromium.launch()
    context = await browser.new_context()
    page = await context.new_page()

    def handle_response(response):
        print(f'status: {response.status} {response.url}')
    page.on('response', handle_response)

    await page.goto("https://google.com")
    await browser.close()

Run Code Online (Sandbox Code Playgroud)

这是示例代码,我们知道 google.com 会响应 301 并将重定向到www.google.com。是否可以在收到 301 后停止该过程,这样我就不需要继续处理www.google.com以及此后的所有响应?

请求文档中,我得到了Page.on('response')当/如果收到请求的响应状态和标头时发出的信息。

但是当Page on('response')回调后如何停止Request呢?我看到其他一些类似的问题,使用 Route.abort() 或 Route.fulfill(),但我仍然没有得到我的案例的答案。

感谢您的帮助。

Vis*_*wal 1

正如v1.26中介绍的,可以在 get 请求中使用maxRedirects可选参数。

这提供了将自动遵循的请求重定向的最大数量。如果超过数量将会抛出错误。默认为 20。传递 0 表示不遵循重定向。

参考:

https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get-option-max-redirects

https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get-option-max-redirects

https://github.com/microsoft/playwright/pull/17033

https://github.com/microsoft/playwright/issues/12911