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

请大神看下X浏览器为什么不支持这个脚本

[复制链接]

该用户从未签到

1

主题

0

回帖

3

积分

助理工程师

积分
3
发表于 2022-10-19 21:24:52 | 显示全部楼层 | 阅读模式
悬赏20油猫币已解决

本帖最后由 unwake 于 2022-10-19 21:26 编辑

网站是通过fetch /api/user 来决定当前用户是不是VIP,我写了个脚本,通过替换返回值来伪装VIP用户
下面的脚本在edgev106桌面版本+tempermonkey测试通过,装到X浏览器上就无效。希望您能指出下面的脚本哪些地方
需要改动下,好适用于X浏览器

目标是fetch /api/user返回的
"paid":false,"paypal":false,"expired":true,"expireInDays":-346'
替换成
'"paid":true,"paypal":true,"expired":false,"expireInDays":346'
替换后的效果

微信截图_20221019212006.png


但是我在手机X浏览器上却没有效果,请问为什么?

// ==UserScript==
// @name         ReabbleVIP
// @namespace    GuoQingyuan
// @version      0.1
// @description  Change your Reabble account to VIP
// @author       GuoQingyuan
// @match        https://reabble.cn/app
// @icon         https://reabble.cn/static/img/icons/favicon.ico
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    let oldfetch = fetch;
function fuckfetch() {
    return new Promise((resolve, reject) => {
        oldfetch.apply(this, arguments).then(response => {
            if (arguments[0].indexOf('/api/user') > -1) {

                const oldtext = response.text;
                response.text = function() {
                    return new Promise((resolve, reject) => {
                        oldtext.apply(this, arguments).then(result => {
                            result = result.replace('"paid":false,"paypal":false,"expired":true,"expireInDays":-','"paid":true,"paypal":true,"expired":false,"expireInDays":');
                            console.log(result)
                            resolve(result);
                        });
                    });
                };
            };
            resolve(response);
        });
    });
}
window.fetch = fuckfetch;
})();

最佳答案

查看完整内容

//@ run-at document-start这个对X浏览器基本无效 设置后在X浏览器。油猴脚本的加载时机是随机的,有的快有的慢。并不能保证最早注入 导致依赖这个document-start API的脚本失效,网页载入时,行为无法预测。 目前也找不到合适的解决方案,折中方案就是在网页载入完毕后,重新发送所有没有被拦截的网络请求。 另外,X浏览器还有一个跟其他管理器区别的特性,就是网址锚点变动后,脚本会重复加载。 比如你这个网址载入时会这样变化 ...
  • TA的每日心情
    开心
    2022-11-13 00:00
  • 签到天数: 33 天

    [LV.5]常住居民I

    0

    主题

    19

    回帖

    45

    积分

    初级工程师

    积分
    45
    发表于 2022-10-19 21:24:53 | 显示全部楼层
    //@ run-at document-start这个对X浏览器基本无效
    设置后在X浏览器。油猴脚本的加载时机是随机的,有的快有的慢。并不能保证最早注入
    导致依赖这个document-start API的脚本失效,网页载入时,行为无法预测。
    目前也找不到合适的解决方案,折中方案就是在网页载入完毕后,重新发送所有没有被拦截的网络请求。

    另外,X浏览器还有一个跟其他管理器区别的特性,就是网址锚点变动后,脚本会重复加载。
    比如你这个网址载入时会这样变化:
    1. https://reabble.cn/app ==> https://reabble.cn/app#/login
    复制代码

    这时脚本就会被加载两遍,我在其他管理器也没有发现这种特性。
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-12-18 11:32
  • 签到天数: 194 天

    [LV.7]常住居民III

    731

    主题

    6235

    回帖

    6981

    积分

    管理员

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

    积分
    6981

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

    发表于 2022-10-19 21:34:55 | 显示全部楼层
    这个太为难我们了...
    X浏览器貌似论坛没见过有人用过
    可以考虑每一步打个alert断点看看到底到哪里没执行
    也可能脚本都没执行...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

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

    [LV.10]以坛为家III

    31

    主题

    559

    回帖

    1596

    积分

    荣誉开发者

    积分
    1596

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

    发表于 2022-10-19 21:41:08 | 显示全部楼层

    劫持fetch可能需要在元信息里面加一行
    //@ run-at document-start

    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    883

    回帖

    1381

    积分

    荣誉开发者

    积分
    1381

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

    发表于 2022-10-19 21:51:35 | 显示全部楼层
    我用过X、Via等,对油猴API的支持没有想象中那么好,建议换Kiwi。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-1 14:07
  • 签到天数: 672 天

    [LV.9]以坛为家II

    13

    主题

    144

    回帖

    401

    积分

    高级工程师

    积分
    401

    油中2周年

    发表于 2022-10-20 14:15:17 | 显示全部楼层
    cxxjackie 发表于 2022-10-19 21:51
    我用过X、Via等,对油猴API的支持没有想象中那么好,建议换Kiwi。

    怪不到我via装油猴脚本没反应  换kiwi了
    回复

    使用道具 举报

    发表回复

    本版积分规则

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