V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Arabot9
V2EX  ›  微信

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

  •  
  •   Arabot9 · 2019-09-17 02:43:27 +08:00 · 6716 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在写一个小程序爬虫,但 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 是否可破之,感谢!

    14 条回复    2021-01-05 15:50:18 +08:00
    lhx2008
        1
    lhx2008  
       2019-09-17 07:53:30 +08:00 via Android
    你看一下小程序的登录机制,登录的时候,小程序生成一个和用户有关的唯一码 appid,发给服务器,服务器再拿 appid 和 token 去微信服务器拿一个临时的 code,然后服务器可以考虑做或者不做处理
    lhx2008
        2
    lhx2008  
       2019-09-17 07:54:52 +08:00 via Android
    名词我有点忘了,可能有点混乱
    guansixu
        3
    guansixu  
       2019-09-17 08:40:29 +08:00
    没办法伪造,调用的微信小程序的登录 API
    silverbooker
        4
    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
        5
    Arabot9  
    OP
       2019-09-19 22:06:00 +08:00
    @silverbooker 不破解的话 有接口可以访问获取吗
    Arabot9
        6
    Arabot9  
    OP
       2019-09-19 22:06:24 +08:00
    @guansixu 有专门的接口来获取这个 code 吗
    yc97
        7
    yc97  
       2019-09-30 14:28:50 +08:00 via iPhone
    需要传入第三个参数 第一个 e.data 大佬是如何知道是这个的 求解
    Arabot9
        8
    Arabot9  
    OP
       2019-10-21 03:32:25 +08:00
    @yc97 你弄的也是某搏小程序吗
    yc97
        9
    yc97  
       2019-10-28 08:40:15 +08:00 via iPhone
    @Arabot9 是的 这个登录没办法解决 可以用自动化测试工具来获取 某监控用的就这个方法
    Arabot9
        10
    Arabot9  
    OP
       2020-01-17 17:41:42 +08:00
    @yc97 用啥工具搞的 我用 mitmdump 证书始终有问题 可能安卓版本太高了 安全验证加强了
    codererrr
        11
    codererrr  
       2020-04-15 22:59:28 +08:00
    解决了吗
    Arabot9
        12
    Arabot9  
    OP
       2020-09-18 00:02:21 +08:00
    @codererrr 没有弄了 没啥好玩的了
    douleL
        13
    douleL  
       2021-01-05 14:22:23 +08:00
    请问 nonceStr 和 sign 是什么规则生成的
    douleL
        14
    douleL  
       2021-01-05 15:50:18 +08:00
    某搏小程序你进展到哪步了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1152 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.