欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【JS_hook】爬虫调试技巧

【JS_hook】爬虫调试技巧

2025/7/7 21:33:07 来源:https://blog.csdn.net/2401_83769134/article/details/146456568  浏览:    关键词:【JS_hook】爬虫调试技巧

hook,翻译是钩子,也称作js注入。

大概如图这样:

js代码的注入是在本地浏览器进行的,然后这一整个过程叫hook。 

hook的目的是在不修改原始代码的情况下,拦截或修改函数的执行行为。方便设断点调试。

简单理解:看看你咋加密的,我好解密。

爬虫常用有以下四种hook:

1. JSON.parse

案例:全国建筑市场

JSON.parse 是 JavaScript 中的一个内置方法,用于将一个 JSON 字符串转换为 JavaScript 对象

 为了在转换前断住,在F12控制台注入js代码:

(function(){var parse_ = JSON.parse; // Json.parse方法可替换成想断的方法,比如json.stringifyJSON.parse = function(str){console.log("断住了嘿嘿!",str);debugger;return parse_(str);}}
)();

效果:

2.Cookie加密

 案例:同花顺

(function(){var cookieText = '';Object.defineProperty(document, 'cookie', {set: function(value) {if (value.indexOf('v') != - -1 ) {debugger;}console.log('Hook 捕获到了 cookie 值:' + value);cookieText = value;},get: function() {return cookieText;},});
})();// 注意:此方法仅适用于简单的 cookie 值,对于复杂的 cookie 值,可能会造成不可预料的结果。

3. xhr参数加密

(function(){var open = XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.open = function(method, url, async) {if (url.indexOf('[要断的参数]') !== -1) {debugger;}return open.apply(this, arguments);};
})();

像这种:

4.headers加密

(function() {var oldSetRequestHeader = window.XMLHttpRequest.prototype.setRequestHeader; window.XMLHttpRequest.prototype.setRequestHeader = function(header, value) {if (key == 'headers 的参数 key') {debugger;}return oldSetRequestHeader.apply(this, arguments);};
})();
// 或者直接搜索:headers["enctype"]

像这种:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词