记录爬虫道路上遇到的各种坑02

记录爬虫道路上遇到的各种坑02

2020.04.16

记录遇到的第一个判断代码是否被格式化的js。
目标网站,点击搜索后打开调试面板,找到doc里的页面代码。第二个script标签里的那段,如果拿出来直接在console里运行时不会报错的。运行后在console里打印_pt_,有值说明运行完成,但是,如果格式化代码后再运行,则浏览器卡死。格式化代码后在第一个自执行函数里的 _0xxxxxx[‘updateCookie’]那里打上断点。
在这里插入图片描述
卡死是因为setCookie这个函数是个死循环,一直在循环增加字符串的长度,时间太长内存不足就报错了。而进入这个方法的原因就是:

var _0x17db3c = function() {
    var _0x20a2de = new RegExp('\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*[\x27|\x22].+[\x27|\x22];?\x20*}');
    return _0x20a2de['test'](_0x5f0fa3['removeCookie']['toString']());
};
_0x5f0fa3['updateCookie'] = _0x17db3c;
var _0x35cc0c = '';
//执行正则判断,若未匹配上,说明代码被打开或者更改,进入setCookie导致代码执行卡死
var _0x2aff92 = _0x5f0fa3['updateCookie']();
if (!_0x2aff92) {
	_0x5f0fa3['setCookie'](['*'], 'counter', 0x1);
} else if (_0x2aff92) {
    _0x35cc0c = _0x5f0fa3['getCookie'](null, 'counter');
} else {
    _0x5f0fa3['removeCookie']();
}
  

当代码格式化的时候:

_0x5f0fa3['removeCookie'].toString()
"function() {
                return 'dev';
            }"

当代码未打开的时候:

_0x5f0fa3['removeCookie'].toString()
"function(){return 'dev';}"

这时候正则匹配通过,就没有进入setCookie方法。
估计其他判断代码是否被打开的也有这种做法。

发布了8 篇原创文章 · 获赞 5 · 访问量 1854

猜你喜欢

转载自blog.csdn.net/weixin_42525191/article/details/104031823
今日推荐