找回密码
 立即注册

微信扫码登录

搜索
查看: 4752|回复: 22

[流程系列] 请教下大佬们,怎么通过webhook节点拉取并修改Cookies

[复制链接]

4

主题

133

回帖

902

积分

高级会员

积分
902
金钱
765
HASS币
0
发表于 2024-4-23 08:56:56 | 显示全部楼层 |阅读模式
本帖最后由 snowing 于 2024-4-23 10:18 编辑

参考大神33201leenkon原贴【node-red】比亚迪汽车通过官方微信API接入HAhttps://bbs.hassbian.com/thread-18154-1-1.html

Cookies有效期很短,在网上找到了抓包工具,可以通过WebHook推送,nodered已经可以接收到Cookies了本人编程小白,想通过自动替换Cookies,搜索和用GPT都不行,只能求助大神,感谢

下面是我建的webhook节点,复制的代码导入有问题,缺少\,请不要复制下面的代码。我作为附件上传了。
[{"id":"91d117833116ea62","type":"ha-webhook","z":"89a87322e24a5442","name":"Cookies WebHook","server":"70a6b1f4.22b43","version":3,"exposeAsEntityConfig":"","outputs":1,"webhookId":"1XGRXxqYC6pQWCUAB1twuvp51xbzvFM9","method_get":false,"method_head":false,"method_post":true,"method_put":true,"outputProperties":[{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"payload","propertyType":"msg","value":"","valueType":"data"}],"payloadLocation":false,"payloadLocationType":false,"headersLocation":false,"headersLocationType":false,"x":220,"y":180,"wires":[["c9d026c8cd5fdfd6","2eeddbee11099bb8"]]},{"id":"70a6b1f4.22b43","type":"server","name":"Home Assistant","addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false}]
目的是,当Cookies WebHook节点接收到Cookies,格式为HWWAFSESID=1234567890123456789; HWWAFSESTIME=1234567890123; 0ab08166-1234-1234-1234-02ee6710ea63=3807a8bb1a62c923c4da621150f11234; openid=1234579dd08b484ca5993703905706641713832412345的数据时,用openid=1234579dd08b484ca5993703905706641713832412345自动替换下面API参数节点中openid=对应部分,其他部分不做修改。
[{"id":"be4a66ad5a4fd7f8","type":"function","z":"051f5ad5ce40adac","name":"API参数","func":"const userInfo = {\n    "cookies": "openid=1234579dd08b484ca5993703905706641713832412345;0ab08166-1234-1234-1234-02ee6710ea63=3807a8bb1a62c923c4da621150f11234"\n}\nif (typeof (msg.payload) === "object" && msg.payload.listInfo[0].vin) {\n    global.set("bydUserInfo", Object.assign(userInfo, msg.payload.listInfo[0]));\n}\nmsg.headers = {"cookie":userInfo.cookies}\nif (!global.get("bydUserInfo")) {    \n    msg.url = `https://bydcloud.byd.com/wechat/getuserinfo?timeStamp=${Math.floor(Date.now())}&random=${global.uuid}`\n    return [msg, null];\n} else {\n    msg.url = `https://bydcloud.byd.com/wechat/location?caridentifier=${global.get("bydUserInfo").vin}&timeStamp=${Math.floor(Date.now())}&random=${global.uuid}&longitude=0&latitude=0`\n    return [null, msg];\n}","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":80,"wires":[["e48fb87f4ea2cfe9"],["3e1d677280357738"]]}]

节点.rar

1.22 KB, 下载次数: 10

回复

使用道具 举报

5

主题

195

回帖

826

积分

高级会员

积分
826
金钱
626
HASS币
0
发表于 2024-7-1 16:56:02 | 显示全部楼层
谢谢楼主分享。能分享下完整的流吗?还有比亚迪汽车PC工具中的webhook地址是不是填https://<ip>:<port>/api/webhook/<webhookid>
回复

使用道具 举报

0

主题

37

回帖

331

积分

中级会员

积分
331
金钱
294
HASS币
0
发表于 2024-5-7 16:12:37 | 显示全部楼层
非常感谢,我继续测试。
回复

使用道具 举报

4

主题

133

回帖

902

积分

高级会员

积分
902
金钱
765
HASS币
0
 楼主| 发表于 2024-5-7 15:55:58 | 显示全部楼层
加一个节点,定义一个openid的变量,在原来cookies的位置引用
[{"id":"34c7f95ab091b563","type":"function","z":"46a4dfa57d6a5b6e","name":"提取openid","func":"var payload = msg.payload;\nvar cookieString = payload.Cookies;\n\nvar regex = /[^;\\s]+=[^;]+/g;\nvar matches = cookieString ? cookieString.match(regex) : null;\n\nvar openid, openid1, openid2;\n\n// 如果找到了匹配项\nif (matches && matches.length >= 2) {\n    openid1 = matches[3].trim(); // 第一个匹配项,去除首尾空格\n    openid2 = matches[2].trim(); // 第二个匹配项,去除首尾空格\n\n    // 如果 openid1 包含 \"openid=\",则不需要进行互换操作\n    if (!openid1.includes('openid=')) {\n        // 交换 openid1 和 openid2 的值\n        var temp = openid1;\n        openid1 = openid2;\n        openid2 = temp;\n    }\n} else {\n    // 处理没有匹配项或匹配项少于两个的情况,这里可以添加适当的处理逻辑或者直接留空\n}\n\nopenid = openid1 + \";\" + openid2;\nflow.set(\"openid\", openid);\nreturn msg;\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":220,"wires":[["808cfbcebbdfceaa"]]}]
回复

使用道具 举报

0

主题

37

回帖

331

积分

中级会员

积分
331
金钱
294
HASS币
0
发表于 2024-5-7 15:41:28 | 显示全部楼层
如果是这样的话,我再找个时间试试看。另外,你用什么代码来提取COOKIE中的OPENID的,我现在是能将COOKIE传到node-red中了,但只能用整个cookie值
回复

使用道具 举报

4

主题

133

回帖

902

积分

高级会员

积分
902
金钱
765
HASS币
0
 楼主| 发表于 2024-5-7 15:38:21 | 显示全部楼层
又碰到过,没理他。有时候出现有时候没有,不影响使用
回复

使用道具 举报

0

主题

37

回帖

331

积分

中级会员

积分
331
金钱
294
HASS币
0
发表于 2024-5-7 15:37:00 | 显示全部楼层
嗯,我试过很多天了,在车子启动或停车后刷新都还是这个错误。感觉原因不是这个,你有没有碰到这个错误。
回复

使用道具 举报

4

主题

133

回帖

902

积分

高级会员

积分
902
金钱
765
HASS币
0
 楼主| 发表于 2024-5-7 15:36:57 | 显示全部楼层
我用的就是uuid的那个附件
回复

使用道具 举报

4

主题

133

回帖

902

积分

高级会员

积分
902
金钱
765
HASS币
0
 楼主| 发表于 2024-5-7 15:32:51 | 显示全部楼层
https://bbs.hassbian.com/thread-18154-13-1.html
129#楼有回复“出现这个错误是因为频繁访问比亚迪服务器但是车辆状态一直没变返回了空值,如果车子启动或其它信息有变更就会返回正确的信息。可以加个筛选屏蔽掉这个消息。”
回复

使用道具 举报

0

主题

37

回帖

331

积分

中级会员

积分
331
金钱
294
HASS币
0
发表于 2024-5-7 15:24:18 | 显示全部楼层
本帖最后由 bebetter 于 2024-5-7 15:25 编辑

微信截图_20240507150347.png
还是原来的错误,楼主的流能分享学习一下吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-14 03:22 , Processed in 0.057434 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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