基于 Python 实现多浏览器并行注入的实战方案
浏览器注入允许我们在运行中的浏览器进程中执行特定代码。在自动化测试、数据抓取或安全研究中,往往需要同时对多个浏览器实例进行操作以提升效率。本方案基于 Python,结合 Pyppeteer、Selenium 和 CDP 协议,实现多浏览器的并行注入。
环境配置
首先安装必要的依赖项:
pip install selenium pyppeteer
确保已安装 Chrome 或 Chromium,并开启远程调试模式支持。
核心实现
使用 Pyppeteer 进行注入
Pyppeteer 是 Puppeteer 的 Python 移植版,适合以编程方式控制 Chromium。
import asyncio
from pyppeteer import launch
async def inject_js(browser_id, url, script):
print(f"[{browser_id}] 启动浏览器...")
browser = await launch(headless=False, args=['--no-sandbox'])
page = await browser.newPage()
await page.goto(url)
print(f"[{browser_id}] 注入 JavaScript 代码...")
result = await page.evaluate(script)
print(f"[{browser_id}] 执行结果:{result}")
await browser.close()
async def main():
url = "https://www.example.com"
script = "document.body.style.backgroundColor = 'red'; '注入成功';"
tasks = [inject_js(i, url, script) for i in range(5)]
await asyncio.gather(*tasks)
asyncio.run(main())
注意:launch 方法用于启动浏览器, 则是执行 JS 的关键。实际运行时需注意沙箱参数 在某些 Linux 环境下的兼容性。


