You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何监控非自有网站实时控制台日志以触发树莓派Chrome标签锁定

解决方案

方案一:实时监控已运行Chrome的控制台日志

要监控已运行Chrome实例的控制台日志,需借助Chrome的远程调试功能,步骤如下:

  1. 修改Chrome启动命令
    确保启动Chrome时开启远程调试端口,将你原本用xdotool启动Chrome的命令修改为:

    google-chrome --remote-debugging-port=9222 &
    

    (若Chrome已运行,需重启后才能生效,这是开启远程调试的必要前提)

  2. 编写Python监控脚本
    使用chrome-devtools-protocol库连接远程调试端口,监听控制台日志中的目标函数调用:

    from cdp import ChromeClient
    from cdp.console import MessageAddedEvent
    import os
    
    def trigger_lock_logic():
        # 这里调用你的锁定标签逻辑,示例:切换到目标标签并停止循环
        os.system("xdotool key ctrl+3")  # 假设目标标签是第3个,按需调整
        # 可通过创建标志文件通知循环脚本停止,比如:
        os.system("touch /tmp/stop_loop_flag")
    
    def monitor_console():
        client = ChromeClient("localhost", 9222)
        # 获取所有标签页,筛选目标网站(替换为你的目标URL关键词)
        targets = client.target.get_targets().targets
        target = next(t for t in targets if "你的目标网站关键词" in t.url)
        
        # 附加到目标标签页
        session = client.target.attach_to_target(target.target_id, flatten=True)
        client.session_id = session.session_id
        client.console.enable()
    
        def on_log(event: MessageAddedEvent):
            log_text = event.message.text
            # 检测目标函数调用(替换为你的目标函数名称)
            if "目标函数名" in log_text:
                trigger_lock_logic()
                client.close()
    
        client.console.on("messageAdded", on_log)
        try:
            client.wait()
        except KeyboardInterrupt:
            client.close()
    
    if __name__ == "__main__":
        monitor_console()
    

    先安装依赖:

    pip install chrome-devtools-protocol
    

    该脚本后台运行时,一旦捕获到目标函数日志,就会触发你的锁定逻辑,同时可通过标志文件通知xdotool循环脚本停止。

方案二:检测页面中的目标名称列表

无需监控日志,直接通过命令行工具与已运行Chrome交互,检测页面元素:

  1. 安装chrome-cli工具

    sudo apt update && sudo apt install chrome-cli
    
  2. 修改xdotool循环脚本
    在切换到目标标签时,执行JS获取页面内容并检查目标关键词:

    #!/bin/bash
    
    # 循环标志,1为运行,0为停止
    RUN=1
    # 目标标签位置(假设是第3个)
    TARGET_TAB=3
    # 目标名称关键词
    TARGET_KEYWORD="目标名称"
    
    while [ $RUN -eq 1 ]; do
        # 循环切换标签
        xdotool key ctrl+1
        sleep 5
        xdotool key ctrl+2
        sleep 5
        xdotool key ctrl+$TARGET_TAB
        sleep 1
    
        # 检查页面是否存在目标关键词
        PAGE_CONTENT=$(chrome-cli execute 'document.body.innerText' --tab $TARGET_TAB)
        if echo "$PAGE_CONTENT" | grep -q "$TARGET_KEYWORD"; then
            echo "检测到目标事件,锁定标签"
            # 停留指定时长(示例为300秒)
            sleep 300
            # 若要彻底停止循环,取消注释下面一行
            # RUN=0
        fi
    
        # 检查是否有停止标志(配合方案一的锁定逻辑)
        if [ -f /tmp/stop_loop_flag ]; then
            RUN=0
            rm /tmp/stop_loop_flag
        fi
    done
    

    若需更精确的元素定位,可修改chrome-cli execute后的JS,比如用document.querySelector('你的CSS选择器').textContent定位特定元素。

内容的提问来源于stack exchange,提问作者bassplyr18954

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:20:35