网络上几千块都学不到的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;
},
});
})();最后希望以上内容能够帮助到大家谢谢!!!













![162.网络安全渗透测试—[Cobalt Strike系列]—[Veil免杀]](https://img-blog.csdnimg.cn/b093d97a546646e6bbd74f2bf638d9d4.png)




