gpt4 book ai didi

c - 在 C/Go 中从 Google Chrome 获取标签页信息

转载 作者:IT王子 更新时间:2023-10-29 02:34:42 26 4
gpt4 key购买 nike

我想在 Google Chrome 浏览器运行时收集一些信息。目前我正在使用一些 applescript ( https://gist.github.com/jcla1/6525572 ) 来做这件事,但我想用 C 或 Go 重写它。

有谁知道 Chrome 公开的 API 来收集如下信息:

  • # 打开标签页
  • 当前有效的 URL

到目前为止,我只发现我可以使用 CGWindowListCopyWindowInfo (Carbon) 获取当前选项卡的标题,它运行良好但显然不提供 URL(而不是 #open tabs等)。

理想情况下,Chrome 应该有一个事件架构,我可以 Hook 它并接收与输入新 URL 相关的所有事件。

附言只需要在 OSX 上工作!

最佳答案

我已经编写了 Go 程序来使用远程调试协议(protocol)远程控制/检查 chrome。它的工作方式是您首先从特定的 url 获取 JSON 数据,它会提供打开的选项卡和基本信息,例如选项卡的当前 url。然后,您可以使用 JSON 对象中的 websocket 链接来控制/检查各个选项卡。

由于只需要基本信息,可以忽略大部分调试接口(interface),直接下载JSON索引即可。首先,使用 chrome --remote-debugging-port=9222 启动 chrome .请注意,需要关闭所有 chrome 窗 Eloquent 能正常工作。您也可以使用 --user-data-dir=<some dir>以全新的配置文件启动,这样您就可以让其他 Chrome 窗口保持打开状态。

打开端口后,获取数据就很容易了。只需转到 http://localhost:9222/json并解码数据。这是我使用的代码:

type Tab struct {
Description string `json:"description"`
DevtoolsFrontendUrl string `json:"devtoolsFrontendUrl"`
FaviconUrl string `json:"faviconUrl"`
Id string `json:"id"`
ThumbnailUrl string `json:"thumbnailUrl"`
Title string `json:"title"`
Type string `json:"type"`
Url string `json:"url"`
WebSocketDebuggerUrl string `json:"webSocketDebuggerUrl"`
}

func GetTabs() ([]Tab, error) {
resp, err := http.Get("http://localhost:9222/json")
if err != nil {
return nil, err
}
defer resp.Body.Close()

var tabs []Tab
err = json.NewDecoder(resp.Body).Decode(&tabs)
if err != nil {
return nil, err
}

return tabs, nil
}

您可以获得更多信息here .


不幸的是,当使用此 API 打开新选项卡时,无法接收事件。但是,当您连接到 websockets 的选项卡以任何方式发生更改时,您会收到通知。如果你愿意发疯,你可以构建一个扩展来监控新标签和加载的 url 等变化。

关于c - 在 C/Go 中从 Google Chrome 获取标签页信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19741977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com