我对 websockets 了解不多,但我知道如何连接到这样的东西:
const CHAT_URL = 'ws://echo.websocket.org/';
但是当网站没有公共(public) websocket API 时怎么办?我怎样才能得到这些数据?
假设我们有这样的网站: 当我打开开发工具、网络选项卡并选择 WS 和 FRAMES 时,我可以每毫秒看到新数据。是否有可能在我的 Node 或 Angular 项目中获取该数据?
最佳答案
一切皆有可能,但您需要根据具体情况做一些工作来确定每个 API 的实现。另请检查使用他们的 API 是否违反网站政策等。
以 cryptopia.co.nz
为例,如果我们检查 WebSocket 请求的 URL,我们会发现它们使用的是 ASP.NET 的 signalr
。库作为后端。我们还可以在查询字符串中看到正在传递一个 connectionToken
,这意味着如果我们要成功连接到他们的 API,我们需要提供一个有效的 connectionToken
.
查看 signalr
的文档,we see that他们实现了一些安全措施,包括防止跨域请求。这排除了我们直接从浏览器客户端(即通过 Angular)连接到 API 的能力。此时我们唯一的选择是从 Node.js 连接到他们的 WebSocket API,然后将数据代理到我们自己的浏览器客户端。
你可以看到这变成了一个很深的兔子洞。另一个问题是,如果他们在任何时候更改其实现,您的应用程序就会崩溃。总之,通过足够的努力连接到私有(private) API 是可能的,但如果公共(public) API 选项首先可用,我总是会寻找它。
关于javascript - 在没有公共(public) API 的情况下连接到网站 webosocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49219100/