首页 > 其他分享 >网页Hook 拦截,修改,请求数据

网页Hook 拦截,修改,请求数据

时间:2024-03-30 10:23:13浏览次数:19  
标签:console 请求 fetch Hook 网页 拦截 重写 XMLHttpRequest log

不多BB,直接上代码

在控制台直接敲此代码进行hook

当网页有触发XMLHttpRequest请求时,可以进行重写数据,拦截,修改获取数据等操作。

这个只是hook XMLHttpRequest的,fetchApi 的代码在下面

(function hookXMLHttpRequest() {
  // 保存原始的XMLHttpRequest.open和send方法
  const realOpen = XMLHttpRequest.prototype.open;
  const realSend = XMLHttpRequest.prototype.send;

  // 重写XMLHttpRequest.open方法
  XMLHttpRequest.prototype.open = function(method, url) {
    // 在控制台记录请求的URL和方法
    console.log('请求地址是:', url);
    console.log('请求方法类型:', method);

    // 调用原始的open方法
    realOpen.apply(this, arguments);
  };

  // 重写XMLHttpRequest.send方法
  XMLHttpRequest.prototype.send = function(data) {
    // 发送请求体参数
    console.log('发送请求之前执行的代码Sending data:', data);

    // 调用原始的send方法,并传入所有参数
    realSend.apply(this, arguments);

    // 监听请求状态变化
    this.addEventListener('readystatechange', () => {
      if (this.readyState === 4) { // 请求已完成
        // 请求完成后执行的代码
        console.log('获取返回的全部数据:', this.responseText);
      }
    });
  };
})();

 

 

 

fetch   看这里

 

(function hookFetch() {
  // 保存原始的fetch函数
  const realFetch = window.fetch;

  // 重写window.fetch函数
  window.fetch = function(input, init) {
    // 发送的请求体参数
    console.log('发送请求之前执行的代码',init.body);

    // 在控制台记录请求的URL和选项
    console.log('请求地址是:', input);
    console.log('请求选项:', init);

    // 调用原始的fetch函数,并传入所有参数
    return realFetch.apply(this, arguments).then(response => {
      console.log('响应状态码:', response.status);

      // 如果需要,可以对响应进行额外的处理
      // 例如,根据状态码决定是否抛出错误
      if (response.ok) {
        return response.json(); // 打印返回数据,假设数据是json
      } else {
        return response.text().then(text => {
          throw new Error(`请求失败: ${text}`);        });      }    });  };})();

 

问题:打印出来请求体为什么是null?

答:因为get请求参数是拼接在路径上,所以请求体是null,要获取请求参数,直接在路径上获取就行,只有post时传入请求体才有显示内容。

 

问题:这个有什么用处?

答:可以监控网络请求数据,也可以修改请求和返回。

例如:某页面请求列表,参数size显示数量是10,固定的,网页上又没有修改显示数量的地方,那么可以试试修改请求,把请求的参数size 重写为9999(如果后端没做显示限制应该可以一波全部出来),然后请求就会改变

还有某些网站会请求判断是不是vip,例如1就是vip,但是返回的数据是0,可以重写返回的vip数据,0改成1就变成vip。

还有其它功能靠自己想

 

标签:console,请求,fetch,Hook,网页,拦截,重写,XMLHttpRequest,log
From: https://www.cnblogs.com/Hello233/p/18105164

相关文章

  • 【HTML】HTML入门:构建网页的基础
    前言    HTML(HyperTextMarkupLanguage)是构建网页和应用的基础。它提供了一种结构化的方式来组织内容,使得网页设计师可以创建出丰富且具有交互性的网页。本指南将带你从零开始学习HTML,包括它的基本概念、常用标签、属性以及如何构建一个简单的网页。第一部分:HTML基......
  • DOM(文档对象模型):理解网页结构与内容操作的关键技术
    DOM(文档对象模型)定义了一种访问和操作文档的标准。它是一个平台和语言无关的接口,允许程序和脚本动态访问和更新文档的内容、结构和样式。HTMLDOM用于操作HTML文档,而XMLDOM用于操作XML文档。HTMLDOM示例通过ID获取并修改HTML元素的值:<!DOCTYPEhtml><html><head><style>......
  • 拦截器和过滤器的区别
            在平常使用中,对于某些功能的实现,可能既可以用拦截器完成,又可以用监听器完成。这样使我们对于这两个概念有一定程度上的混淆。 拦截器和过滤器的区别过滤器和拦截器的区别:①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与serv......
  • Webbrowser打开https网页提示证书错误
    vb.net开发了一个捕快网文采集器 txt文本使用了IE控件Webbrowser在访问https网页时,有些网页出现了证书错误的提示,无法访问,而且没有"继续"的选项试了一下强制默认证书认证全部为<真>的代码有效.ImportsSystem.Security.Cryptography.X509Certificates......
  • 高德地图内网部署,通过拦截请求实现
    一、安装npm库   npm地址:ajax-hook-npm(npmjs.com)NPM引入npminstallajax-hook二、实现代码,放到mainjs里面import{proxy}from"ajax-hook";proxy({//请求发起前进入onRequest:(config,handler)=>{//console.log(config.url)if(......
  • 短信系统开发注意事项|网页版短信后台
    在开发短信系统时,有一些重要的注意事项需要考虑,以确保系统的稳定性、安全性和功能完整性。以下是一些开发短信系统时需要注意的事项:合规性和法律要求:确保短信系统的开发符合当地法律法规和通信行业规定,包括用户隐私保护、反垃圾短信措施等。系统设计:在设计阶段考虑系统架......
  • 【matlab】【2024年】【优化算法】【黑风筝算法】【BKA】【附带论文中英翻译网页版】
            本文创新性地提出了黑风筝算法(BKA),这是一种受黑风筝迁徙和掠食行为启发的元启发式优化算法。BKA集成了柯西突变策略和Leader策略,增强了算法的全局搜索能力和收敛速度。这种新颖的组合在探索全球解决方案和利用本地信息之间取得了良好的平衡。在CEC-2022和CEC-20......
  • 为什么网页提示SSL证书不信任?
    随着传统行业迅速融入互联网,信息安全问题逐渐凸显,企业商业机密和国家信息安全面临网络威胁。为应对此挑战,国内企业已积极部署SSL证书,强化信息安全防护,确保业务安全稳定运行。在企业部署SSL证书的过程中,不免会遇到网页提示SSL证书不信任的问题。为什么证书安装后浏览器还是显示了S......
  • H5网页调用APP原生分享菜单 方法:mcloudshare://advert?imgUrl=图标链接&link=分享的链
    要在H5网页中调用APP原生的分享菜单,你可以通过以下步骤实现:创建分享按钮或触发分享的交互元素,例如一个按钮或链接。在按钮的点击事件处理程序中,使用JavaScript生成一个调用APP分享功能的URL。根据你提供的信息,生成的URL格式如下:mcloudshare://advert?imgUrl=图......
  • 不同操作系统中通用解决方案,浏览器拉起app或打开本机应用软件原理,前端网页如何打开一
    不同操作系统中通用解决方案,浏览器拉起app或打开本机应用软件原理,前端网页如何打开一个PC本地应用,通过Scheme、JavaScript、第三方库分别实现前端网页打开本地应用。设想一个场景,当我们在浏览一个网页并且需要下载某个资源时,你的电脑可能经常会跳出一个提示框,询问你是否需......