微信小程序爬虫遇到 token 的问题

2019-09-17 02:43:27 +08:00
 Arabot9

最近在写一个小程序爬虫,但 token 一小时就过期了,希望实现自动获取 token 功能。抓包发现获取 token 的 post 中有下面这些参数:

{
 "code": "061DUBm620Tz8S0Oq5q62GdFm62DUBmh",
 "appid": "wxf8e9886ac9480eba",
 "sign": "c2b542186ec81e639fb638599949cc76",
 "nonceStr": "d52uu1kuwqe22wj6fa3h1eh",
 "stm": 1568651077913
}

加密方式为字符串拼接 md5 加密,字符串拼接函数需要传入三个参数:{"code":"061DUBm620Tz8S0Oq5q62GdFm62DUBmh","appid": "wxf8e9886ac9480eba",},公钥,上一次的 token ;

用抓到的数据测试过最后加密结果是对的,nonceStr 生成和时间戳都已经解决,appid 可以写死,就是 code 不太清楚是否可以模拟生成,测试发现写死仍然无法返回新的 token,源码里 code 相关代码如下:

default.wxLogin({
   method:
   "post",
   query: {
      code: g.code,
      appid: (0, m.MINI_APP_INFO)().miniAppId
}
});

抓了几个 code 发现首尾有一点点相似

061bXNmv0Yfcti14YUpv0BkGmv0bXNmW
061DUBm620Tz8S0Oq5q62GdFm62DUBmh
071eoBRe2vLbvI0AlOOe2txzRe2eoBR8

请教下各位大大这个 code 是否可破之,感谢!

7077 次点击
所在节点    微信
14 条回复
lhx2008
2019-09-17 07:53:30 +08:00
你看一下小程序的登录机制,登录的时候,小程序生成一个和用户有关的唯一码 appid,发给服务器,服务器再拿 appid 和 token 去微信服务器拿一个临时的 code,然后服务器可以考虑做或者不做处理
lhx2008
2019-09-17 07:54:52 +08:00
名词我有点忘了,可能有点混乱
guansixu
2019-09-17 08:40:29 +08:00
没办法伪造,调用的微信小程序的登录 API
silverbooker
2019-09-17 12:01:19 +08:00
你说的这个 code 是 wx.login() 方法生成的 code 吧。理论上是没办法破的,你找找相关资料试试吧。

参考:

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
Arabot9
2019-09-19 22:06:00 +08:00
@silverbooker 不破解的话 有接口可以访问获取吗
Arabot9
2019-09-19 22:06:24 +08:00
@guansixu 有专门的接口来获取这个 code 吗
yc97
2019-09-30 14:28:50 +08:00
需要传入第三个参数 第一个 e.data 大佬是如何知道是这个的 求解
Arabot9
2019-10-21 03:32:25 +08:00
@yc97 你弄的也是某搏小程序吗
yc97
2019-10-28 08:40:15 +08:00
@Arabot9 是的 这个登录没办法解决 可以用自动化测试工具来获取 某监控用的就这个方法
Arabot9
2020-01-17 17:41:42 +08:00
@yc97 用啥工具搞的 我用 mitmdump 证书始终有问题 可能安卓版本太高了 安全验证加强了
codererrr
2020-04-15 22:59:28 +08:00
解决了吗
Arabot9
2020-09-18 00:02:21 +08:00
@codererrr 没有弄了 没啥好玩的了
douleL
2021-01-05 14:22:23 +08:00
请问 nonceStr 和 sign 是什么规则生成的
douleL
2021-01-05 15:50:18 +08:00
某搏小程序你进展到哪步了吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601348

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX