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

ajax劫持库ajaxHooker

  [复制链接]

该用户从未签到

0

主题

24

回帖

14

积分

助理工程师

积分
14
发表于 2023-2-6 13:21:32 | 显示全部楼层
steven026 发表于 2023-2-6 13:05
[md]这不是我以前写的代码么=-=
你是不是漏了个async/await
!(data/attachment/forum/202302/06/130506vk ...
  1. 'use strict';
  2. let fetchHook={};
  3. let hook_fetch=window.fetch; //储存原始fetch
  4. window.fetch=async function(...args){ //劫持fetch
  5.     debugger;
  6.     //if(args[0].indexOf('https://inbound.tungee.com/service-tp-api/heartbeat/black-list')===0){
  7.         return await hook_fetch(...args).then((oriRes)=>{
  8.             let hookRes =oriRes.clone() //克隆原始response
  9.             hookRes.text().then(res=>{ //读取克隆response
  10.                 console.log("RES",res);
  11.             })
  12.             return oriRes //返回原始response
  13.         })
  14.     //}
  15.     return hook_fetch(...args)
  16. }
  17. }, this)}
  18. //# sourceURL=chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?name=fetch%2520Hook%2520test.user.js&id=4f2e8fd5-5284-4773-a53c-6350bee6b38d
  19. }
复制代码


在这里进行断点调试,发现38个fetch请求,只有6个触发了这个方法
而后续按键在fetch/xhr里面新增的fetch一个都没有触发到这个脚本
回复
订阅

使用道具 举报

  • TA的每日心情
    慵懒
    2 小时前
  • 签到天数: 632 天

    [LV.9]以坛为家II

    30

    主题

    535

    回帖

    1407

    积分

    荣誉开发者

    积分
    1407

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-2-6 13:22:04 | 显示全部楼层

    908517142 发表于 2023-2-6 13:12

    尤其是后续按钮按下去触发的fetch请求,一个都检查不到

    只有通过fetch请求的才会被这段代码劫持,如果不是fetch就不会
    你最好先通过网络-发起程序-堆栈确定是不是fetch请求
    如果确定是的话……我也不知道……建议问@李恒道 🙄

    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-6 14:12:36 | 显示全部楼层
    steven026 发表于 2023-2-6 13:22
    [md]只有通过fetch请求的才会被这段代码劫持,如果不是fetch就不会
    你最好先通过网络-发起程序-堆栈确定 ...

    同一个页面的两个多个请求

    这个获取不到
    fetch("https://sales.tungee.com/api/unlock-leads?sort_field=create_time&sort=-1&begin=0&end=50", {
      "headers": {
        "accept": "*/*",
        "accept-language": "zh-CN,zh;q=0.9",
        "cache-control": "no-cache",
        "pragma": "no-cache",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin"
      },
      "referrer": "https://sales.tungee.com/unlock-list/enterprise",
      "referrerPolicy": "no-referrer-when-downgrade",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "include"
    }); ;

    这个被成功获取
    fetch("https://inbound.tungee.com/service-tp-api/heartbeat/black-list?tp_smart_service_cookie=Xtbfw8AzMc7hDM8CdyYflnvj0I6PNsvJacw%2F3cnohxQ%3D&expire_ts=1675647264660", {
      "headers": {
        "accept": "*/*",
        "accept-language": "zh-CN,zh;q=0.9",
        "cache-control": "no-cache",
        "pragma": "no-cache",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site"
      },
      "referrer": "https://sales.tungee.com/unlock-list/enterprise",
      "referrerPolicy": "no-referrer-when-downgrade",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "include"
    }); ;

    我是真看不出来有什么区别 求哥哥指教
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-6 14:59:50 | 显示全部楼层
    steven026 发表于 2023-2-6 13:05
    [md]这不是我以前写的代码么=-=
    你是不是漏了个async/await
    !(data/attachment/forum/202302/06/130506vk ...

    发现了问题,这个window.fetch可以正常抓取状态吗为200的fetch
    但是状态码为200 OK的fetch全部都不触发,请问一下这是什么原因呢
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2 小时前
  • 签到天数: 632 天

    [LV.9]以坛为家II

    30

    主题

    535

    回帖

    1407

    积分

    荣誉开发者

    积分
    1407

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-2-6 15:05:30 | 显示全部楼层
    本帖最后由 steven026 于 2023-2-6 15:06 编辑
    908517142 发表于 2023-2-6 14:59
    发现了问题,这个window.fetch可以正常抓取状态吗为200的fetch
    但是状态码为200 OK的fetch全部都不触发, ...

    没见过 建议问问万能的 @李恒道
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-6 16:08:25 | 显示全部楼层
    steven026 发表于 2023-2-6 15:05
    没见过 建议问问万能的 @李恒道

    大神哥哥答了我两句就不在线了 ;;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    293

    主题

    3900

    回帖

    3820

    积分

    管理员

    积分
    3820

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-2-6 18:01:26 | 显示全部楼层

    908517142 发表于 2023-2-6 16:08

    大神哥哥答了我两句就不在线了 ;;

    试试这个,你之前代码感觉有问题,另外得保证脚本的运行比你请求更快

    // ==UserScript==
    // @name ajax Hook test
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://sales.tungee.com/*
    // @require https://scriptcat.org/lib/637/1.2.2/ajaxHooker.js
    // @grant        none
    // @run-at       document-start
    // ==/UserScript==
    
    ajaxHooker.hook(request => {
        request.response = res => {
            const responseText = res.responseText; // 注意保存原数据
            console.log(responseText);
        };
    });
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

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

    发表于 2023-2-7 00:20:56 | 显示全部楼层
    908517142 发表于 2023-2-6 11:22
    我将那个ajaxhooker的库的源代码复制后写到本地txt文件,再改名为.js文件,复制文件位置引入脚本,然后在 ...

    估计是设置没弄对,现在脚本站已经恢复了,直接引用就好,不用搞本地。你先试试这个库,如果库也抓不全,那可能是iframe问题,看本贴48楼的回复,前面有人遇到过。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-7 09:24:00 | 显示全部楼层
    王一之 发表于 2023-2-6 18:01
    [md]试试这个,你之前代码感觉有问题,另外得保证脚本的运行比你请求更快

    ```js

    谢谢 终于拿到了,这个引用的脚本真厉害
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-7 09:24:57 | 显示全部楼层
    cxxjackie 发表于 2023-2-7 00:20
    估计是设置没弄对,现在脚本站已经恢复了,直接引用就好,不用搞本地。你先试试这个库,如果库也抓不全, ...

    大神哥哥真厉害,你那个脚本能用了,一下就弄好了
    我昨天把对面js解析后一个一个弄发现特别复杂,但是你这个脚本直接就把所有的数据都拿到了
    谢谢
    回复

    使用道具 举报

    发表回复

    本版积分规则

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