Playwright可以与本地Chrome浏览器通过ws方式通信,这样可以绕过大部分浏览器检测,因为这就是一个真正的浏览器,使得调用真实的浏览器更容易,同时能够保留浏览器的登录信息和cookie。
-
设置
- 运行程序之后先打开浏览器
- 找到自己桌面chrome的快捷方式键
- 点击属性
- 在目标一栏的最后添加 --remote-debugging-port=6666 端口可自定义
代码部分
from playwright.sync_api import Playwright, sync_playwright, expectimport
import subprocess
#输入Chrome浏览器所在路径
chrome_path = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"'
debugging_port = "--remote-debugging-port=6666"
command = f"{chrome_path} {debugging_port}"
subprocess.Popen(command, shell=True)
def run(playwright: Playwright) -> None:
browser = playwright.chromium.connect_over_cdp(("http://localhost:6666"))
context = browser.contexts[0]
page = context.new_page()
#其他操作
browser.close()
注意:其实就是调用了Chrome远程调试功能,运行代码前请关闭现在已经打开的Chrome浏览器,不然Chrome的远程调试功能会无法成功开启导致报错。