中秋发祝福?一套程序让你成为相亲相爱一家人群里最靓的仔

Posted 梦想橡皮擦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中秋发祝福?一套程序让你成为相亲相爱一家人群里最靓的仔相关的知识,希望对你有一定的参考价值。

需求调研

中秋到了,又到了在家庭群发祝福语的时候了,如何发,才能成为家里老人面前最精彩的那一人,深深的困扰着橡皮擦,知道我发现了下面这个小程序,有解了!

这风格简直太熟悉了,四大姑三大姨不一直在发送这些【美丽的】图片么,当打开图片的详情之后,发现下图更加确定了,我必须要采集一下这个小程序。

需求分析

通过简单的抓包,提炼需求如下所示:

  1. 抓取封面图,重点为获取接口响应数据
  2. 抓取详情页文案,解码加密参数

接下来就是对该小程序进行抓包,得到如下内容:

请求的地址是:

https://www.ezhizhu.com/app/index.php?i=35&t=0&v=1.1.0&from=wxapp&c=entry&a=wxapp&do=listdata&&m=tc_bestgood

但是请求参数中包括了一个 sign 参数,碰到这种情况使用普通手段已经无法解决了,需要使用解包手段。
PC 端小程序解包程序使用 小锦哥 小程序工具

解包实战

点击目标 PC 端目标小程序,然后在本地找到 __APP__.wxapkg 文件。
该文件在微信文件管理的目录中。

进入到该目录之后,跳转到 WeChat Files 文件中,然后寻找 Applet 文件夹。

小程序文件夹在新版本的微信中以 wx 开头,然后进入文件夹得到一个数字目录,进入即可找到 APP.wxapkg 文件。

① 使用小程序工具进行解密

安装小程序解包工具之后,按照下图选择对应文件,然后选择解密后的保存路径,点击开始解密即可。

解密之后的文件如下所示。

拿到该文件之后,就可以对其反编译操作,图示如下。

反编译成功出现下述弹窗。

此时在目标目录出现一个文件夹,进入即可发现相应的代码文件。

下图是解包之后的源码。

② 分析源码

接下来打开源码文件,很容易就分析到其目标数据,顺带也可以看到其加密参数 sign 的来源,即 a.Data.sign

简答查找源码,得到 sign 的加密函数,如下所示。

 Sign: function() 
        var t = Math.round(new Date().getTime() / 1e3), a = this.md5("taichengagressor@2018#Y2MyZTlmYmUxMWY5MjJkODg4MTM2ODQ2MjE3MTFmZWI5OTg=#" + t);
        this.Data.sign = a, this.Data.timestamp = t;
    ,

将其转换为对应的 Python 代码时,得到如下内容:

import requests
import time
import hashlib
headers = 
    "Host": "www.ezhizhu.com",
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF"

t = int(time.time())
a = hashlib.md5(("taichengagressor@2018#Y2MyZTlmYmUxMWY5MjJkODg4MTM2ODQ2MjE3MTFmZWI5OTg=#"+str(t)).encode('utf8')).hexdigest()

data = 
    "timestamp": t,
    "sign": a,
    "page":1

接下来编写完整的请求代码:

import requests
import time
import hashlib
headers = 
    "Host": "www.ezhizhu.com",
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 MicroMessenger/7.0.4.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF"

t = int(time.time())
a = hashlib.md5(("taichengagressor@2018#Y2MyZTlmYmUxMWY5MjJkODg4MTM2ODQ2MjE3MTFmZWI5OTg=#"+str(t)).encode('utf8')).hexdigest()

data = 
    "timestamp": t,
    "sign": a,
    "page":1


def r():
    res = requests.post(
        'https://www.ezhizhu.com/app/index.php?i=39&t=0&v=1.1.0&from=wxapp&c=entry&a=wxapp&do=listdata&&m=tc_bestgood',data = data,headers=headers,verify=False)
    print(res.text)

if __name__ == '__main__':
    r()

运行代码,得到下图所示内容:

当看到 JSON 响应串时,任务已经完成。

总结

写到这里,该小程序已经对我们已经没有秘密可言了,剩下的就是简单的 Python 代码处理数据了,本文的重点应放在小程序解包与反编译上,如果掌握了本部分内容,后面所有的小程序都可以使用相同的手法解决,拿它的接口。

以上是关于中秋发祝福?一套程序让你成为相亲相爱一家人群里最靓的仔的主要内容,如果未能解决你的问题,请参考以下文章

新年祝福短信集锦

程序员过中秋丨用代码制作一个祝福小网页(html+css)

中秋节的特别礼物----属于程序员的专有浪漫

人工智能下的中秋祝福

生活篇~ “金九“前半段小结 及 晚来的中秋祝福

#yyds干货盘点#愚公系列2022年11月 微信小程序-项目篇(祝福语)-01 首页页面设计