现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行。
动态执行js代码无非两种方法,即eval和Function。那么,不管网站加密代码写的多牛,我们只要将这两个方法hook住,即可获取到解密后的可执行js代码。
注意,有些网站会检测eval和Function这两个方法是否原生,因此需要一些小花招来忽悠过去
<script>function $(id){return document.getElementById(id)}
function trim(s){return s.replace(/(^\s*)|(\s*$)/g,"")}
function Login(){
var user=$("user").value
var pwd=$("pwd").value
if(!trim(user)){alert("用户名不能为空")$("user").focus()return false}
if(!trim(pwd)){alert("密码不能为空")$("pwd").focus()return false}
if(pwd.length<6){alert("密码不能少于6位数")$("pwd").focus()return false}
if(pwd.length>16){alert("密码不能大于16位数")$("pwd").focus()return false}
$("loginform").submit()
}
</script>
<form name="loginform" id="loginform">
<input type="text" name="user" id="user" />
<input type="password" name="pwd" id="pwd" />
<input type="button" value="提交" onclick="Login()" />
</form>
首先要定义一个去掉字符串两端空格的函数,可有用正则表达式String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g,"")
}
var str=" 去掉两端空格 "//假设str是你获得的字符串
alert(str.trim().length)