【问题标题】:Connecting to website webosocket without public API在没有公共 API 的情况下连接到网站 webosocket
【发布时间】:2018-03-11 10:43:12
【问题描述】:

我对 websockets 了解不多,但我知道如何连接到这样的东西:

const CHAT_URL = 'ws://echo.websocket.org/';

但是当网站没有公共 websocket API 时该怎么办?我怎样才能得到这些数据?

假设我们有这样的网站: 当我打开开发工具、网络选项卡并选择 WS 和 FRAMES 时,我可以每毫秒看到新数据。是否可以在我的节点或角度项目中获取该数据?

在图片中,您可以看到它在 chrome 开发工具中的样子。

【问题讨论】:

    标签: javascript node.js angular websocket


    【解决方案1】:

    一切皆有可能,尽管您需要做一些工作来逐个确定每个 API 的实现。另请检查使用他们的 API 是否违反网站政策等。

    cryptopia.co.nz 为例,如果我们检查 WebSocket 请求的 URL,我们会看到它们使用 ASP.NET 的 signalr 库作为后端。我们还可以在查询字符串中看到 connectionToken 正在传递,这意味着如果我们要成功连接到他们的 API,我们需要提供一个有效的 connectionToken

    查看signalrwe see that 的文档,他们实施了一些安全措施,包括防止跨域请求。这排除了我们直接从浏览器客户端(即通过 Angular)连接到 API 的能力。此时我们唯一的选择是从 Node.js 连接到他们的 WebSocket API,然后将数据代理到我们自己的浏览器客户端。

    你可以看到这正在变成一个相当深的兔子洞。另一个问题是,如果他们在任何时候改变了他们的实现,你的应用程序就会崩溃。总之,很可能通过足够的努力连接到私有 API,但如果它首先可用,我总是会寻找公共 API 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-12
      • 2018-09-19
      • 2023-04-03
      • 2021-12-07
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      相关资源
      最近更新 更多