您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

Python高级反爬虫类型(App反爬虫)

时间:2021-04-20 10:51:21  来源:  作者:Python小叮当

前言

  • 将爬虫的爬取过程分为网络请求,文本获取和数据提取3个部分。
  • 信息校验型反爬虫主要出现在网络请求阶段,这个阶段的反爬虫理念以预防为主要目的,尽可能拒绝反爬虫程序的请求。
  • 动态渲染、文本混淆则出现在文本获取及数据提取阶段,这个阶段的反爬虫理念以保护数据为主要目的,尽可能避免爬虫获得重要数据
  • 特征识别反爬虫通过客户端的特征、属性或用户行为特点来区分正常用户和爬虫程序的手段
  • App网络传输和数据收发相对隐蔽,用户无法直接查看客户端发出的请求信息和服务端返回的响应内容,也无法直接查看App的代码,构成了反爬虫
  • Python/ target=_blank class=infotextkey>Python常见反爬虫类型(信息校验型、动态渲染、文本混淆、特征识别反爬虫等)

5、App反爬虫

(1)App抓包软件

  • 可以安装mitmproxy、charles、fillder三者之一对手机抓包
  • 原由:借助抓包工具能够查看App的网络请求信息,前提是App使用的网络传输协议是HTTP;如果App使用的网络传输协议是HTTPS,需要计算机和手机端同时安装证书;
  • 漏点:对于Android手机只有版本号小于7的Android系统才允许在证书得到信任后对App抓包,高版本的需要刷机(有风险);
  • 推荐:选择使用Android模拟器(一个能够在计算机上运行Android系统的应用软件),模拟器允许用户安装任意版本的Android系统,在接近真机体验的同时还不会造成任何设备的损坏;

(2)APK文件反编译

  • 签名验证是防止恶意连接和避免服务器端被数据欺骗的有效方式之一,也是后端API常用的防护手段之一;
  • 高级语言的源程序需要通过编译生成可执行文件,编译就是将编程语言翻译成计算机能够识别和处理的二进制数据的过程;
  • 反编译又名计算机软件反向工程,指的是将软件应用还原成开发语言代码的过程;
  • APK(Android Application Package)即Android应用程序包,如果我们想要查看Android应用程序的源码,就需要使用反编译手段提取APK中的代码;
  • 借助反编译软件Apktool和JADX将APK反编译成代码
  • 示例:安装JADX软件>启动JADX软件后>点击“文件”菜单并在下方列表中选择“打开文件”>选择对应的APK文件>点击菜单栏“导航”_“搜索文本”>转到相应代码 ;JADX软件使用 , jadx下载与使用,jadx安装包
  • App与服务器的通信使用的也是HTTP协议和WebSocket协议,所以基于这两种网络协议的反爬虫手段可以应用在App上,想要查看App的代码,必须将对应的APK文件反编译成代码

(3)App代码混淆反爬虫

  • 代码混淆:将代码转换成一种功能等价但人类难以阅读和理解的文本。混淆指使用简短或冗长且无规律的字符替代代码中的方法、类和变量的名称,在缺乏注释和混淆映射表的情况下,工程师几乎无法阅读项目代码。
  • 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被反编译,但是可以有效提高他人阅读程序代码的难度,进而加强对数据的保护。代码中的字符串并不会被混淆

(4)App应用加固知识扩展

  • 除了Android官方文档介绍的代码混淆方法外,App一般从防逆向、防调试、防篡改和防窃取的角度出发,使用DEX加密、LLVM混淆、内存监控等手段保护自己的源代码和资源
  • DEX加密的主要目的是防止App被反编译。JADX等反编译工具实际上是先将DEX文件编译成Smail语言的代码,再转换成class文件进行阅读和修改。DEX加密实际上是用代码对Android项目的Classes.dex文件进行加密,就像在原来的DEX上面加了一层壳一样,所以DEX加密又称为加壳。

(5)App应用程序自动化测试工具Appium和Airtest

  • Appium提供了滑动、触摸(点击)、长按、模拟输入和文本提取等常见功能;
  • Airtest Project也提供了滑动、触摸(点击)、长按、模拟输入和文本提取等常见功能;它还支持“图码”混合编程

6、验证码

  • 验证码


Tags:App反爬虫   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言 将爬虫的爬取过程分为网络请求,文本获取和数据提取3个部分。 信息校验型反爬虫主要出现在网络请求阶段,这个阶段的反爬虫理念以预防为主要目的,尽可能拒绝反爬虫程序的请...【详细内容】
2021-04-20  Tags: App反爬虫  点击:(750)  评论:(0)  加入收藏
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条