一、F12调试
调试 :F12 或者 鼠标右键检查快捷键(Ctrl+Shift+i)
Element:
copy 复制
force state 状态
break on 断点
Evernt Listeners 事件监听
DOM Breakpoints 自己下的断点
Network:
Ctrl + F 打开搜索
小红点亮起 正在抓包
Preserver log 是否清除历史记录
Disable cache 是否禁止缓存
initiator 一条http请求发起人有一下几种:浏览器发起的
自己发起的:自己构造的http、send
端口号是443:是https请求
异常捕获: Pause on caught exceptions
断点:Edit breakpoint 编辑断点
Watch 全局变量监听
设置:Preserve log 是否清除缓存
Selected cotext only 只选择当前页面上下文
Group similar 分组
Log XMLHttpRequests 是否打印XHR请求
Application:Clear storage 清除当前所有的缓存
二、js攻防基础
js攻防基础
明确目标
能对网站js进行调试
能修改js运行当中的一些值 能输出
能下断点
更智能的监听一些值
网站的代码运行时间轴:
加载html 加载js -运行js初始化 -用户触发了某个事件-调用了某段js -明文数据-加密参数-加密数据-给服务器发信息(XHR-send) -接受到服务器数据 - 解密函数 -刷新网页渲染
断点分类
什么是断点
DOM断点
当样子/属性发生改变才会断住
执行比较靠前 距离加密函数比较远 我们无法根据栈去快速定位
定位比较准
DOM事件断点
如果dom断点不能下断 就可以用DOM事件 和DOM断点特性一致
xhr断点
执行比较靠后 距离加密函数相对比较近 可以根据栈快速定位
非XHR 发送的就断不住
代码行断点
代码的断点 debugger;
全局事件断点 浏览器的事件断点
Soutces 中 Event Listener Breakpoints
异常捕获断点
处理try 跟环境
勾选 Pause on caught exceptions
方法栈
Call Stack
栈 先进后出 所以栈中下面的就是调用这个方法的
巧妙的下断
短板效应 木桶效应
跟值技巧
注意的值:Encrypt、data、key、rsa、des
Ctrl 智能提示
向上 到没有智能提示的地方 就是这个方法的开始
想要的数据
没有的话 找调用这个方法的函数
_proto_
open 中下个断点
加密数据 去找怎么生成的
找的明文数据
三、常见加密分类
四、常见混淆
五、伪装基本功
浏览器软件的组成
显示区域 渲染 DOM
所有浏览器相同的一些功能: BOM 输入网址 刷新 上一个页面下一个页面
执行js脚本 javaScript :文本处理 正则
不同浏览器会实现自己相应的属性 BOM
DOM(渲染引擎) BOM JS引擎 = 浏览器
DOM:
Html:hxml超集 - xml变种
1.html 增删改查api
2.html 数据格式
3.渲染 Canvas
BOM:
1.浏览器自己实现的一些类 location navigator
2.open ssl:btoa、AES、BES、MD5
JS引擎(解释器):ECMA-协议版本号:es5 es6 js解释性语言(官方没有解释器)
谷歌的v8、微软查克拉、ffg guickjs
JSON
HTTPS:
The connection to this site is encrypted and authenticated using TLS 1.2, ECDHE_RSA with P-384, and AES_256_GCM.
DOM BOM 都是js对象
所以js引擎都有一个功能:可以给js添加任意对象 删除任意对象,关联本地的代码
浏览器去实现的对象 默认添加一个特性:只读属性
伪造环境的用处
为什么要去伪造环境:因为js引擎没办法运行
不想去改变他的源代码js
js逆向最终的结果:
想要的效果:支持多线程、爬取速度快
扣取js :删除环境的一些代码
伪造环境 :伪造环境代码
简单的网站:扣取就可以了
复杂的网站:伪造环境
我就是浏览器
1.要伪造什么
1.全部伪造 python-jsdom(被检测)nodejs(被检测)
2.给指定的网站 伪造
如何知道这个网站检测了什么–通过调试、全局异常捕获、本地环境运行看报错
2.如何伪造