当前位置: 首页 > article >正文

【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.stringify
    JSON.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"]

像这种:


http://www.kler.cn/a/599986.html

相关文章:

  • 块与块参照的一些知识——CAD c#二次开发
  • html5-3D立方体动画项目开发实践
  • vue中props是什么
  • Edge打不开证书失效的网站
  • uv - 配置 [官方文档翻译]
  • 2021年蓝桥杯——杨辉三角形
  • deepseek搭建本地私有知识库dify安装介绍docker compose图文教程
  • GitHub高级筛选小白使用手册
  • Python----计算机视觉处理(Opencv:霍夫变换)
  • LiteratureReading:[2023] GPT-4: Technical Report
  • 数据库基础知识点(系列一)
  • 论文阅读笔记:Denoising Diffusion Implicit Models
  • 游戏引擎学习第180天
  • SEED XSS 实验环境搭建步骤《精简版》
  • 绿色暴政:Relax Max如何用军工科技定义环保新标准
  • 使用cursor开发java案例——springboot整合elasticsearch
  • Maven 简介及其核心概念
  • ctfshow WEB web2
  • Proximal Policy Optimization(PPO)算法
  • 中信银行太原长治路支行赴老年活动服务中心开展专题金融知识宣讲