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

关于爬虫中的hook(defineProperty,hook cookies, hook载荷数据,hookXHR)

关于爬虫中的hook:

defineProperty
var people = {
    age: 19,
};
var  count=20;
console.log(people.age)
// 参数:对象 属性名字 函数
Object.defineProperty(people, 'age', {
    get: function () {
        console.log('获取值!');
        return count;
    },
    // set: function (val) {
    //     console.log('设置值!');
    //     count = val + 1;
    // },
});
console.log(people.age) 

在这里插入图片描述

我们会发现,调用这个对象的属性的时候会自动调用那个函数,而且并没有直接输出我们的age属性值,age属性值被拦截了。

我们再看下面这个方法:

var people = {
    age: 19,
};
var  count=20;
// 参数:对象 属性名字
Object.defineProperty(people, 'age', {
    get: function () {
        console.log('获取值!');
        return count;
    },
    set: function (val) {
        console.log('你正在设置一个值');
        count = val + 1;
    },
});
console.log(people.age)
people.age = 50
console.log(people.age)

在这里插入图片描述

奇怪吧,原来设置值有的时候可以不对自己进行设置值,设置值可以有输出语句。

hook cookies

网站:

import base64

# 解码
result = base64.b64decode('aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v'.encode('utf-8'))
print(result)

在这里插入图片描述

我们会发现这个每一页数据的cookies的v都在发生变化,我们需要找到相应的js文件。

(function () {
  'use strict';
  var cookieTemp = '';
  Object.defineProperty(document, 'cookie', {
    set: function (val) {
      if (val.indexOf('__dfp') != -1) {// 存在为0 
        debugger;
      }
      console.log('Hook捕获到cookie设置->', val);
      cookieTemp = val;
      return val;//确保其正确返回
    },
    get: function () {
      return cookieTemp;
    },
  });
})();

在这里插入图片描述

获得cookie的时候,记着把cookie清空。

在这里插入图片描述

set 是我们hook的代码,所以向下找。

在这里插入图片描述

在这里插入图片描述

然后依次向下找,n的值就是cookie中v的值。

hook载荷数据

js代码中一定有JSON.stringify,将json对象转化为json字符串

在这里插入图片描述

这样的形式可以使用如下hook代码。

(function() {
    var stringify = JSON.stringify;
    JSON.stringify = function(params) {
        console.log("接收到的数据是 ——> ", params);
        debugger;
        return stringify(params);//正常返回
    }
})();

也可以对其进行拦截:

在这里插入图片描述

在这里插入图片描述

hookXHR:

网站:

import base64
# 解码
result = base64.b64decode('aHR0cHM6Ly93d3cucWltYWkuY24v'.encode('utf-8'))
print(result)

在这里插入图片描述
在这里插入图片描述

我们会发现网址里面的数据被加密了。

(function () {
    var open = window.XMLHttpRequest.prototype.open;//重构
    window.XMLHttpRequest.prototype.open = function (method, url, async) { // 方式 网址 是否异步
        if (url.indexOf("login") != -1) { //找到了应该是0 
            debugger;
        }
        // arguments 接受传递的参数,得到的是数组 
        return open.apply(this, arguments);
    };
})();

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

相关文章:

  • 高美GULMAY高压发生器维修X射线源维修CF160
  • python习题练习
  • goframe开发一个企业网站 统一返回响应码 18
  • C++ —— 哈希详解 - 开散列与闭散列
  • JavaSecLab靶场搭建
  • C++算法练习-day40——617.合并二叉树
  • 数字IC前端学习笔记:异步复位,同步释放
  • 「项目阅读系列」go-gin-example star 6.5k!(1)
  • <Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 2》(6)
  • 解决React遍历每次渲染多个根元素导致无法为元素赋值key的问题
  • 使用Spark SQL读取阿里云OSS的数据
  • 最强人工智能ChatGPT引领AIGC发展
  • 294_C++_报警状态bit与()上通道bit,然后检测置位的通道,得到对应置位通道的告警信息,适用于多通道告警,组成string字符串发送
  • C语言绘图
  • Lambda表达式(附有案例)
  • 【无标题】乐观与悲观
  • Python基础入门例程61-NP61 牛牛的矩阵相加(循环语句)
  • 英语 有空就更新
  • 06.webpack性能优化--构建速度
  • UnitTest + Selenium 完成在线加法器自动化测试
  • C#创建AutoMapper的映射配置
  • debian10 开启rdp安装firefox,firefox 中文乱码
  • 设计模式(一)-简要概述(2)
  • 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)
  • 01Urllib
  • 【Java】ArrayList和LinkedList使用不当,性能差距会如此之大!