JS逆向基础知识

Posted 山兔1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS逆向基础知识相关的知识,希望对你有一定的参考价值。

验证码识别只要去接API就可以了
JS反爬是爬虫领域一直在攻克的一个问题
有些网站会禁止你去按F12,会去监听你的键盘,禁止你去按F12,这个时候,我们可以通过浏览器的开发工具按键去打开F12页面
elements是前端调式页面的,比如页面的每一个元素都是有一个元素标签的,我们修改的不是服务器,是服务器推送给我们的本地的一个文件,没有任何实际的意义。当我们选择一个元素之后,右边就会出现更加详细的列表,styles是对元素css样式进行设置,可以改颜色、字体、大小
network页面,我们用来抓包,preserve log会帮我们记录抓过的包,如果我们去掉的话,每次刷新都会重新记录;disable cache会禁止缓存,这样子我们每一次请求,都会得到最新的,可以让我们在进行js逆行的时候,进行一些骚操作;在进行js逆行的时候,这两个都勾上。
可以在数据包当中,看到响应的服务器IP地址和一些cookie信息,协议的版本号,例如网站是使用http 1.1协议版本号发送的,你用1.2发肯定不可以
no-cache在请求头当中的是否缓存是针对服务器而言的
请求头当中的包都是可以自定义的,如果请求头当中包含Accept-Encoding的话,表示浏览器会对我们发送的请求进行ZIP压缩,然后发给服务器,服务器接收到这个之后,会对他进行解压,然后进行处理
一条http请求,发起人有以下几种:
浏览器发起的
自己发起的
自己构造http
直接send(js发起)
在资源面板可以查看各种资源,Filesystem可以关联本地的工作目录
Overrides可以对当前网站已有的东西进行替换,并且把他放到网站上去进行运行,当然有的网站会去做监测,不让你重写
一般我们不会去做操作页面的操作,因为这些东西写和不写,没有什么太大的影响
在js语言当中trycatch是用来处理异常操作的,当try里面的代码运行错误,catch里面会继续运行,不会让你的代码卡死
隐身窗口不会对我们的上网进行任何记录,不会保存我们的cookie,相当于给我们创建一个新的环境,这里面的环境他都互相不影响
当我们在爬一些有反爬机制的窗口,可以开启隐身窗口,避免掉一些麻烦
JS逆向的目的是通过运行本地JS的文件或者代码,以实现脱离他的网站和浏览器,并且还能拿到和浏览器加密一样的效果
JS逆向的步骤:
1、对网站的JS进行一些调式
能修改JS运行当中的一些变量的值,能输出、能下断点、更智能的去监听一些值
断点:在整个程序的运行当中,我可以去左右他运行的一个逻辑,并且我能给这个逻辑下一个断点
断点的分类:
DOM断点
定位的比较准
执行的比较靠前 距离加密函数比较远 我们无法根据栈去快速定位
DOM事件断点
如果DOM断点不能下断,就可以用DOM事件来下断和DOM断点事件一致
xhr断点(XML、HTTP、request)
给服务器发送请求的时候下断
执行的比较靠后,距离加密函数相对比较近,可以根据栈快速定位
非xhr发送的就断不了
代码行断点(手动去点击某一行)
在当前代码行下断
代码的断点
在源码里面输入debugger;
全局事件断点(浏览器事件断点)
异常捕获断点
处理try,跟环境的时候
网站的代码运行的事件轴
加载html、加载js - 运行js初始化 - 用户触发了某个事件 - 调用了某段js - 加密函数 - 给服务器发信息(XHR-SEND)- 接收到服务器数据 - 执行JS解密函数 - 刷新网页渲染
方法栈:方法的一个调用流程
栈:数据结构,遵循先进后出的原则
在做JS逆向的时候,是要做不同的下断测试,要求大家的是每种断点都要会,JS逆向光会一种是不够的,最起码拿下一个网站要会三种技巧,都要hold住
短板效应一般出现在安全界和逆向界,说的是要去找准一个网站或者事务的弱点,针对他的弱点去下手,而不是攻击他的长处,怎么简单怎么来,不要给自己找麻烦
JS逆向的思路
抓包分析参数
调式我们当前抓包的链接,找到我们想要的明文数据和密文数据,找到加密方法
可以搜索的参数:password userid persistentCookie XHR
扣取js
抠的越少越好,js体积越小越好,运行的速度会变快
对当前的加密方法进行改写
本地运行出值
请求服务器拿值,拿到我们的明文数据,我们想要的数据
常见的一些加密方式
取盐校验 不可逆
MD系列 md5 md2 md4 加盐的md5
md5 16位的 32位的 40位的 只是前后做了一个小处理
sha1 sha256 sha512
对称加密
AES DES 3DES
非对称加密 同一个明文可以生成不同的密文,不同的密文可以还原成同一个明文
RSA (私钥 公钥)
1.16进制的 HEX 里面只包含0-9 或者只包含 A-F
2.bs64是一个编码永远可以还原的
A-Z 、 a-z 、 0-9 、+ 、_ 、=
当想要获取到用户对敏感数据的加密方式,可以通过分析前端的js代码得到加密方式
js大小写无所谓

JS逆向的两个分支:导出就是抠代码,补图就是补环境

爬虫逆向必备js语法基础与js反爬原理---视频合集(持续更新)

以上是关于JS逆向基础知识的主要内容,如果未能解决你的问题,请参考以下文章

前端面试知识点锦集 JavaScript

前端知识之JavaScript知识

前端基础面试题(Html,css,Javascript)_2

前端-js基础

前端技术学习路线及技术汇总

前端JS基础