Python实现Https监听

安装playwright

playwright官网:https://playwright.dev/python/
首先配置环境,安装playwright: pip install playwright

安装完成之后,进行本地浏览器的实例创建,代码如下:

from playwright.sync_api import sync_playwright as playwright


def https(response):
    if response.url == 'https://www.baidu.com/':
        print("请求头:", response.headers)
        print("响应内容:", response.text())


with playwright() as pw:
    # 调用本地浏览器
    browser = pw.chromium.launch_persistent_context(  # 调用本地安装的浏览器
        # 缓存地址
        user_data_dir=r'xxxx\Local\Google\Chrome\User Data',
        # 启动路径
        executable_path=r'xxxx\Google\Chrome\Application\chrome.exe',
        # 关闭无头模式
        headless=False,
        # 跳过检测
        args=['--disable-blink-features=AutomationControlled', '--enable-automation']
    )
    page = browser.new_page()
    page.on('response', https)

    page.goto('https://www.baidu.com')
    # 浏览器保持开启状态
    page.wait_for_timeout(1000000000)
  • 第12行使用pw.chromium.launch_persistent_context拉起本地浏览器
  • 第14、16行配置本地浏览器所对应的缓存地址和启动路径
  • 第18行的无头模式是指,是否在后台运行,如果设置为true,则不会进行显示浏览器,只会在后台显示
  • 第20行是用来屏蔽某些网站对自动化浏览器的检测
  • 第23行监听http请求的response,具体方法查看playwright的api文档, 这个方法需要传入一个函数作为callback,对应4-7行的代码

运行结果:
image.png

如何找到缓存地址和启动路径

打开谷歌浏览器,导航栏输入访问chrome://version/,跳转到chrome浏览器的信息页面,如下图:
image.png

  • 图中可执行文件路径对应代码中的启动路径
  • 图中个人资料路径对应代码中的缓存路径,只需要前面到User Data的目录路径

response的内容

上面代码提到了通过page.on('response', callback)实现对http的监听,并且将监听内容返回给callback函数,在callback函数中拿到的监听内容可以访问到以下内容:

def callback(response):
    # 响应的URL
    print(response.url)
    # 请求头
    print(response.headers)
    # bytes类型的响应
    print(response.body())
    # 文本类型响应
    print(response.text())
    # Json类型响应
    print(response.json())

Electron实现对Https监听

https://www.electronjs.org/zh/docs/latest/api/web-request

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏