很多人第一次听到 ChromePHP 这个名字,会误以为它是个 Chrome 浏览器扩展,其实完全不是!它是一个纯 PHP 编写的工具库,通过 Chrome 官方的 DevTools 协议,能让你用 PHP 代码直接操控 Chrome 或 Chromium 浏览器,完成各种自动化任务。
不用装复杂的驱动,不用学新的语言,只要你会写 PHP,就能轻松实现网页截图、PDF 生成、爬虫爬取、自动化测试这些功能,开发效率直接拉满。
核心特性:能做的事远超想象
ChromePHP 几乎把浏览器能做的所有操作都封装成了简单的 PHP 方法,常用功能包括:
- 浏览器基础控制:启动/关闭浏览器、新建标签页、跳转任意网页、自定义窗口大小
- 页面交互:模拟鼠标点击、滚动、键盘输入,点击按钮、填写表单都能自动完成
- 脚本执行:在页面中注入并运行任意 JavaScript 代码,获取页面数据
- 内容导出:截取全页或指定区域截图、生成自定义格式的 PDF 文件
- 高级管理:Cookie 增删改查、设置代理和用户代理、无图模式加速、文件下载
- 调试友好:支持关闭无头模式,直接显示浏览器窗口,实时看到脚本执行过程
环境要求与安装
前置条件
- PHP 版本:7.4 ~ 8.5(主流版本全兼容)
- 本地已安装 Chrome 或 Chromium 浏览器(版本 65 及以上)
- 支持 Linux、macOS、Windows 全平台
一键安装
ChromePHP 发布在 Composer 上,一行命令就能装到你的项目里:
composer require chrome-php/chrome
5分钟跑通第一个示例
下面是最基础的用法:打开 example.com,获取页面标题,同时保存截图和 PDF 文件,代码简单易懂,复制就能用。
<?phprequire__DIR__ . '/vendor/autoload.php';useHeadlessChromium\BrowserFactory;// 1. 创建浏览器工厂,自动检测本地 Chrome 路径$browserFactory = new BrowserFactory();// 2. 启动无头浏览器(后台运行,不显示窗口)$browser = $browserFactory->createBrowser();try {// 3. 新建一个标签页 $page = $browser->createPage();// 4. 跳转到目标网页,等待页面加载完成 $page->navigate('http://example.com')->waitForNavigation();// 5. 执行 JS 获取页面标题 $pageTitle = $page->evaluate('document.title')->getReturnValue();echo"页面标题:" . $pageTitle . PHP_EOL;// 6. 截取页面截图并保存 $page->screenshot()->saveToFile('./screenshot.png');echo"截图已保存为 screenshot.png" . PHP_EOL;// 7. 生成 PDF(不打印背景)并保存 $page->pdf(['printBackground' => false])->saveToFile('./output.pdf');echo"PDF 已保存为 output.pdf" . PHP_EOL;} finally {// 8. 最后一定要关闭浏览器,释放资源 $browser->close();}
3个超实用的进阶技巧
1. 指定自定义 Chrome 路径
如果脚本找不到你的 Chrome 安装位置,或者想用特定版本的 Chromium,可以手动指定路径:
// 例如 Linux 系统的 chromium-browser,或 Windows 的完整路径$browserFactory = new BrowserFactory('/usr/bin/chromium-browser');
2. 开启调试模式(显示浏览器窗口)
写脚本的时候,最方便的就是关掉无头模式,亲眼看到浏览器的操作过程,方便排查问题:
$browser = $browserFactory->createBrowser(['headless' => false, // 显示浏览器窗口'windowSize' => [1920, 1080] // 设置窗口大小]);
3. 自定义浏览器启动参数
你可以传入任意 Chrome 启动参数,比如开启无图模式加速、设置代理:
$browser = $browserFactory->createBrowser(['args' => ['--no-sandbox', // Linux 服务器环境必备'--disable-images', // 不加载图片,大幅提升速度'--proxy-server=http://127.0.0.1:7890'// 设置代理 ]]);
适合哪些场景?
这个库特别适合 PHP 开发者快速实现自动化任务,常见的使用场景有:
总的来说,ChromePHP 是 PHP 生态里非常好用的浏览器自动化工具,API 设计简洁直观,不用学习复杂的 Selenium 语法,几分钟就能上手。如果你经常需要做网页相关的自动化工作,强烈推荐试试这个库。