系列文章目录
系列手记占位
文章目录
- 系列文章目录
- 前言
- 一、js自执行函数语法
- 二、js变量类型的转换(与字符串相加)
- 三、浏览器环境(BOM)
- 四、html渲染环境(DOM)
- 五、html发起请求(表单form)
- 六、js两种访问对象属性的方法
- 总结
前言
会带着记录些反爬相关的前端基础。
一、js自执行函数语法
js加载的时候会自动运行
!(function () {...
})()
这函数也可以命名
二、js变量类型的转换(与字符串相加)
别的语言也有类似,下面记录有区别的部分
function test() {};
console.log(test + "");
// 输出:
// "function test() {}"// java、python这种情况会报错
三、浏览器环境(BOM)
浏览器会有很复杂的环境,如:
window: { // 全局变量location: { // 标签页信息host: 主机名,href: 网址,...},document: {...}...
}
// 如果在与浏览器不相干的脚本中执行则没有这环境,会被检测出来
window.location.href === undefined
补环境/补头:自定义补充window下的对象,可以手动也可以用脚本
四、html渲染环境(DOM)
document: { // 全局变量write,...
}
补头易错细节:
console.log(document.write + "");// 浏览器中执行结果:"function write() { [native code] }"
错误示范:
// 先补头
document: {write: function() {};
}console.log(document.write + "");// 脚本执行结果:"function() {}"
正确补头示范:
document: {write: function() {};
}
document.write.toString = function() {return "function write() { [native code] }"};
其实这就是hook的应用:替换原有方法
五、html发起请求(表单form)
不仅仅只有js能发起请求,html也能
<form name="..." action="...php" onsubmit="return ...()" method="post">
密码:<input type="text" name="password">
<input type="submit" value="提交">
</form>
onsubmit: 可以写js代码
六、js两种访问对象属性的方法
window.locationwindow["location"]
总结
js真麻烦