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

如何在Python Playwright中拦截指定临时重定向并添加自定义Header?

问题:Playwright能否捕获/拦截临时重定向并添加自定义Header?

我有一个页面,初始请求会返回303状态码,之后会触发多个状态码为307的临时重定向。我需要拦截其中一个临时重定向,添加自定义Header后再发送请求,但尝试使用handle_request()的方法无法捕获这些由重定向触发的请求,代码如下:

def handle_request(route, request):
    # Update the headers if match_string is present in url
    if "match_string" in request.url:
        print(f"Modifying headers for redirected request: {request.url}")
        headers = {**request.headers, 'custom_header_1': 'value_!23'}
        route.continue_(headers=headers)
    else:
        # Continue the request without modification
        route.continue_()

请问是否有可行的处理方法?


解决方案

核心问题

默认情况下,handle_request()无法拦截重定向链中的后续请求——浏览器自动处理重定向时,这些内部跳转的请求不会触发常规的request拦截逻辑。

实现方法

通过page.route()拦截所有请求(包括重定向产生的请求),结合URL匹配或重定向来源追踪定位目标请求,再修改Header:

基础实现代码

from playwright.sync_api import sync_playwright

def handle_route(route, request):
    # 匹配目标重定向请求的URL特征
    if "match_string" in request.url:
        print(f"拦截到目标重定向请求: {request.url}")
        # 复制原有请求头并添加自定义Header
        updated_headers = {**request.headers, "custom_header_1": "value_!23"}
        route.continue_(headers=updated_headers)
    else:
        # 无修改继续请求
        route.continue_()

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    # 拦截所有请求,覆盖重定向链中的每一步
    page.route("**/*", handle_route)
    page.goto("你的初始页面URL")
    browser.close()

进阶:通过重定向来源精准定位

如果需要锁定特定重定向链中的请求,可以利用request.redirected_from属性追踪请求来源:

def handle_route(route, request):
    # 判断当前请求是否来自初始303重定向,且是目标307重定向
    if (request.redirected_from 
        and "初始请求的URL特征" in request.redirected_from.url 
        and "match_string" in request.url):
        updated_headers = {**request.headers, "custom_header_1": "value_!23"}
        route.continue_(headers=updated_headers)
    else:
        route.continue_()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:43:27