【问题标题】:How to read chrome console using python without selenium?如何在没有硒的情况下使用 python 读取 chrome 控制台?
【发布时间】:2019-12-06 04:06:27
【问题描述】:

我想使用 Python3 读取 chrome 的 js 控制台,无需任何 web 驱动程序,例如 selenium(机器人检测和其他东西)。

我已经尝试过 Chrome DevTools 协议 python 库,例如 chromewhip、pychrome 和 PyChromeDevTools,但我无法从控制台读取任何数据。

我想阅读 Runtime.consoleAPICalled 或 Log.entryAdded,但我不知道如何实现这些回调,因为这些库的文档没有指定任何内容。也找不到例子。

有谁知道如何正确访问这些事件或提供它的其他库?

【问题讨论】:

  • 根据你的描述,感觉是忘记加Runtime.enable了。你能发布你的代码吗?
  • 不错,但我确定我已启用网络、运行时、日志和页面。更多的是我无法理解如何使用 python 访问上面提到的回调事件(它们是返回值还是就地修改对象?)。

标签: python python-3.x google-chrome google-chrome-devtools chrome-devtools-protocol


【解决方案1】:

@kundapanda你能不能至少发布一个对你有用的代码的sn-p。

【讨论】:

    【解决方案2】:

    我想阅读 Runtime.consoleAPICalled 或 Log.entryAdded,但我没有 知道如何实现这些回调

    以下假设(根据您的问题措辞)您能够在对 Web 调试器端点开放的流上发送和接收调试协议消息。

    在您发送调试协议消息Runtime.enableLog.enable 消息后,您正在查找的Runtime.consoleAPICalledLog.entryAdded“事件”由您在同一调试通道上收到的消息表示。

    您可能需要通过检查接收到的事件消息中的executionContextId 字段来将控制台事件消息与执行上下文(在Runtime.enable 响应中看到)相匹配。日志事件不与任何单个执行上下文相关联。所有这些“事件”消息都将带有Id=0,这有助于识别它们是“事件”消息而不是响应消息。

    以下是从 Chrome 接收到的一些示例消息(格式为 JSON,具有任意字段顺序):

    控制台 API 事件消息:

    {
        "method": "Runtime.consoleAPICalled",
        "params": 
        {
            "type": "warning",
            "args": [
              {  "type": "string",
                "value": "Google Maps JavaScript API warning: NoApiKeys https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys"
               }],
             "executionContextId": 1,
             "timestamp": 1618949706735.553,
             "stackTrace": 
             {
                  "callFrames": [
                    {
                      "functionName": "TA.j",
                      "scriptId": "206",
                      "url": "https://maps.googleapis.com/maps-api-v3/api/js/44/10/util.js",
                      "lineNumber": 228,
                      "columnNumber": 26
                    } ]
              }
           }
        },
        "id": 0
    }
    

    记录事件消息:

    {
       "method":"Log.entryAdded",
       "params":
       {
          "entry":
          {
              "source":"javascript",
              "level":"warning",
              "text":"The deviceorientation events are blocked by permissions policy. See https://github.com/w3c/webappsec-permissions-policy/blob/master/features.md#sensor-features",
              "timestamp":1.6189509536801208e+12
          }
       },
       "id": 0
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 2023-03-09
      • 2023-03-24
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 2017-10-24
      相关资源
      最近更新 更多