注意
目前发现此方法所描述的抓包内容并非学习记录的包,即此方法不管用,待更新......
前言
是否你也有忘记看青年大学习的经历而错过许多评选前置条件 ,是否你也有苦于被催青年大学习的经历 。本次我记录一下本人抓包青年大学习的经验。
前置条件
一部能抓包的手机(使用httpcanary或者使用电脑热点抓包),本文介绍使用HttpCanary抓包重发。(提供httpcanary模块供安装好magisk的人使用)。
抓包开始
- 打开HttpCanary。
- 将微信添加到抓包应用中。
- 点击右下角纸飞机开始抓包。(记得同意HttpCanary的代理权限)。
按照正常步骤在微信进行青年大学习。(如果确定是哪一步让你的学习状态变为已学习,可以从抓包那个步骤附近的包,缩小范围)。
返回抓包界面,分析抓包内容。
我此处为河北共青团。通过英文翻译及大部分包含api的post链接基本上能确定是什么作用,大部分其他get内容为界面资源获取以及日志发送,对我们而言无用。
收藏这两个包并在收藏内对它们进一步分析。
访问方式为get获取学习链接,试试空header访问,即直接复制链接在浏览器访问https://api.54heb.com/study/studyLink,发现也能获取结果,固可直接使用curl https://api.54heb.com/study/studyLink
命令。再分析结果,发现为json格式,需要一定处理(使用jq等shell分析工具)。
访问方式为Post的api接口为本次重点,它能否返回正确的结果直接决定本次成功与否。我们需要分析其发送的内容以及头部文件(header)。经过本人试验在请求体需要变动的东西(在重新登录微信后要重新抓包):
u | c | s |
---|---|---|
本期大学习链接 | 年份 | 期数 |
在请求头部(header)可能需要变动的东西:请求头部可以全部删除,并不是必需品。
使用方法
在HttpCanary中选择导出为curl命令并根据上述要求改动即可。
在任何可以执行shell命令的地方执行此shell命令!(无root手机可使用shizuku获取adb权限)
(如果不能用请将双引号改为单引号, 都是英文半角符号 )。
本文列出了一个基础模板如下:
link=`curl https://api.54heb.com/study/studyLink`
newUrl=`echo "$link" | jq -r .data.new.url`
newYear=`echo "$link" | jq -r .data.new.name | awk -F '年' '{print $1}'`
newMonth=`echo "$link" | jq -r .data.new.name | awk -F '第|期' '{print $2}'`
brief=`echo "$link" | jq -r .data.new.brief`
result=`curl --http2 -X POST -d '{"guid":"GUID","tc":"TC","tn":"TN","n":"开始学习","u":"'$newUrl'","d":"cyol.com","r":"https://h5.54heb.com/","w":400,"m":"[{\"c\":\"'$newYear'\",\"s\":\"'$newMonth'\",\"prov\":\"3\",\"city\":\"3\"}]"}' "https://gqti.zzdtec.com/api/event"`
if [ "${result}" == "ok" ];then
am start -a android.intent.action.VIEW -n com.jozein.xedgepro/.ui.ActivityPerformAction --ei __0 109 --es __2 "${newYear}年第${newMonth}期青年大学习完成,标题为${brief}"
else
am start -a android.intent.action.VIEW -n com.jozein.xedgepro/.ui.ActivityPerformAction --ei __0 109 --es __2 "${newYear}年第${newMonth}期青年大学习失败,标题为${brief}"
fi
后半部分广播内容为我配合Xposededge发送通知提示是否完成