在没有公共 API 的情况下连接到网站 webosocket
Posted
技术标签:
【中文标题】在没有公共 API 的情况下连接到网站 webosocket【英文标题】:Connecting to website webosocket without public API 【发布时间】:2018-03-11 10:43:12 【问题描述】:我对 websockets 了解不多,但我知道如何连接到这样的东西:
const CHAT_URL = 'ws://echo.websocket.org/';
但是当网站没有公共 websocket API 时该怎么办?我怎样才能得到这些数据?
假设我们有这样的网站: 当我打开开发工具、网络选项卡并选择 WS 和 FRAMES 时,我可以每毫秒看到新数据。是否可以在我的节点或角度项目中获取该数据?
在图片中,您可以看到它在 chrome 开发工具中的样子。
【问题讨论】:
【参考方案1】:一切皆有可能,尽管您需要做一些工作来逐个确定每个 API 的实现。另请检查使用他们的 API 是否违反网站政策等。
以cryptopia.co.nz
为例,如果我们检查 WebSocket 请求的 URL,我们会看到它们使用 ASP.NET 的 signalr
库作为后端。我们还可以在查询字符串中看到 connectionToken
正在传递,这意味着如果我们要成功连接到他们的 API,我们需要提供一个有效的 connectionToken
。
查看signalr
、we see that 的文档,他们实施了一些安全措施,包括防止跨域请求。这排除了我们直接从浏览器客户端(即通过 Angular)连接到 API 的能力。此时我们唯一的选择是从 Node.js 连接到他们的 WebSocket API,然后将数据代理到我们自己的浏览器客户端。
你可以看到这正在变成一个相当深的兔子洞。另一个问题是,如果他们在任何时候改变了他们的实现,你的应用程序就会崩溃。总之,很可能通过足够的努力连接到私有 API,但如果它首先可用,我总是会寻找公共 API 选项。
【讨论】:
以上是关于在没有公共 API 的情况下连接到网站 webosocket的主要内容,如果未能解决你的问题,请参考以下文章