学习目的:
因为学校本周要求我们做微信某个小程序的答题,但是主题是关于“素养展示”的答题跟我材料狗没有半毛钱关系,于是想到能不能通过抓包解决,因为只是说答题又没有说怎么去答。
在这里我本来是想直接用fiddler抓手机的包,结果怎么配置也解决不了,能抓手机上网页的包,不能抓app的包,因此这里用的是电脑抓微信小程序的包
接下来就是电脑微信抓包:
发现答案就在json代码当用,{}下有一个属性rightanswer,他对应的结果就是正确答案,那就简单了直接抄就行了,但是这样翻阅这对应实在是太慢了,我们将生成的响应以json文件保存到文件夹当中,之后使用编辑python文件去调用它。
1. 首先读取当前文件夹内所有文件,我这样设计是为了能够保存到json文件后程序能直接生成对应的txt答案文件,因为每次保存的json文件名称可能不一样。
import json
import os
filename = os.listdir()
接下来就是判断哪个是json文件并且打开它:
for file in filename:
i = 1
if file.endswith('.json'):
file2 = open(file,'r',encoding='utf-8')
之后做一个简单的输出查看json文件的内容:
发现我们要找的rightAnswer在data中并且被储存在列表当中以值的形式存在,因此可以用下列代码直接输出它:
if file.endswith('.json'):
file2 = open(file,'r',encoding='utf-8')
json1 = json.load(file2)
list1 = json1['data']
print(list['rightAnswer'])
之后我们只要把输出的结果以txt形式保存到文件夹中就可以了:
ith open('1.txt','w') as f :
i = 1
for list in list1:
f.write(f"{i}.{list['rightAnswer']} {list['title']}\n")#在这里输出了title怕万一题目不对应
i += 1 #i代表到第几个问题了
然后打开txt就是想要的结果了:
这些写完之后便想着直接保存json文件就可以得到txt文件,并且打开文件,这样的话答题时间能更快一点:
import json
import os
num = 1
while num == 1:
filename = os.listdir()
for file in filename:
i = 1
if file.endswith('.json'):
file2 = open(file,'r',encoding='utf-8')
json1 = json.load(file2)
list1 = json1['data']
with open('1.txt','w') as f :
i = 1
for list in list1:
f.write(f"{i}.{list['rightAnswer']} ")
i += 1
if (i-1)%5 == 0 :
f.write('\n')
if file.endswith('.txt'):
count = True
if count:
os.startfile('1.txt')
count = False
num = 0
其中进行了一点小修改,让选项5个一组的形式下存在运行查看结果:
很好在fiddler保存json文件之后就可以立即弹出来,然后对着选就行了,这也算是利用python简化了一点工作吧。
存在问题:
小程序答题必须能用微信打开,有的打不开的就没办法了抓包的问题我也在慢慢看解决不了。