cxn 发表于 2023-4-26 17:09

想抓取手机app里的pdf,有什么办法实现?(又有新问题)

本帖最后由 cxn 于 2023-12-12 17:39 编辑

上海这两年高级职称证书只有电子版,可以截图后打印,但是糊,打印出来的带二维码,直接扫是意味不明的字符串,需要在上海人社app里面扫二维码后才显示对应的电子证书,缩放电子证书画面字迹依然清晰,所以我怀疑是用那段字符串发送了一个get情况,然后app返回了一个pdf格式的电子证书,设计之初是让人在线查看用来验证的,没设计下载功能,但是这么清晰的pdf格式电子证书我就是想抓取出来保存在本地,有什么办法实现吗?
-----------------------------------------------------------------------------------------------------
11楼更新,发现不是pdf,而是png,而且不是链接,就是base64字符串,然后解决一个旧问题,冒出一个新问题

-----------------------------------------------------------------------------------------------------
阶段性总结:
先说个题外话——全国性职称证书可以自行通过中国人事考试网( http://www.cpta.com.cn/certQuery.html )下载,是pdf格式的。我这里头大的是上海当地的高级职称证书,根据上海市职称服务系统( http://www.rsj.sh.gov.cn/zcps/zcpssb/index )上《电子证书下载指南》的指导,需要通过上海人社app下载自己的证书,另外根据15#朋友的说法,随身办app也能下载,我没下载过,但估计不论怎么下载都是jpg格式吧。
上海这个证书呢,还自带验证用的二维码,通过上海人社app扫码来验,扫码返回的证书感觉更清晰一点,但是本身不提供将此验证结果(也就是更清晰的电子证书)另存的功能,所以我接受坛友的点拨,尝试了一下抓包,发现扫码后app客户端是把二维码对应的字符串拼接到get请求里发送给服务器,而服务器则是将相关图片文件编码成base64字符串响应给客户端。请求相对简短一点,形如 https://zzjb.rsj.sh.gov.cn/qrCod ... ...&mixedStr=...... ,响应就超长了,形如 {"code":0,"message":"成功","data":{"type":"datasrc","value":"data:image/png;base64,/9j/4A......"}} ,最后那段/9j/4A......字符串真的是超级长,是“复制粘贴到记事本里能把记事本卡死,保存成文本文件能有700KB那么大”的那种长度,所以很不好操作。最后我选择把 data:image/png;base64,/9j/4A...... 这段复制粘贴到Base64转image的在线工具( https://www.lddgo.net/convert/base64-to-image )里,通过此工具解码成图片文件后再下载回本地。另外,12#朋友说可以“chrome直接打开data:image/jpg;base64,{image_data}”来生成图片文件,我试下来生成的图片不全,可能还是因为字符串真的太长了导致的吧,所以目前看下来还是用在线工具效果更好。
以后有空再做深入研究

我猫呢? 发表于 2023-4-26 17:12

抓包看看它发的什么请求,然后你自己发一个试试

chinesepy 发表于 2023-4-26 17:26

现在app一般都是https的请求吧,要抓包要搞定证书的,还挺麻烦的

当光停止 发表于 2023-4-26 17:33

抓个包呗。charles、fiddler、小黄鸟啥的。

TDFF 发表于 2023-4-26 17:36

手机投屏到电脑上,窗口拉大,截图

电脑上装安卓模拟器,装上app,窗口拉大,截图

我都没试过,只是猜想

TDFF 发表于 2023-4-26 17:39

TDFF 发表于 2023-4-26 17:36
手机投屏到电脑上,窗口拉大,截图

电脑上装安卓模拟器,装上app,窗口拉大,截图

或者你看看那个pdf页面有没有“在浏览器中打开”的选项,只在能在浏览器打开就好办了

macos 发表于 2023-4-26 18:21

既然手机糊,换分辨率高的设备登

r_ex 发表于 2023-4-26 19:29

如果不能从浏览器打开
从root过的手机或者模拟器直接去缓存里找是一种办法
另外一种是搞个中间代理服务器,手机上装证书,中间截取流量

JetBrains 发表于 2023-4-26 19:34

HttpCanary 加上证书

V5Style 发表于 2023-4-26 19:53

本帖最后由 V5Style 于 2023-4-26 19:56 编辑

建议用iPhone/iPad操作,iOS对证书没有限制,安装了就能全局使用。
电脑上先安装Fiddler,然后安装 https://www.telerik.com/fiddler/add-ons 里的CertMaker,打开软件后在设置里打开HTTPS解密,生成证书;手机上先用Safari打开电脑IP+Fiddler端口号(8888)安装证书,然后在系统设置里信任证书,最后修改当前无线局域网的代理就可以抓包了。

cxn 发表于 2023-12-11 13:15

一年一轮回马上又要到搞高级职称证书的季节了,于是花了点时间自学了抓包的入门,用的是手机app store直接能下载到的stream,本来想法挺简单,就是想手机上一条龙搞定,搞到链接后再微信发给PC完事,后来发现自己天真了
首先,抓包后发现响应的根本就不是pdf文件的链接,而是把png文件转为base64编码后的超长字符串,上海人社app里显然是先解码回png后再显示出来的,但是我的抓包软件没解码功能啊,于是又去找了在线工具,找到一个网站(https://www.lddgo.net/convert/base64-to-image)可用,然而那串超长字符串真的是超长,手机上想复制出来基本没有可操作性,最后还是回到PC上操作,好在最后成功解码成图片了,大小523.65 KiB,另存到本地后又提示扩展名错误建议改成jpg,不过这不重要

问题来了,我的做法有没有改进的余地?比如有没有抓包工具直接就能base64转成image的,省去我后续一系列手工操作

回忆and无语 发表于 2023-12-11 20:45

linux shell : curl $url | base64 -d > image.png
或者chrome直接打开data:image/jpg;base64,{image_data}

dvd6 发表于 2023-12-11 21:27

pc上没有入口可以查的吗?我怎么觉得同事确实有真正的电子版证书

cxn 发表于 2023-12-11 23:12

dvd6 发表于 2023-12-11 21:27
pc上没有入口可以查的吗?我怎么觉得同事确实有真正的电子版证书

国家级的职称证书有pc平台查询的,http://www.cpta.com.cn/certSearchScope.html,查询结果就是pdf证书,还挺方便
我这里研究的是上海自己的高级职称证书,没找到pc平台,只知道可以通过上海人社app查询

斑马王子 发表于 2023-12-11 23:47

刚刚试了下,在随身办的亮证里可以保存照片格式的职称证书
页: [1]
查看完整版本: 想抓取手机app里的pdf,有什么办法实现?(又有新问题)