Playwright 操作本地浏览器总结(CDP Chrome远程连接协议)

4,375 阅读2分钟

连接本地浏览器

反爬为了应对各类伪造的爬虫代理进行了很多发爬策略。因为 playwright 使用的是谷歌浏览器开发版。有些网站的安全级别比较高,有些可能采用了禁用谷歌开发版的策略(比如某呼)。

所以让爬虫直接操作你的浏览器是直接有效的策略。CDP (Chrome DevTools Protocol) 就是通过 chrome dev 协议直接操作浏览器的策略。因为是 chrome 内核的协议,所有基于Chromium的浏览器,包括Chrome、Edge、Opera、Brave、Vivaldi、Samsung Internet等都支持该协议。

selenium是可以做到这点,那么playwright也可以实现此功能。这时候就需要通过连接真实的浏览器工具来应对反爬策略。

chrome / edge 可以设置附加参数启动,然后开启 chrome / edge 本地远程链接 , 这里给出 window 两种创建远程浏览器链接的方法。 端口号自定义(本文预设为 9222 ),设置之前最好检查本地端口是否已经被使用。

通过命令方式启动

设置之前需要关闭指定的浏览器!!!

首先右键 Chrome 浏览器桌面图标,找到 chrome.exe 的安装路径

image.png

终端开发安装路径

cd C:\\Program File\Google\Application
chrome.exe --remote-debugging-port=9222

通过快捷方式启动

设置之前需要关闭指定的浏览器!!!

打开 chrome.exe 所在文件目录,不知道文件目录,可以通过 任务管理器 里面 查看文件所在位置 查看文件目录位置

右键 chrome.exe 创建桌面快捷方式,然后在桌面右键快捷方式 ,点击属性

image.png

编辑目标,在 chrome.exe 后面附带 --remote-debugging-port=9222

验证是否开启

如果浏览器开启远程链接成功,在浏览器上输入 localhost:9222/json/version 验证是否开启。

--remote-debugging-port=9222 开启失败

不出意外的话,按照上面的步骤开启 chrome 没有起作用,网上找到 xiaomi0322 的解决方法 chrome--remote-debugging-port 不起作用

执行命令行来强制关闭正在运行的 Chrome / edge

Window 终端

关闭 chrome

taskkill /F /IM "chrome.exe"

关闭 edge

taskkill /F /IM "msedge.exe"

然后在启动我们创建的快捷方式就可以了。

在浏览器上输入 localhost:9222/json/version 验证一下。

Playwright 远程链接 浏览器

chrome / edge 开启远程连接之后,就直接使用爬虫连接进行操作。

    const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
    const defaultContext = browser.contexts()[0];
    const page = await defaultContext.newPage();
    await page.goto("https://www.zhihu.com/people/wo-de-ni-cheng-bu-neng-shuo/posts")

参考