js基础
用户输入明文 -> 方法1 -> 发包函数 。。。 -> 加密函数
1.作用域:
改js的问题
js变量生命周期
局部变量在函数执行完毕后销毁
全局变量在页面关闭后销毁
局部变量
function jb()
{
var a = "局部变量"
return a;
}
全局变量
var a = "全局变量"
function qj()
{
console.log(a)
}
console.log(a)
2.自执行函数 - 在js加载的时候这个函数就能自己运行
加不加!都可以,加!更规范,这个自执行函数也可以叫做 匿名函数
!(function(){
console.log(2)
})()
(function(){
console.log(3)
})()
3.内部函数如何外部调用?
var jm_;
!(function(){
function jm(){
console.log("加密成功")
}
jm_ = jm;
})()
jm_();
4.浏览器环境
脱离浏览器 在外部不能直接调用的
window 是一个全局变量 浏览器提供的
(浏览器环境,引擎的环境(js虚拟机,html渲染环境),自己写的代码)
location
host 主机名
href 网址
5.html渲染环境
document 全局变量 js引擎自带(v8)
补头 - 补齐缺失的环境
主要补齐 事件 点击事件 滑动事件 (滑块)
奇葩的网站 加密利用了我们的 提交按钮(submit) 菠菜网站一般喜欢用
document.write+“”
document.write.toString()
document.getElementById
当用户点击鼠标时 登录
当网页已经加载时 浏览器指纹(检测你是不是用一个用户)
收集你是否是浏览器环境
当图像已加载时 浏览器指纹 滑块图片还原
当鼠标移动到元素上时 浏览器指纹 无感验证
当输入字段被改变时
当提交 HTML 表单时
当用户触发按键时
document.createElement
6.插件环境(不需要补齐)
QQ sso unicode 字符
ua
ip
代码:
<form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post">
名字: <input type="text" name="fname">
<input type="submit" value="提交">
</form>
知识点:
抓到包了,在js中没有找到一些断点,断点断不到
就是在他提交的地方触发的是 onsubmit 的 validateForm() 这个表单里面
8.逆向 - 加密
加密特征:
32位 16位 大概率是 md5
40位 大概率是 sha1
搜索参数得到的js名字存在 Axios vue react jq 可以先忽略(经验)
调试:
stringify 对象转json字符串()
js写法
( 前面的别管他怎么写 大部分都是个方法
() 之间的就是参数
小知识点:
js 的运行顺序 不一定是js文件的编写顺序
开始的位置 解析
自执行方法 !function(){}()
变量的定义 var xx;
赋值语句 a = 1
方法的调用 xxx()
反调试
debugger(绕过)
1. 在 debugger 右键 -> Never pause here 选择这个就可以过了
2. 使用抓包工具