上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: cxxjackie - 

ajax劫持库ajaxHooker

  [复制链接]

该用户从未签到

16

主题

56

回帖

90

积分

初级工程师

积分
90

新人报道

发表于 2023-2-27 14:38:25 | 显示全部楼层
cxxjackie 发表于 2023-2-24 20:34
不是,你别把hook写进filter里啊,这两个是独立的函数,只是说filter应在hook之前执行:

hook的用法跟之 ...

是这样吗,好像没有过滤 例如捕获这个网址的请求数据https://g.cainiao.com/omni/inventory/itemInv/query


  1. let a = {
  2.     hook_send_severs:function(){
  3.         // let hookurl = /omni\/inventory\/itemInv\/query$/

  4.         ajaxHooker.filter(
  5.             {type: 'xhr',   url:'https://g.cainiao.com/omni/inventory/itemInv/query' , method: 'POST'},
  6.             // {type: 'fetch', url:'https://g.cainiao.com/omni/inventory/itemInv/query' , method: 'POST'},
  7.         );

  8.         ajaxHooker.hook(function(request){
  9.             console.log("汉 →   url:",request.url);
  10.             console.log("汉 →   data:",request.data);
  11.             console.log("汉 →   respons:",request.response);
  12.         });

  13.     },
  14. };

  15. (function(){
  16.     if(document.location.href.match(/warehouse-inventory-query-v2/)){
  17.         a.hook_send_severs();
  18.     };
  19. })()
复制代码
回复
订阅

使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    864

    回帖

    1364

    积分

    荣誉开发者

    积分
    1364

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-2-27 22:13:21 | 显示全部楼层
    Major 发表于 2023-2-27 14:38
    是这样吗,好像没有过滤 例如捕获这个网址的请求数据https://g.cainiao.com/omni/inventory/itemInv/quer ...

    对象数组,你没加方括号。
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    90

    积分

    初级工程师

    积分
    90

    新人报道

    发表于 2023-2-28 09:43:03 | 显示全部楼层
    cxxjackie 发表于 2023-2-27 22:13
    对象数组,你没加方括号。

    还是不行啊,例如下面的代码 加上filter 之后,一直停留在hook 上转圈圈,一个网址都都hook不到了
    1. let a = {
    2.     hook_send_severs:function(){
    3.         // let hookurl = /omni\/inventory\/itemInv\/query$/

    4.         ajaxHooker.filter([
    5.             {url:'https://g.cainiao.com/omni/inventory/itemInv/query' ,method: 'POST'},
    6.             // {type: 'xhr',   url:'https://g.cainiao.com/omni/inventory/itemInv/query' , method: 'POST'},
    7.             // {type: 'fetch', url:'https://g.cainiao.com/omni/inventory/itemInv/query' , method: 'POST'},
    8.             // {url: /^http/},
    9.         ]);

    10.         ajaxHooker.hook(function(request){
    11.             console.log("汉 →   url:",request.url);
    12.             // console.log("汉 →   data:",request.data);
    13.             // console.log("汉 →   respons:",request.response);
    14.         });

    15.     },
    16. };

    17. (function(){
    18.     if(document.location.href.match(/warehouse-inventory-query-v2/)){
    19.         a.hook_send_severs();
    20.     };
    21. })()
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    864

    回帖

    1364

    积分

    荣誉开发者

    积分
    1364

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-2-28 22:18:16 | 显示全部楼层
    Major 发表于 2023-2-28 09:43
    还是不行啊,例如下面的代码 加上filter 之后,一直停留在hook 上转圈圈,一个网址都都hook不到了
    ...

    不加filter能否hook到?这个过滤是白名单机制,hook不到可能规则有问题,url是否写多了?有些请求url是相对路径,你先不加filter抓一下看看,可能不是http开头的。
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    90

    积分

    初级工程师

    积分
    90

    新人报道

    发表于 2023-3-3 16:47:21 | 显示全部楼层
    cxxjackie 发表于 2023-2-28 22:18
    不加filter能否hook到?这个过滤是白名单机制,hook不到可能规则有问题,url是否写多了?有些请求url是相 ...

    不加  不加filter  可以hook到数据,filter的URL 我试了完整的和不完整的都不行,你试的可以成功吗
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    90

    积分

    初级工程师

    积分
    90

    新人报道

    发表于 2023-3-3 20:16:30 | 显示全部楼层
    我有一个按钮,点击按钮执行 hook 操作, hook完成后想释放 hook,使用 ajaxHooker.unhook(); 做释放操作。
    问题是,当我再次点击按钮时候,怎样才能让 hook继续工作,hook完成后再次释放 hook。
    只要我一直点击按钮,就一直循环,hook 和 释放hook。这样能不能实现
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    90

    积分

    初级工程师

    积分
    90

    新人报道

    发表于 2023-3-3 20:24:22 | 显示全部楼层
    有没有可能给 hook 动态传参,每次hook 时,hook 内部的函数接收不同参数
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    864

    回帖

    1364

    积分

    荣誉开发者

    积分
    1364

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-3-3 20:57:06 | 显示全部楼层
    Major 发表于 2023-3-3 16:47
    不加  不加filter  可以hook到数据,filter的URL 我试了完整的和不完整的都不行,你试的可以成功吗 ...

    你没给网址啊,只有一个请求链接,这个网站好像还要注册,我也不知道哪个页面,测试不了。
    我自己用filter是没问题的,你这个会不会是重定向?看看request.url和res.finalUrl是否一致,过滤应以前者为准。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    864

    回帖

    1364

    积分

    荣誉开发者

    积分
    1364

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-3-3 21:15:15 | 显示全部楼层
    本帖最后由 cxxjackie 于 2023-3-5 22:37 编辑
    Major 发表于 2023-3-3 20:24
    有没有可能给 hook 动态传参,每次hook 时,hook 内部的函数接收不同参数

    unhook不可逆,如果需要控制hook是否执行,可以在回调函数内加变量判断,传参这类需求也可以在外部实现:
    1. const myRequest = {
    2.     isHook: true,
    3.     isInit: false,
    4.     args: [],
    5.     hook(...args) {
    6.         this.isHook = true;
    7.         this.args = args;
    8.         if (this.isInit) return;
    9.         ajaxHooker.hook(request => {
    10.             if (!this.isHook) return;
    11.             console.log(this.args);
    12.         });
    13.         this.isInit = true;
    14.     },
    15.     unhook() {
    16.         this.isHook = false;
    17.     }
    18. };
    复制代码



    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-1-28 11:21
  • 签到天数: 59 天

    [LV.5]常住居民I

    18

    主题

    101

    回帖

    120

    积分

    中级工程师

    积分
    120
    发表于 2023-3-13 20:06:43 | 显示全部楼层
    这个牛币,请问是可以做到,我点击按钮后,将原来xrh的get请求要查询的内容,换成我修改后的内容吗?
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表