如何使用Python在浏览器中打开URL时携带自定义请求头
实现方案说明
Python内置的webbrowser模块仅支持调用系统默认浏览器启动打开目标URL,本身不具备自定义请求头的能力,无法直接满足需求,以下是两种可行的实现方案:
方案1:使用Selenium实现(推荐,支持任意自定义请求头)
该方案可以完全控制浏览器的所有请求参数,同时支持调用本地安装的所有主流浏览器(Chrome、Edge、Safari、火狐等),打开效果和手动操作浏览器完全一致。
- 先安装依赖包
pip install selenium webdriver-manager
- 示例代码(以Chrome为例)
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 配置浏览器启动参数 chrome_options = Options() # 写入你需要的自定义User-Agent custom_ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' chrome_options.add_argument(f'user-agent={custom_ua}') # 如需添加其他自定义请求头,按以下格式添加即可 # chrome_options.add_argument('请求头名称=请求头值') # 启动本地浏览器并打开目标URL driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) driver.get("https://www.bing.com/search?q=TEST123")
如果你使用的默认浏览器是Edge、火狐或者Safari,只需替换代码中Chrome对应的驱动和配置即可,webdriver-manager会自动适配对应浏览器的驱动文件。
方案2:调用浏览器启动参数(仅需修改UA时可用,无额外依赖)
如果你只需要自定义User-Agent,不需要修改其他请求头,可以直接调用浏览器的启动命令携带UA参数,不需要安装第三方库,以Chrome为例:
import subprocess import sys url = "https://www.bing.com/search?q=TEST123" custom_ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' # 按不同系统调用对应启动命令 if sys.platform == 'win32': subprocess.run(['start', 'chrome', f'--user-agent="{custom_ua}"', url], shell=True) elif sys.platform == 'darwin': subprocess.run(['open', '-a', 'Google Chrome', '--args', f'--user-agent={custom_ua}', url]) else: subprocess.run(['google-chrome', f'--user-agent={custom_ua}', url])
该方案缺点是需要适配不同系统、不同浏览器的启动命令和安装路径,灵活性远低于Selenium方案。
内容的提问来源于stack exchange,提问作者Hammaad
相关产品推荐
相关产品推荐

