WebJs REVERSE
全文用时:15min
爬虫逆向
入门首先碰到大概率就是WebJs逆向,之后应该才会碰到安卓逆向,所以就先从WebJs说起
能看这篇的,相信都清楚技术分前端后端,而爬虫所谓的逆向就是对前端搞一些事情。毕竟后端是勘知不到的(其实也不是不能,部分不完善安全的后端代码接口或者数据是通过一些小手段试一试的,这里不做介绍,以后专门列一篇大概介绍下有哪些技巧,ps:这个操作可能违法,谨慎操作)。
开始重点说前端,也就是web页面,web页面的组成这里不做介绍(以后我会更一篇到前端app开发模块中,感兴趣的家人到时候可以看一看)。对于和后端分家的前端,我们搞爬虫的做逆向首先要有一个自信,那就是,只要是前端眼睛看到的就没有拿不到的数据,如果拿不到,那就是打游戏的时候,笔者经常被嘲讽的“菜,请多练”。
不废话了~
笔者结合自己的理解说说做WebJS逆向都需要掌握那些知识。溯本求源,反爬开发们为了保证数据的安全性,被篡改等等原因。当我们看到返回的web界面数据时,整体完成了两步,第一步:请求数据(获得数据前);第二步:渲染数据(返回数据后);那么webJS逆向无非就是这两步上做操作,下面就拆分对这两步进行细嗦:
01
——
第一步请求数据
一般请求数据时,接口前后端进行了例如:动态Cookie,身份认证,签名sign,链接验证token,或者就是前置验证码验证等等机制。先说验证参数数据的生成来有那些方式,一般来源有两个,第一:要么前端JS生成(有根据参数生成,也有根据用户行为生成,以后篇章细嗦);第二:要么是后端前置步骤response中带回来的;(画图水平有限)。
如何判断是前置后端返回数据带回来的还是前端js生成的,后面笔者会开单一篇专门讲混淆以及关键参数定位与判断来源中详细细嗦各种情况与技巧,这篇只讲整体 。
关于验证码反爬,这里首先我们要有一个意识,验证码这东西是反人性的,是影响用户体验的,所以不可能出现的频繁,如果你发现你的验证码出现频繁,那么一定就是那么被检测怀疑了(例如参数不全,ip检测,请求频率检测等等)。当然,出现了验证码我们需要去解决。
根据验证码的不同情况,这里有太多玩法,例如验证码验证结果是否进行了前后端交互的特性有不同的处理方式,如果不交互,我们可以替换检测部分Js或者hook修改判断函数结果等等,具体情况具体而定。与后端数据交互的验证码,又分为是否单独接口交互,还是请求中加密携带,不同的交互不同的处理方式等等。这部分之后笔者也会单独开几篇去讲不同验证码如何去处理(不会有正经爬虫还接打码平台吧)。
02
——
第二步返回数据需要逆向
返回数据不是明文的情况,往往后端给我们返回的数据有可能是乱七八糟字符串或者对传输的数据序列化了,如protobuf等等。这个时候就需要逆向解密数据,而解密无非就是反爬自写的解密(笔者经验看来,当前很少很少见过解密自写的,请求参数加密自写的相对比较多);情况更多的就是第二种,使用的常见加解密方法
(base64,md5,RSA,AES,SHA1,SHA256,HMAC等等),加解密部分也会单独开一篇细嗦如何判断是什么加密,以及加密算法之间的区别与如何调用,这里不细嗦了。
现在我们知道了从哪里入手了,那么web常见的逆向详细手段有那些?
笔者总结常用逆向手段就三种:
根据源码规则重写加解密还原加密代码(这个方式适合为混淆或者混淆不严重能理清楚规则逻辑的逆向情况,此为上策)
混淆严重,无法重写加密解密规则。那么就是扣代码(直接找到加解密部分的js文件或者函数代码段),直接调用运行对应js获取结果,这里存在补环境(有的js代码只能在浏览器中执行,哪怕是node Js也是V8引擎,依旧存在部分js可能无法执行),毕竟node没有渲染界面, 那么浏览器中存在的window,dom,navigator等对象是没有的。所以这一步学会补环境是必备技能,以后单开细嗦。此为中策。
RPC远程调用。这是笔者认为的万金油玩法(结合内存漫游+RPC远程调用)。好处是不关心怎么加密,不关心环境是否齐全,缺点也很明显(效率低,成本大,不适合大量数据采集),想非常大量采集就必须以量取胜,比如机架方式,几十台手机或者浏览器去生成所需参数,此为下策。
综合以上三种,笔者喜欢第二种,从采集效率与逆向方便程度来讲都是不错的。
逆向还需要掌握那些?
01、浏览器基本组成
:
笔者知道的爬虫工作者有好几年的人对这部分依旧不熟悉的,之后会开一篇细嗦,毕竟webJS逆向真的经常打交道。
02、常用调试工具掌握
:
(WT-JS,鬼鬼JS调试等等),浏览器插件,以及笔者最最常用的浏览器控制台介绍使用,这个使用太频繁了,这部分会开一篇大致嗦嗦,以及提供工具下载链接。(以防后面上图时候,有兄弟学习复现的时候不知道点的哪里或者找不到工具)。
03、模拟浏览器的使用
:
模拟浏览器(有时候用来获取一些不常变动的参数真的很方便)以及浏览器环境检测(这里不知道需要不需要开一篇单细嗦,感觉都会,如果需要的话宝儿们留言以后我开一篇放到爬虫入门模块中~)到学些生活当中。
04、常见反调试如何解决
:
常见反调试有哪些?怎么解决?例如无线debugger,打不开控制台,内存爆破,或者禁止调试输出等等。分别都是什么情况,怎么去解决这些反调试手段。(单开篇细嗦)
05、关于混淆与反混淆
:
如今js压缩混淆是基本操作,如常见压缩混淆:webpack,eval混淆,ob混淆,lsb隐写,sojson加密,ollvm混淆,aa,jj等等,这些怎么判断,如何去反混淆。(单开篇细嗦)。
06、常用抓包工具安装使用以及js语法
:
这两块知识点逆向模块中不说算基础,逆向中不打算细嗦,之后会写一篇介绍到爬虫入门中,有需要的或者感兴趣的到时候可以看看。
ps:特别是JS语法请熟练掌握
最
后
说
明
最后针对,不同部分webJs逆向。笔者也会写一些详细实例,放在实例中,方便入门实践操作,毕竟不上手实操永远不会“hello 逆向”。涉及的工具,笔者也会提供百度云链接,写的时候暂时能想到就这些了,之后想到还有什么再补充吧。
标签:攻防,浏览器,混淆,--,逆向,验证码,WebJs,细嗦,数据 From: https://www.cnblogs.com/o-O-oO/p/18115990