找回密码
 立即注册

微信扫码登录

搜索
查看: 18|回复: 0

[经验分享] 中燃在线小程序数据抓取NR流

[复制链接]

3

主题

12

回帖

187

积分

注册会员

积分
187
金钱
172
HASS币
0
发表于 1 小时前 | 显示全部楼层 |阅读模式
昨天发了一个中燃在线的数据抓取的帖子,说的太笼统了,今天我把自己的NR流分享一下。

个人信息我会隐去,重要的,那个“盐”,你们还得去
https://bbs.hassbian.com/thread-30786-1-2.html
这个贴子里提到的位置自己找,不方便公布出来,能找到你们就用,找不到就算了,也希望找到的也别公布出来,毕竟涉及到信息安全。
先贴一下完整流。
image.png
分三行,一行一行说:
第一行:
抓过包的应该明白,要模拟中燃在线小程序https://zrds.95007.com/tracking/buriedPointEvent/add这个链接的post。
1.注入信息
appUseType=0&clickType=3&eventType=1&channelType=0&userId=【抓包看自己的ID,这行就是抓包请求体的原文】
2.POST提交
网址:https://zrds.95007.com/tracking/buriedPointEvent/add
请求头去抓包信息里抄。
3.检查状态并返回时间戳
函数:
// 检查消息状态并返回时间戳或 null
if (msg.payload.status === 1 && msg.payload.message === "请求成功") {
    // 返回当前时间戳(毫秒)
    return { 
        payload: Date.now(),
    };
} else {
    // 返回 null
    return { 
        payload: null,
    };
}
return msg;
第二行:
主要是生成查询数据的各项参数。
4.生成各项字符串
函数:
// 获取参数
const timeStamp = msg.payload;
const secretKey = "【你找到的“盐”】";
const custCode = "【你的燃气编号】";

// 拼接字符串
const rawString = custCode + secretKey + timeStamp;


// 设置输出消息
msg.payload = {
    custCode: custCode,
    timeStamp: timeStamp,
    rawString: rawString
};

return msg;
5.md5节点
image.png
6.整合查询请求体
// 获取参数
const timeStamp = msg.payload.timeStamp;
const custCode = msg.payload.custCode;
const signature = msg.md5;
const custName = "【这里,看你自己的中燃在线,那个带*的用户名,就带着*,别给补全了】";


// 设置输出消息
msg.payload = {
    custCode: custCode,
    custName: custName,
    timeStamp: timeStamp,
    signature: signature
};

return msg;
第三行:
最终的查询(我查的是这个,最主要的是生成signature,想查别的,去小程序抓包学习,把对应的东西作为请求体送上去,对应的信息就回来了
7.POST节点
网址:https://zrds.95007.com/crm_controller/user/findCustInfoByCustCodeAndCustName
请求头自己抓包,抄。
8.处理信息(我查的是countMoney值,不一定对,我把返回值扔后边,觉得不对的可以换别的,想查别的信息也可以参考
函数:
// 从msg.payload中提取countMoney值,并按照HA实体要求格式返回
if (msg.payload && msg.payload.data && msg.payload.data.countMoney !== undefined) {
    // 按照HA实体要求格式返回
    msg.payload = {
        value: msg.payload.data.countMoney
    };
    return msg;
} else {
    // 如果countMoney不存在,返回错误信息
    msg.payload = {
        value: null,
        error: "countMoney not found in payload",
        originalPayload: msg.payload
    };
    return msg;
}
7的返回值:
{"data":{"calType":null,"payOrderNO":null,"fee":null,"lastRecord":null,"cardNo":null,"compName":"********************","envir":"*","modelCode":"","price":null,"subCardType":null,"orgCode":"******","qtyMeterBalance":null,"feeFlag":"0","meterNo":null,"newOweMoney":"0","qtyBalance":"0","id":0,"maxGas":null,"oldPwd":"*******","meterFormName":null,"metertype":null,"newCountMoney":"***.**","address":"*************","cardType":null,"mobile":"***********","deviceNo":null,"custName":"***","custCode":"**********","acctOrgCode":"******","lastRecordTime":null,"oweMoney":"0","awardMoney":"0","newAgentMoney":"0","purchTimes":null,"newAwardMoney":"0","custType":"**","meterFormCode":null,"meterSeq":null,"countMoney":"***.**","compcode":"******","agentMoney":"0","custStatus":"**"},"message":"燃气编号信息查找成功","status":"1"}
个人信息都被我*了,应该没漏出啥。
------------------------------------------------------------------
ok,到这里,就可以在下一步传到HA的传感器使用了。
我自己也是啥也不懂,如果有错误,请指出,再加上我的账号是新账号,数据不全,查的项有可能不对。
这些东西完全是一边分析抓包和网页源码,一边丢deepseek让AI帮我写,出错了再把错误信息丢给AI帮我改,好赖是跑通了。
另外,我默认你们是会抓包wx小程序的哈。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-11-27 22:28 , Processed in 0.052653 second(s), 6 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表