JS逆向手记01__前端基础

系列文章目录

系列手记占位


文章目录

  • 系列文章目录
  • 前言
  • 一、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.location

window["location"]

总结

js真麻烦

你可能感兴趣的:(spider,爬虫)