吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1286|回复: 4
收起左侧

[学习记录] 一次成功的wx指数接口调用,一次失败的wx指数接口调用

[复制链接]
ajian51168 发表于 2023-5-18 16:30
一次成功的接口调用

本来只是做一个微信指数接口的调用,python代码如下:

urllib3.disable_warnings()
page = SessionPage()
state = page.post(url='https://search.weixin.qq.com/cgi-bin/wxaweb/wxindex',
                                    json={
                                            "openid": "xxxxxxxxxxx",
                                            "search_key": "xxxxxxxxxxxx",
                                            "cgi_name": "GetMultiChannel",
                                            "query": ["母亲节"],
                                            "start_ymd": "20210422",
                                            "end_ymd": "20230518"
                                    },
                                    headers={
                                            'Host': 'search.weixin.qq.com',
                                            'referer': 'https://servicewechat.com/wxc026e7662ec26a3a/42/page-frame.html',
                                            'user-agent': 'Mozilla/5.0 (Linux; Android 7.1.2; SM-G9810 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36 MMWEBID/3687 MicroMessenger/8.0.27.2220(0x28001B36) WeChat/arm32 Weixin NetType/WIFI Language/zh_CN ABI/arm32 MiniProgramEnv/android',
                                            'Content-Type': 'application/json'
                                    }, show_errmsg=True,
                                    verify=False)
print('state:' + str(state))
print('响应:' + page.html)

代码很简单,根据Charles的拦截,把参数拼装上去,请求直接就成功了!

一次失败的接口调用

正当我高兴的时候,再发一次请求,响应变成了:{"code":-10000,"msg":"auth failed."},失败了!
不可置信,多试几次,一直都auth failed,确信,确实是失败了!
所以就开始找失败的原因。
多次比对Charles的参数,发现请求里面的search_key是个动态参数,会定时变化。
所以以下内容就是研究search_key为啥会变,怎么变的内容。

逆向源码

wx指数数据来源于wx指数这个小程序,所以得逆向wxapkg,到源码里面探究一番。
在模拟器上找到对应小程序wxapkg包,拖出来后,用wxappUnpacker解包出来,发现一大堆错误。
主要就是app.json配置错误,Error: xxx.js、 _typeof3 is not a function等错误,逐个解决后,用wx开发工具打开源码,查看对应代码:

i = require("./login"),
r = i.checkLogin

! function a(h) {
          return r().then(function (r) {
            h && n.setId();
            var l = t(t({
              openid: r.openid,
              search_key: r.search_key
            }, n.data), e);
            n.log("➡️", "request\n", l), n.timestamp = Date.now(), 
            wx.request({
              url: "https://search.weixin.qq.com/cgi-bin/wxaweb/".concat(n.cgi),
              data: l,
              method: "POST",
              header: {
                "Content-Type": "application/json"
              },
              success: function (t) {
               ......

可以看出,请求的参数search_key来源于r.search_key,r来源于i.checkLogin,i来源于login,找到login.js,其中的checkLogin定义如下:

checkLogin: function () {
    var n = wx.getStorageSync(e);
    return n ? new Promise(function (e) {
      e(JSON.parse(n));
    }) : r();
  }

所以,参数里面的search_key是从缓存里面获取的一个值,其存储地方为:

    return wx.login({
          success: function (o) {
            ! function t() {
              return wx.request({
                url: "https://search.weixin.qq.com/cgi-bin/searchweb/weapplogin",
                data: {
                  appid: "appidxxxxxxxxxxxxxxxxxx",
                  js_code: o.code
                },
                success: function (o) {
                  var r = o.data,
                    u = void 0 === r ? {} : r;
                  try {
                    0 == u.errcode ? (wx.setStorageSync(e, JSON.stringify(u.data)), c = 0, i = null,
                      n(u.data)) : a(u, "weapplogin", t);
                  } catch (n) {
                    a(n, "weapplogin", t);
                  }
                },
                fail: function (n) {
                  a(n, "weapplogin", t);
                }
              });
            }();
          },

所以,这个存储的值来源于cgi-bin/searchweb/weapplogin接口的响应,而这个接口需要传入appid和js_code两个参数,appid好说,js_code来源于wx.login的code,这就不好搞了。
翻了半天,没有看到对wx.login()进行描述的详细内容,但是根据互联网上的一些帖子,说这块已经有成熟的wx授权平台了,可以通过其平台获取code,而无需调用wx.login()。
所以,通过接口调用wx指数的企图最终失败了。

最后

所以,最后,哪位大佬介绍一个授权平台?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cdsgg 发表于 2023-5-18 16:55
这玩意不能乱介绍 论坛违规的
zhangjjjqing 发表于 2023-6-2 14:37
zhangjjjqing 发表于 2023-6-7 15:48
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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