前言
- 将爬虫的爬取过程分为网络请求,文本获取和数据提取3个部分 。
- 信息校验型反爬虫主要出现在网络请求阶段,这个阶段的反爬虫理念以预防为主要目的,尽可能拒绝反爬虫程序的请求 。
- 动态渲染、文本混淆则出现在文本获取及数据提取阶段,这个阶段的反爬虫理念以保护数据为主要目的,尽可能避免爬虫获得重要数据
- 特征识别反爬虫通过客户端的特征、属性或用户行为特点来区分正常用户和爬虫程序的手段
- App网络传输和数据收发相对隐蔽,用户无法直接查看客户端发出的请求信息和服务端返回的响应内容,也无法直接查看App的代码,构成了反爬虫
- Python常见反爬虫类型(信息校验型、动态渲染、文本混淆、特征识别反爬虫等)
- 可以安装mitmproxy、charles、fillder三者之一对手机抓包
- 原由:借助抓包工具能够查看App的网络请求信息,前提是App使用的网络传输协议是HTTP;如果App使用的网络传输协议是HTTPS,需要计算机和手机端同时安装证书;
- 漏点:对于Android手机只有版本号小于7的Android系统才允许在证书得到信任后对App抓包,高版本的需要刷机(有风险);
- 推荐:选择使用Android模拟器(一个能够在计算机上运行Android系统的应用软件),模拟器允许用户安装任意版本的Android系统,在接近真机体验的同时还不会造成任何设备的损坏;
- 签名验证是防止恶意连接和避免服务器端被数据欺骗的有效方式之一,也是后端API常用的防护手段之一;
- 高级语言的源程序需要通过编译生成可执行文件,编译就是将编程语言翻译成计算机能够识别和处理的二进制数据的过程;
- 反编译又名计算机软件反向工程,指的是将软件应用还原成开发语言代码的过程;
- APK(Android Application Package)即Android应用程序包,如果我们想要查看Android应用程序的源码,就需要使用反编译手段提取APK中的代码;
- 借助反编译软件Apktool和JADX将APK反编译成代码
- 示例:安装JADX软件>启动JADX软件后>点击“文件”菜单并在下方列表中选择“打开文件”>选择对应的APK文件>点击菜单栏“导航”_“搜索文本”>转到相应代码 ;JADX软件使用 , jadx下载与使用,jadx安装包
- App与服务器的通信使用的也是HTTP协议和WebSocket协议,所以基于这两种网络协议的反爬虫手段可以应用在App上,想要查看App的代码,必须将对应的APK文件反编译成代码
- 代码混淆:将代码转换成一种功能等价但人类难以阅读和理解的文本 。混淆指使用简短或冗长且无规律的字符替代代码中的方法、类和变量的名称,在缺乏注释和混淆映射表的情况下,工程师几乎无法阅读项目代码 。
- Anfroid代码混淆其实是对项目中的字符进行映射与压缩 。混淆时会将代码中的类名、变量名和函数名用无意义的简短名称进行映射,如:
- # 映射示例:映射前 ————》 映射后
seaking ————》 eclass indexview ————》 class v
- 这样能够保证反编译APK后得到的代码无法见名知意,令APK难以被逆向 。Android可以使用ProGuard
- ProGuard是Android官方提供的代码压缩和混淆工具,它会检测和移除封装应用中的未使用的类、字段、方法、属性以及自带代码库中的未使用项 。ProGuard还可以优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类和方法 。
- 每次构建混淆规则时,ProGuard会在/build/outputs/mapping/release/中输出下列文件 。
- """这些文件便于开发者对混淆后的代码进行追踪和调试,如果mapping,txt该文本被覆盖或丢失,那么即使是项目开发者,也无法阅读混淆过后的代码"""
dump.txt:说明APK中所有类文件的内部结构;mapping.txt:提供原始与混淆过的类、方法和字段名称之间的转换;seeds.txt:列出未进行混淆的类和成员;usage.txt:列出打算从APK文件中移除的代码 - 代码混淆并不能阻止APK被反编译,但是可以有效提高他人阅读程序代码的难度,进而加强对数据的保护 。代码中的字符串并不会被混淆
推荐阅读
- SQLServer基础:Apply关键字用法介绍
- 单电相机和单反哪个好?
- 推特|马斯克440亿美元收购推特 反垄断专家:监管机构应不会阻止
- 发型|?直男“最反感”的3种女生发型,女生却认为很美,第一种很常见!
- 终于有人把Scrapy爬虫框架讲明白了
- 一文弄清Python网络爬虫解析库!内含多个实例讲解
- 移动WebApp高性能解决方案——MIP
- Scrapy 爬虫完整案例-基础篇
- 佳能单反相机哪款好
- 科研团队在银河系中发现两个孕育恒星的巨大分子云 发射星云是星云气体反射及散射附近恒星可见光而亮的
