javascript - 在没有公共(public) API 的情况下连接到网站 webosocket

标签 javascript node.js angular websocket

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

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

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

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

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

最佳答案

一切皆有可能,但您需要根据具体情况做一些工作来确定每个 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/

相关文章:

html - 在 Angular 2 中输入具有不同显示文本和值的文本元素

javascript - 使用文件系统和 Express.js 读取/写入文件

javascript - 使用 jQuery 滑动动态添加的内容

javascript - 为什么 gulp 需要安装 --save-dev 而不仅仅是 --save

javascript - Express.js - 使用嵌套请求从备份 URL 获取 JSON

typescript - 使用 FormBuilder Angular 2 绑定(bind)选择列表

javascript - 打开 "Save As"对话框下载图片

javascript - For 循环在循环内部和外部具有不同的值

node.js - 是否可以在 32 位环境上运行 Edge.js?

java - 在不同端口的同一个 tomcat 上部署 Angular 5 和 spring boot 应用程序