美文网首页
Node开发websocket爬虫的经验

Node开发websocket爬虫的经验

作者: 平仄_pingze | 来源:发表于2018-02-24 14:27 被阅读207次

1 选择合适的库

目前,ws库,使用最接近前端的Websocket类,可以避免一些API不同产生的问题。
基本模型:

const WebSocket = require('ws');

const ws = new WebSocket('wss://web.im.weibo.com/im', [], {
  headers: {}
});

ws.on('error', function (err) {
  console.error('Catched Websocket Error', err);
});

ws.on('close', function () {
  console.warn('Websocket Connection closed');
});

ws.on('open', function () {
  console.log(`Websocket Connection opened`);
});

ws.on('message', function (msg) {
  console.log('Received message:', msg);
  ws.send(`Auto Reply: You say ${msg}`);
});

2 使用抓包工具探测websocket链接

使用Chrome开发者工具即可。

3 让程序模拟headers

const ws = new WebSocket('wss://web.im.weibo.com/im', [], {
  headers: {
     // 保持和抓包结果一致
  }
});

*4 模拟初始化过程

一般抓包时可以看到,ws链接建立后,会进行一系列一次性的会话,一般在这里进行了握手,确定了用户信息和一些初始配置。
模拟时应注意模仿这些初始化过程。

*5 模拟心跳

成熟的ws链接一般带有心跳检测,每隔一定时间,服务端和客户端进行一次会话,确认客户端仍可正常回应,否则服务端立刻断开链接。
模拟时应注意模仿,否则模拟客户端不能持久存在。

相关文章

网友评论

      本文标题:Node开发websocket爬虫的经验

      本文链接:https://www.haomeiwen.com/subject/ijvqxftx.html