You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NodeJS监听Twitter浏览器推送通知及获取Websocket连接

解决方案:基于Twitter Basic套餐实现新推文通知

一、获取Chrome中Twitter通知的WebSocket连接信息

要抓取Chrome里Twitter的WebSocket连接,步骤如下:

  • 打开Chrome登录Twitter,按F12打开开发者工具
  • 切换到Network标签,在筛选框输入ws过滤WebSocket请求
  • 触发一条测试通知(比如让其他账号@你),找到新出现的WebSocket连接,点击进入查看Frames标签,就能获取连接URL和传输的数据格式
  • 注意:这个WebSocket URL带临时会话凭证,有效期极短,且Twitter会频繁更新连接参数,直接复用稳定性极差,不建议长期依赖

二、NodeJS模拟浏览器WebSocket连接(仅临时测试)

如果只是临时验证,可以用ws库模拟浏览器连接:

  1. 安装依赖:
npm install ws
  1. 复制抓包得到的WebSocket URL和请求头里的Cookie、Authorization等凭证,编写代码:
const WebSocket = require('ws');

// 替换为抓包获取的WebSocket地址
const wsUrl = 'wss://...';
// 替换为抓包获取的请求头参数
const headers = {
  'Cookie': '你的Twitter会话Cookie',
  'Authorization': 'Bearer 你的认证Token'
};

const ws = new WebSocket(wsUrl, { headers });

ws.on('open', () => console.log('WebSocket连接成功'));

ws.on('message', (data) => {
  const msg = JSON.parse(data);
  // 过滤新推文相关通知
  if (msg.type === 'notification' && msg.data?.type === 'tweet') {
    console.log('新推文通知:', msg.data.tweet.text);
  }
});

ws.on('error', err => console.error('连接出错:', err));
ws.on('close', () => console.log('连接已关闭'));

警告:此方法依赖Twitter内部未公开API,随时可能失效,且存在违反Twitter服务条款、导致账号受限的风险

三、基于Twitter Basic套餐的合规方案(推荐)

Twitter Basic套餐($100/月)提供的API权限完全满足新推文通知需求,推荐使用官方合规方式:

1. 定期轮询用户时间线API

通过/2/users/:id/tweets端点轮询目标用户的新推文,设置合理间隔(比如1分钟)避免限流:

  • 安装依赖:
npm install twitter-api-v2
  • 代码示例:
const { TwitterApi } = require('twitter-api-v2');

const client = new TwitterApi({
  appKey: '你的应用Key',
  appSecret: '你的应用Secret',
  accessToken: '你的访问Token',
  accessSecret: '你的访问Secret',
});

// 存储上次获取的最新推文ID,避免重复通知
let lastTweetId = null;

async function fetchNewTweets() {
  const targetUserId = '目标用户ID'; // 替换为你要监听的用户ID
  const res = await client.v2.userTimeline(targetUserId, {
    max_results: 5,
    ...(lastTweetId && { since_id: lastTweetId })
  });

  if (res.data.length > 0) {
    lastTweetId = res.data[0].id;
    res.data.forEach(tweet => {
      console.log('新推文:', tweet.text);
      // 这里可添加自定义通知逻辑(如邮件、桌面通知)
    });
  }
}

// 每分钟执行一次轮询
setInterval(fetchNewTweets, 60000);

2. Webhook主动推送(若权限支持)

如果你的Basic套餐支持Webhook,可在Twitter开发者平台配置用户时间线Webhook,当有新推文时Twitter会主动推送通知到你的NodeJS服务,无需轮询:

  • 在开发者平台创建Webhook端点,订阅用户时间线事件
  • 编写NodeJS服务接收POST请求,处理推送的新推文数据

四、关键注意事项

  • 禁止依赖内部WebSocket:Twitter会随时变更内部接口,且该方式违反服务条款,可能导致账号封禁
  • 遵守API限流:Twitter API v2有明确的请求次数限制,Basic套餐的限流规则可在开发者平台查看,需合理设置请求频率
  • 低成本替代:若仅监听自己的推文,可直接用Twitter原生通知,再通过IFTTT等工具转发到你的NodeJS服务,成本更低

内容的提问来源于stack exchange,提问作者Steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:43