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

[油猴脚本开发指南]理解fetch劫持

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-9-4 16:08:45 | 显示全部楼层
    脚本体验师001 发表于 2021-9-4 13:18
    李大师哥哥讲vue的劫持,这一块那一块的

    这个在计划,但是离完成还有很久....大概再给我一个半月吧,还在研究源码
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复
    订阅

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-9-4 16:19:28 | 显示全部楼层
    cxxjackie 发表于 2021-9-4 13:40
    不不不,我写了道哥就没东西写了道哥教程写的图文并茂,还有视频讲解,我就不献丑了。 ...

    哥哥别闹了,如果以一之为战力,我大概是0.3之,你大概是1.5之了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2021-9-4 17:26:24 | 显示全部楼层
    李恒道 发表于 2021-9-4 16:19
    哥哥别闹了,如果以一之为战力,我大概是0.3之,你大概是1.5之了

    这就捧杀我了,让我写个脚本猫那样的扩展我可做不来,太复杂了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-7 09:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    22

    主题

    104

    回帖

    170

    积分

    中级工程师

    积分
    170
    发表于 2021-12-5 21:46:45 | 显示全部楼层
    cxxjackie 发表于 2021-8-25 21:22
    [md]我还是不喜欢Proxy这种劫持整个对象的做法,效率问题先放一边,看你的代码逻辑也显得非常复杂。像这个 ...

    哥哥,我记得箭头函数是不是没有arguments对象,如果箭头函数上面套了一层普通函数的话,箭头函数中使用argument对象是会使用上层的普通函数的arguments对象
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2021-12-6 10:11:07 | 显示全部楼层
    rubinTime 发表于 2021-12-5 21:46
    哥哥,我记得箭头函数是不是没有arguments对象,如果箭头函数上面套了一层普通函数的话,箭头函数中使用a ...

    是的,this也一样。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    16

    积分

    助理工程师

    积分
    16
    发表于 2022-1-21 15:04:46 | 显示全部楼层
    本帖最后由 soulyale 于 2022-1-21 15:05 编辑

    我试着写个jQuery的Ajax的劫持,请大佬看看有什么问题没?

    1. (function(){

    2.     let oldajx=$.ajax;

    3.     async function  fuckajx(){
    4.         oldajx.apply($,arguments).then((response)=>{
    5.             console.info(arguments[0].url,response.data);
    6.             return response;});
    7.         
    8.     }
    9.     $.ajax=fuckajx;
    10.    
    11. })();
    复制代码




    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-1-21 16:55:53 | 显示全部楼层
    soulyale 发表于 2022-1-21 15:04
    我试着写个jQuery的Ajax的劫持,请大佬看看有什么问题没?

    这个肉眼看是绝对看不出来的,一边调输入和输出一边写吧
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-21 21:38
  • 签到天数: 53 天

    [LV.5]常住居民I

    7

    主题

    34

    回帖

    68

    积分

    初级工程师

    积分
    68

    新人报道喜迎中秋

    发表于 2023-6-1 21:42:08 | 显示全部楼层

    我试着调试这个fetch劫持两个多小时了,都没弄明白,转过去看B站视频也没找到你的调试步骤,还是没明白,还是伸手直接问了,代码如下,除了'xml begin'这个其他的都没有打印,应该是没有触发调用,实在不明白怎么触发劫持,难道还有什么其他的条件吗,还是希望有一个完整的例子,不怕简单就怕不能代码不能跑🤣🤣

    // ==UserScript==
    // @name         Simple
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/*
    // @icon         https://www.google.com/s2/favicons?sz=64&domain=baidu.com
    // ==/UserScript==
    console.log('xml begin')
    let oldfetch = fetch;
    async function fuckfetch() {
        console.log('xml1 bgin')
        return new Promise((resolve, reject) => {
            console.log('xml2 bein')
            oldfetch.apply(this, arguments).then(response => {
                console.log('xml3 begn')
                const oldJson = response.json;
                response.json = function() {
                    return new Promise((resolve, reject) => {
                        oldJson.apply(this, arguments).then(result => {
                            result.hook = 'success';
                            resolve(result);
                        });
                    });
                };
                resolve(response);
            });
        });
    }
    window.fetch = fuckfetch;
    
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2023-6-1 22:19:07 | 显示全部楼层
    youwh 发表于 2023-6-1 21:42
    [md]我试着调试这个fetch劫持两个多小时了,都没弄明白,转过去看B站视频也没找到你的调试步骤,还是没明白 ...

    一个是这个页面没有fetch请求,只有xhr请求,所以没触发。另一个是window.fetch应该改成unsafeWindow.fetch,油猴在没有显式声明@grant none的情况下是沙盒环境,window和unsafeWindow中的很多对象不属于同一引用,而劫持应当作用于真实环境,即unsafeWindow。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-21 21:38
  • 签到天数: 53 天

    [LV.5]常住居民I

    7

    主题

    34

    回帖

    68

    积分

    初级工程师

    积分
    68

    新人报道喜迎中秋

    发表于 2023-6-1 23:10:07 | 显示全部楼层
    cxxjackie 发表于 2023-6-1 22:19
    一个是这个页面没有fetch请求,只有xhr请求,所以没触发。另一个是window.fetch应该改成unsafeWindow.fet ...

    弄好了,谢谢哥哥,哥哥真棒👍
    回复

    使用道具 举报

    发表回复

    本版积分规则

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