WebSocket

一句话总结: WebSocket 是一种用于实时双向通信的协议。它在客户端与服务器之间保持一条持久连接。

WebSocket是一种通信协议。它在单个 TCP 连接上提供持久的全双工通道。与HTTP不同,WebSocket 允许服务器在任何时候主动向客户端推送数据,无需反复发起请求。

WebSocket 如何工作

  1. HTTP 握手:客户端向服务器发送 HTTP Upgrade 请求。
  2. 协议升级:服务器同意后切换为 WebSocket 协议。
  3. 持久连接:连接会一直保持,直到任一方关闭。
  4. 双向消息:双方都可以自由发送消息,无需轮询。

WebSocket vs HTTP

  1. 连接:HTTP 每次请求都会新建连接;WebSocket 保持单一连接常开。
  2. 方向:HTTP 仅支持请求-响应;WebSocket 完全双向。
  3. 延迟:高频更新场景下,WebSocket 延迟更低;HTTP 每次都带来 header 开销。
  4. 状态:HTTP 是无状态的;WebSocket 维护有状态会话。
  5. 加密:安全 WebSocket(wss://)在 443 端口使用 TLS。

常见使用场景

  1. 实时聊天:消息无需刷新页面即可即时出现。
  2. 金融看板:股票价格实时更新。
  3. 在线游戏:玩家操作在连接用户之间即时同步。
  4. 协同编辑:文档修改会实时呈现给所有参与者。
  5. IoT 监控:传感器持续向看板流式传输数据。
  6. 实时数据流:体育比分、拍卖出价与价格行情。

WebSocket 与网页抓取

许多现代网站使用 WebSocket 交付动态内容。价格、库存可用性与实时比分等,往往通过 WebSocket 推送。标准的HTTP 请求会完全漏掉这些数据。抓取 WebSocket 数据流需要拦截这条持久连接。Bright Data 的 网页抓取工具基础设施可处理由 WebSocket 驱动的网站。住宅代理可将 WebSocket 连接通过真实 IP 地址进行转发。

WebSocket 安全

  1. WSS 协议:始终使用 wss:// 而不是 ws://。WSS 使用 TLS 加密流量。
  2. 身份验证:在初始握手阶段使用 token 或 cookie 进行认证。
  3. Origin 校验:服务器应校验 Origin header,以阻止未授权连接。
  4. 限流:对 WebSocket 连接应用限流策略,防止滥用。

准备好开始了吗?