-
-
[原创]企业微信协议发消息字段分析
-
发表于:
2021-7-9 21:14
34073
-
企业微信协议发消息字段分析
声明:本文只做技术交流,不可用于商业用途,否则后果自负。
1. 背景
这两年企业微信的崛起,很多公司开始用它来做私域流量的运营。个微的风控越来越严,很好奇企微是否会借助个微的风控算法呢,所以就研究看看吧。登陆流程搞定后,只能感叹企微风控做得不行,可能跟灰产都不怎么会用企微有关吧,也可能是现在还处在红利期,鼓励大家把营销转到企微上来。登录搞定了,那就再看看如何收发消息,于是把分析的字段分享出来,供大家参考,相关字段数据有进行修改,如果读者发现对不上,请见谅。
2. 发消息请求的构造
发消息优先使用长连接,当长连接失效时,会使用短连接进行发送。但是当长连接失效且重连失败后,就收不到消息了,这是企业微信的bug吧。
发消息的请求由两部分构成,一部分是包头pb,每个请求的包头就只有个别字段有差别,用于说明是什么类型的请求,另一部分是包体pb,携带与请求相关的数据。
2.1 包头pb的格式
包头pb如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 1: 1
2: 6
3: 1684752517971958(发送者id)
4: 131075
5: 1001(请求类型)
6: 79
7: 128
8: "0AA0718F-163B-45B5-A3C1-C8B0F32FF18A"(设备id)
9: "3.1.5.*****"(app版本号)
10: 1970335353054066(公司id)
11 {
1 {
1 {
1: 1
2: 0
}
2: "7u\213\333U2\010l\320+\317\007]\333\222g\nJgfg[\034\365\265\tjU\3266\006\335"
3: "X\003G\325l\245\003\353H\031\213>G%\263\326\357\236l\016\222\3751\232\032\334P\234\235gL\207\007l\016\316\374\223\325\331L2\301\250\201\034,lH^\035\254}BC8W\001\010\2368C\257\356"
}
4 {
1 {
1: 0
2: 0
3: 0
}
}
}
12: 1
13: 0
14: ""
15: 0
16: 2251914379752856(发送者uin)
17: 0
|
字段11是一个key,在登录阶段返回的,每个请求都必须携带该数据。
2.2 包体pb的格式
包体pb如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1: 10670659(消息id)
2: 0
3: 1688852877731652(接收者id)
5: 0
6 {
1 {
1: 0
2 {
1: "hello world"(文本消息)
}
}
}
9: "CAQQl9SrgwIY9r/bn4qAgAUgnrbv6Qc="
10: 131075
13: "\345\210\233\345\247\213\344\272\272"(昵称)
14: 1
15: 131072
17: ""
18: 1
19: 2
20: 0
21: 0
|
字段9解密出来的格式如下
1 2 3 4 | 1: 4
2: 162877655
3: 1684752517971958(发送者id)
4: 1791074718
|
3. 发消息返回结果的解析
返回结果的pb数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 1 {
1: 0
2: "ok"
}
2 {
5 {
1: 1023396(服务器保存的消息id)
2: 10691567
3: 0
4: 1684752517971958(发送者id)
5: 1688852877731652(接收者id)
6: 0
7: 0
8 {
1 {
1: 0
2 {
1: "hello world"
}
}
}
12: 1626417164(时间戳)
13: 131074
14: 131075
15: "CAQQl9SrgwIY9r/bn4qAgAUgnrbv6Qc="
16: "\345\210\233\345\247\213\344\272\272"
17: 1688852877731652
21: 0
}
6: 0
}
|
响应数据个人觉得没必要返回消息内容了吧,毕竟是自己发出去的消息。只需要返回消息id等必要信息就行了,减少数据量。
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!