背景: 开始准备Fiddler、Reqable抓手游助手APP的包顺便探索网络游戏数据的传输,看能不能写自动游戏脚本终结重复枯燥的手游。证书配置卡住,捕获的URL中没有头绪。
看到桌面QQ群又要统计群友是否收到回复,我是有全部群友名单的,于是走上代码监听QQ消息之路,搜了一圈发现作者2年前写的oicq,于是...让前端(含node.js再次伟大),办公自动化 先从QQ练手...
🫠、效果演示
时间太晚了,群比较安静。 使用另外一个号发起私聊。
数据格式(还有丰富的格式可以去阅读源码):
一、准备动手
执行环境: Node.js
需要模块: oicq 基于TypeScript
测试说明: 登录有扫码登录(不稳定)
和 滑块验证登录(推荐)
两种方式。
推荐使用 滑块验证登录(推荐)
核心代码如下:
js
//滑块验证登录
const { createClient } = require("oicq")
let QQ号 = '你的QQ号'
let 密码 = '你的密码'
const client = createClient(QQ号)
client.on("system.login.slider", function (e) {
console.log("复制ticket输入:")
process.stdin.once("data", ticket => this.submitSlider(String(ticket).trim()))
}).login(密码)
二、执行代码
1.输入QQ号和密码。使用node
命令运行当前代码,以下为测试号~
获取程序显示URL到浏览器,如上图红框 ssl.captcha.qq.com/template/......
该地址为[官方]腾讯多端通用滑块验证码页面,修改密码后验证也是这个页面。
需要人工辅助验证!!!
需要人工辅助验证!!!
需要人工辅助验证!!!
2.[GIF演示]
按F12在浏览器控制台获取属性ticket
的值, 操作如下动图演示:
3.[GIF演示]
在15秒内将复制ticket
的值粘贴在程序下方 按回车。自动捕捉私聊和群消息。
三、错误处理💢
1.oicq文档中扫码登陆不能成功
js
const { createClient } = require("oicq")
const account = 147258369
const client = createClient(account)
client.on("system.online", () => console.log("Logged in!"))
client.on("message", e => {
console.log(e)
e.reply("hello world", true) //true表示引用对方的消息
})
client.on("system.login.qrcode", function (e) {
//扫码后按回车登录
process.stdin.once("data", () => {
this.login()
})
}).login()
注意:扫码登录现在仅能在同一ip下进行,建议使用密码登录,只需验证一次设备便长期有效
出现提示:[登录失败]你太久没有操作,请重新登录。
出现提示:[禁止登录]你当前使用的QQ版本过低,请前往QQ官网im.qq.com下载最新版QQ后重试。
解决方案:模拟虚拟物理设备对应QQ版本过低,或相关源代码未更新,可能是企鹅内部的接口更新,毕竟oicq作者快两年没有更新了。
推荐使用 滑块验证登录(推荐)
2.新注册的QQ号无法成功😱
解决方案:新注册QQ号的安全等级较高,会被安全中心拦截(目前尝试在手机端关闭安全检查无效),先用注册的老QQ试试。
四、感谢和参考:
1.《oicq文档npm地址》
找遍了npmjs,最近相关的就是 2 years ago,作者啊你快回来
517从中获得较大启发,暂未做对照实验证明非帐号本身问题,一定需要修复
3.《【物联网服务NodeJs-5天学习】第三天实战篇④ ------QQ机器人,实现自动回复、重要提醒》
2023-03-12发布。能找到比较新的文章,从中快速发现oicq的效果演示,增强oicq的测试信心
4.动图制作使用ScreenToGif
最近更新了 2.40.1,由Nicke Manarin (巴西)制作的开源好用的动图制作软件!
五、总结
第一步捕获了信息,第二步需要仔细阅读源码,分析文件结构,再进行数据处理。
先抓企鹅,再抓绿泡泡。办公自动化 先从QQ练手
🤪同新手,欢迎大家交流指点。
🤪🤪特别说明:封面及题目使用AI生成
原题:《献出三个老QQ,测试Node.js监听QQ聊天消息》
AI调整:《三枚怀旧Q号搭载Node.js测试,实现全天监控企鹅群聊》