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

Playwright Python无头模式下如何强制设置User-Agent?

解决Playwright Python无头模式下自定义User-Agent不生效的问题

问题出在你的代码逻辑里:你创建了带有自定义User-Agent的context,但根本没使用这个上下文来创建页面。直接调用browser.new_page()会生成一个默认上下文的页面,这个默认上下文不会继承你设置的UA,无头模式下还会自动添加Headless相关标识。

修正方案

修改代码,确保从自定义的context中创建页面,而不是直接用browser创建。

修正后的代码示例

def run(playwright):
    """ config for browser """
    browser = playwright.chromium.launch(channel='msedge', headless=True)
    # 创建带自定义UA的上下文
    context = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81"
    )
    return browser, context


with sync_playwright() as p:
    browser, context = run(p)
    log.info(f"name:{browser.browser_type.name}, exe_path:{browser.browser_type.executable_path}, version:{browser.version}")
    # 从自定义上下文创建页面
    page = context.new_page()
    log.info(f"useragent:{page.evaluate('navigator.userAgent')}")
    page.goto(dat['url'])
    # 后续操作...
    
    # 记得关闭上下文和浏览器
    context.close()
    browser.close()

关键说明

  • 所有需要使用自定义UA的页面,必须通过context.new_page()创建,而不是browser.new_page()
  • 无头模式下,只要上下文的user_agent参数正确设置,就能完全覆盖默认的带Headless标识的UA
  • 操作完成后记得关闭上下文和浏览器,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:24