jsonpath
xlwt
以下实践来自某微信小程序面试题
准备工作
怎么抓小程序的包
首先要解决的就是证书的问题:
- 安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统的证书
- 安卓系统 7.0 以上版本,微信 7.0 以下版本,微信只会信任系统提供的证书
- 安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任自己配置的证书列表
显然,安卓 7.0 以下的系统或者微信 7.0 以下版本
我这里选用用的模拟器 6.0 的版本,为了保险起见,装的是微信 6.7.3 版本
怎么下载微信的老版本呢?可以到「应用汇」之类的app上下载到
面试题提取
通过上面的准备工作,不出意外,可以顺利抓包了。先分析接口请求和响应,抓包信息(关键信息如下):
页面不多的话,可直接用小程序自动化测试的方式拿到所有请求和响应并保存为 har 格式文件
更多关于小程序自动化测试可参看小程序自动化测试
def data_process(data):
with open(data, 'rb') as f:
f_str = f.read()
lemon_json = json.loads(f_str)
entries_len = len(lemon_json['log']['entries'])
data = []
for i in range(0, entries_len):
json_expr_topic = '$.log.entries[{}].response.content.text'.format(i)
topic = jsonpath.jsonpath(lemon_json, json_expr_topic)
try:
json_expr_subject_content = '$.data.stems[*].content'
subject_content = jsonpath.jsonpath(json.loads(topic[0]), json_expr_subject_content)
json_expr_content = '$.data.stems[*].items[0].content'
content = jsonpath.jsonpath(json.loads(topic[0]), json_expr_content)
json_expr_answer = '$.data.stems[*].items[0].answer'
answer = jsonpath.jsonpath(json.loads(topic[0]), json_expr_answer)
if subject_content and content and answer:
for subject in list(zip(subject_content, content, answer)):
data.append(subject)
except:
pass
return data
知识点:jsonpath 提取关键信息
面试题存入 excel
def save_to_excel(data, save_name):
file = xlwt.Workbook()
table = file.add_sheet('data')
row_title = [u'题干', u'问题', u'答案']
for i in range(0, len(row_title)):
table.write(0, i, row_title[i], set_style('Times new Roman', 220, True))
for i, p in enumerate(data):
for j, q in enumerate(p):
# print(i + 1, j, q)
table.write(i + 1, j, q)
file.save(save_name)
# 表格格式设置
def set_style(name, height, bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
pat = xlwt.Pattern()
pat.pattern = xlwt.Pattern.SOLID_PATTERN
pat.pattern_fore_colour = 5
font.name = name
font.bold = bold
font.colour_index = 2
font.height = height
style.font = font
style.pattern = pat
return style
知识点:xlwt 库存入数据到 excel
其他
获取完整面试题,可关注我的公众号 CodeMonkeyJerry,后台回复 “面试题” 获取。