昨天发了一个中燃在线的数据抓取的帖子,说的太笼统了,今天我把自己的NR流分享一下。
个人信息我会隐去,重要的,那个“盐”,你们还得去
https://bbs.hassbian.com/thread-30786-1-2.html
这个贴子里提到的位置自己找,不方便公布出来,能找到你们就用,找不到就算了,也希望找到的也别公布出来,毕竟涉及到信息安全。
先贴一下完整流。
分三行,一行一行说:
第一行:
抓过包的应该明白,要模拟中燃在线小程序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节点
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小程序的哈。
|