爬虫JS逆向思路-hook钩子

news2024/11/15 4:53:39

 网络上几千块都学不到的JS逆向思路这里全都有👏🏻👏🏻👏🏻

本系列持续更新中,三连关注不迷路👌🏻  

干货满满不看后悔👍👍👍

🕧注意本文爬虫逆向仅供学习交流使用

📝个人主页→数据挖掘博主ZTLJQ的主页

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 - 爬虫逆向教学

☄️python系列专栏 - 从零开始学python


hook技术介绍

Python爬虫中的hook技术是指在爬取网页时通过钩子函数对请求进行修改或者拦截,从而达到定制化需求的目的。这种技术在爬虫开发中非常重要,它可以让我们更加灵活地控制爬取过程。

Python爬虫中的hook技术主要包括以下几种:

1.requests的hook

requesthook是在发送请求前对请求进行修改的操作。它通常用于添加请求头、设置代理等操作。例如,我们可以使用requesthook实现对每个请求都添加一个User-Agent头部:

import requests

def add_user_agent(request):
    headers = request.headers
    headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    return request

requests.get('http://www.baidu.com', hooks={'pre_request': add_user_agent})

2.response的hook

responsehook是在接收到响应后对响应进行处理的操作。它通常用于解析网页数据、保存数据等操作。例如,我们可以使用responsehook实现对每个响应都打印出网页内容:

import requests

def print_response(response):
    print(response.text)

requests.get('http://www.baidu.com', hooks={'response': print_response})

3.exception的hook

exceptionhook是在爬虫发生异常时对异常进行处理的操作。它通常用于重试操作、记录日志等操作。例如,我们可以使用exceptionhook实现对每个异常都进行重试:

import requests

def retry(exception):
    if isinstance(exception, (requests.ConnectionError, requests.Timeout)):
        return True
    return False

requests.get('http://www.baidu.com', hooks={'response': retry})

hook技术可以很好的帮助大家在爬虫中找到一些参数和数据


hook常用钩子写法--改一点参数可以直接使用

1、当我们遇到 JSON.parse这种加密数据可以直接使用下面的钩子

(function(){
    var parse = JSON.parse;
    JSON.parse = function(params) {
    console.log("Hook -->",params);
    debugger;
    return parse(params);
}
}
 )();

2、当我们遇到 JSON.stringify() 这种方法就可以用到下面这个钩子

(function(){
    var stringify = JSON.stringify;
    JSON.stringify = function(params) {
    console.log("Hook -->",params);
    debugger;
    return stringify(params);
}
}
 )();

3、当我们需要找header的时候,就可以用下面这个代码

var code = function(){
var org = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){
    if(key=='Authorization'){
        debugger;
    }
    return org.apply(this,arguments);
}
}

4、当我们需要找url的参数的时候就用下面这个钩子

var code = function(){
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(method,url,async){
    if(url.indexOf("/改参数api")>-1){
        debugger;
    }
    return open.apply(this,arguments);
};
}

5、当我们找cookie参数的时候,可以这样注入钩子

(function (){
    'use strict';
    var cookieTemp = '';
    Object.defineProperty(document,'cookie',{
    set: function(val){
        if(val,indexOf('要找的参数') != -1){
        debugger;
    }
    console.log('Hook抓取到的cookie->',val);
    cookieTemp = val;
    return val;
},
    get: function(){
    return cookieTemp;
},
});
})();

最后希望以上内容能够帮助到大家谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连续3天3场分享,KubeVela@KubeCon EU 2023 抢鲜看!

自从 2019 年 Open Application Model 诞生以来,KubeVela 已经经历了几十个版本的变化,并向现代应用程序交付先进功能的方向不断发展。最近,KubeVela 完成了向 CNCF 孵化项目的晋升,标志着社区的发展来到一个新的里程碑。今天&…

有了MySQL,为什么还要有NoSQL

🏆今日学习目标: 🍀MySQL和NoSQL的区别 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪…

PYQT5学习笔记02——程序基本结构之面向对象版本

我们之前写的代码耦合性比较高,复用性不高,这是面向过程编程的缺点。我们可以把程序基本结构设计成面向对象的版本,把 设置控件这部分内容封装到一个类中。 比如这个是我们的窗口,红色的矩形是相同的菜单控件,既然是一…

研报精选230420

目录 【行业230420浙商证券】卫浴行业深度报告:智能卫浴新变局,国货崛起正当时 【行业230420平安证券】氢能全景图(上)制氢篇:商业模式起步,绿氢初试锋芒 【行业230420天风证券】建筑装饰行业深度研究&…

InstructGPT:Training language models to follow instrcutions with human feedback

InstructGPT:Training language models to follow instrcutions with human feedback 介绍模型数据集TaskHuman data collectionmodel 实验结果参考 介绍 现在LLM可以被prompt来完成一系列的下游任务,然而这些模型也总会产生一些用户不想要的结果&#…

ESP32 WiFi扫描、WiFi通道查询

ESP32WiFi扫描程序 代码解决什么问题? 扫描周围WiFi并识别指定WiFi名称的WiFi通道(为了ESP32的esp-now协议正常通信)。 这跟ESP32 now有什么关系? ESP32使用NOW协议进行通信时,要求参与通信的设备必须处于同一物理…

ASEMI代理ADI亚德诺AD8603AUJZ-REEL7车规级芯片

编辑-Z AD8603AUJZ-REEL7芯片参数: 型号:AD8603AUJZ-REEL7 偏移电压:12μV 偏移电压漂移:1μV/C 输入偏置电流:0.2 pA 输入失调电流:0.1 pA 输入电压范围:–0.3 to 5.2V 输入电容&#…

Win10+VS2019安装vcpkg

vcpkg是一个C的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C的包,省的自己编译配路径。安装后的包都被vcpkg统一保存,统一配置路径。VS中哪个项目需要,就将其配置到某个项目中,当然也可以全局配置。 1、下载vc…

Node 04-http模块

HTTP 协议 概念 HTTP(hypertext transport protocol)协议;中文叫 超文本传输协议 是一种基于TCP/IP的应用层通信协议 这个协议详细规定了 浏览器 和 万维网 服务器 之间互相通信的规则 协议中主要规定了两个方面的内容: 客户端&#xff1…

Coovally再升级!基于CV大模型的智能标注解放你的双手

近日,随着SAM大模型的横空出世,“分割一切”成为可能,基于CV大模型的标注技术受到瞩目。 SAM分割示例 SAM大模型 Meta 在论文中发布了名为 Segment Anything Model (SAM)的新模型,“SAM 已经学会了关于物体的一般概念&#xff0c…

Hbase1.1:HBase官网、HBase定义、HBase结构、HBase依赖框架、HBase整合框架

这里写自定义目录标题 HBase官网HBase特点:大HBase定义HBase结构HBase依赖框架hadoop HBase整合框架PhoenixHive HBase官网 Hbase官网地址 HBase是Hadoop database,一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时读/写访问时&…

Activiti学习03

这里写目录标题 一、开发环境1.1 Java环境1.2 数据库1.3 开发工具 二、Activiti入门体验2.1 新建项目2.2 pom.xml文件2.3 activiti.cfg.xml文件2.4 添加日志配置文件 三、创建数据库3.1 创建数据库3.2 执行代码3.2.1 通过代码实现创建表格3.2.2 简化代码 四、绘制流程4.1 新建b…

香港金银业贸易场十大会员名单排行榜

在种类丰富全面的国际投资市场中,黄金拥有者良好的受众基础,黄金投资产品有着悠久的历史记录和蓬勃旺盛的生命力,数百年以来无数炒金者在黄金投资中实现了投资理财的梦想,但是在黄金投资的过程中,投资中需要面对无数考…

162.网络安全渗透测试—[Cobalt Strike系列]—[Veil免杀]

文章目录 1 Veil的使用2 生成有效载荷payload3 Veil免杀过程4 测试免杀 1 Veil的使用 (1)Veil主要用于生成:免杀payload (2)下载地址:https://github.com/Veil-Framework/Veil (3&#xff09…

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP)

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 目录 Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 一、简单介绍 二、老版本 Unity Text 使用工具控件调整行间距 三、新版本 Unity Text…

mysql性能调优开篇介绍、错误代码总结(处理方法)和参数文件详解(持续更新中ing)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

园区路线地图指引图怎么画?园区地图三维图怎么画?

目前在园区信息化应用形式中,广泛缺乏专业电子地图的使用,因此,使这种高效的信息化工具的应用受到了很大限制。有些仅以图片代替,但图片没有空间计算、检索、路径设计的能力,在地图应用形式中,使用价值很低…

一文!解决恒定磁场的基本方程(有介质)

目录 引言 磁化过程 磁偶极矩 磁化强度 方程的化简 磁场强度 磁化率 磁导率 相对磁导率 现实生活中的应用 引言 为什么介质在磁场中会被磁化呢? 首先因为电子绕着原子核转动,所以就可以形成一个环形电流,,环形电流就可以产生磁场。…

SAR型ADC结构原理

SAR型 ADC,即逐次渐进逼近型 ADC,采用的是多次比较的方式来获得最终的输出结果,具有简单易用,功耗低的特点。下图这个结构可以帮助我们容易地理解SAR型 ADC的工作过程: 如上图,假设输入信号的伪代码为 45&…

YOLOv5+单目测距(python)

YOLOv5单目测距(python) 1. 相关配置2. 测距原理3. 相机标定3.1:标定方法13.2:标定方法2 4. 相机测距4.1 测距添加4.2 细节修改(可忽略)4.3 主代码 5. 实验效果 相关链接 1. YOLOV7 单目测距(p…