app面临的反爬措施

  • 这个 App 的请求根本抓不到包,原因可能是 App 本身设置了不走系统代理。
  • 对一些 HTTPS 的请求,抓包失败,原因可能是系统或 App 本身设置了 SSL Pining,对 HTTPS 证书进行了校验,代理软件证书校验不通过,拒绝连接。
  • 某些包即使抓到了,也发现了其中带了加密参数,比如 sign、token 等等,难以直接用程序模拟。
  • 为了破解一些加密参数可能需要对 App 进行逆向,逆向后发现是混淆后的代码,难以分析逻辑。
  • 一些 App 为了防止逆向,本身进行了加固,需要对 App 进行脱壳处理才能进行后续操作。
  • 一些 App 将核心代码进行编译,形成 so 库,因此可能需要对 so 库进行逆向才能了解其逻辑。
  • 一些 App 和其服务器对以上所有的流程进行了风控处理,如果发现有疑似逆向或破解或访问频率等问题,返回一些假数据或拒绝服务,导致爬虫难以进行。

基本概念和常用工具 - 图1

安卓基础知识

安卓下面 xxx.dex dex是安卓里的可执行文件

APK

APK是一个压缩文件,用zip压缩解压

APK包的目录结构:
assets:资源文件(图片,网页,视频),不会被编译。
res:资源文件(静态文本,图片,关键资源) 汉化,要被编译。 举例汉化
lib:so库,动态链接库,类似于windows中的dll,系统库,自己打包的库。有的把加密/token生成方式放在.so文件里
META-INF:签名信息。
AndroidManifest.xml:配置信息(关键),举例修改权限

  • 一个apk只能有一个application,要通过读这个文件才知道application在哪里
  • 很重要,从哪里去启动这个app HdjApplication 这个就是入口的类(app生命周期的开始)
  • 有几个就是代表有几个界面

classes.dex:android dalvik虚拟机可执行文件
resources.arsc:资源索引/对应文件

附录

Charles和mumu模拟器安装
Charles报错Failed to install helper解决方案
mitmproxy安装和环境配置
mitmproxy在模拟器环境配置
mitmproxy详细用法

UiAutomator和appium之间的联系和区别