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
相关产品推荐
相关产品推荐

