Stage1st

 找回密码
 立即注册
搜索
查看: 3281|回复: 14
打印 上一主题 下一主题

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

[复制链接]
     
跳转到指定楼层
楼主
发表于 2023-4-26 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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}”来生成图片文件,我试下来生成的图片不全,可能还是因为字符串真的太长了导致的吧,所以目前看下来还是用在线工具效果更好。
以后有空再做深入研究

回复

使用道具 举报

     
2#
发表于 2023-4-26 17:12 来自手机 | 只看该作者
抓包看看它发的什么请求,然后你自己发一个试试
回复

使用道具 举报

     
3#
发表于 2023-4-26 17:26 | 只看该作者
现在app一般都是https的请求吧,要抓包要搞定证书的,还挺麻烦的
回复

使用道具 举报

     
4#
发表于 2023-4-26 17:33 | 只看该作者
抓个包呗。charles、fiddler、小黄鸟啥的。
回复

使用道具 举报

5#
发表于 2023-4-26 17:36 | 只看该作者
手机投屏到电脑上,窗口拉大,截图

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

我都没试过,只是猜想
回复

使用道具 举报

6#
发表于 2023-4-26 17:39 | 只看该作者
TDFF 发表于 2023-4-26 17:36
手机投屏到电脑上,窗口拉大,截图

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

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

使用道具 举报

7#
发表于 2023-4-26 18:21 | 只看该作者
既然手机糊,换分辨率高的设备登
回复

使用道具 举报

     
8#
发表于 2023-4-26 19:29 | 只看该作者
如果不能从浏览器打开
从root过的手机或者模拟器直接去缓存里找是一种办法
另外一种是搞个中间代理服务器,手机上装证书,中间截取流量
回复

使用道具 举报

     
9#
发表于 2023-4-26 19:34 来自手机 | 只看该作者
HttpCanary 加上证书
回复

使用道具 举报

     
10#
发表于 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)安装证书,然后在系统设置里信任证书,最后修改当前无线局域网的代理就可以抓包了。
回复

使用道具 举报

     
11#
 楼主| 发表于 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的,省去我后续一系列手工操作
回复

使用道具 举报

     
12#
发表于 2023-12-11 20:45 | 只看该作者
linux shell : curl $url | base64 -d > image.png
或者chrome直接打开data:image/jpg;base64,{image_data}

评分

参与人数 1战斗力 +1 收起 理由
cxn + 1 感谢思路

查看全部评分

回复

使用道具 举报

     
13#
发表于 2023-12-11 21:27 | 只看该作者
pc上没有入口可以查的吗?我怎么觉得同事确实有真正的电子版证书
回复

使用道具 举报

     
14#
 楼主| 发表于 2023-12-11 23:12 | 只看该作者
dvd6 发表于 2023-12-11 21:27
pc上没有入口可以查的吗?我怎么觉得同事确实有真正的电子版证书

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

使用道具 举报

     
15#
发表于 2023-12-11 23:47 | 只看该作者
刚刚试了下,在随身办的亮证里可以保存照片格式的职称证书
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|stage1st 沪ICP备13020230号-1 沪公网安备 31010702007642号

GMT+8, 2024-4-28 17:55 , Processed in 0.030810 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表