whitesev 发表于 2024-6-18 13:12:03

【建议】探讨新增Api处理header

今天使用了`Header Editor`这个插件用来修改header,发现它可以自定义使用`js`来对header进行修改,想知道脚本猫可以做个相关Api来修改header吗,感觉做的话功能会更强大,更多的想法可以实现了,不知道`MV3`中能否实现,比如某些链接的`Referer`和`User-Agent`鉴权,但是破坏性应该是挺强的

相关链接:[https://he.firefoxcn.net/guide/custom-function#%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0](https://he.firefoxcn.net/guide/custom-function#%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0)

```typescript
interface CAT_headerEditor_Rule {
        /**
       * 匹配规则
       */
        pattern: string | RegExp;
        /**
       * 排除规则
       */
        exclude: string | RegExp;
}
interface CAT_headerEditor_HeaderRule {
        /**
       * 传入Header,修改header
       * @param headers
   * @example
   * (headers)=>{
   *    headers.set("Referer","xxxxxx");
   *    headers.delete("Referer");
   *    headers.set("User-Agent": "xxxx");
   *    return headers;
   * }
       */
        callback: (headers: Headers) => Headers;
}
/**
* 阻止请求
*/
interface CAT_headerEditor_blockRequest extends CAT_headerEditor_Rule {
        ruleType: "blockRequest";
}
/**
* 重定向请求
*/
interface CAT_headerEditor_redirectRequest extends CAT_headerEditor_Rule {
        ruleType: "redirectRequest";
        /**
       * 传入完整的url
       * @param url
       * @returns
       * + null|undefined: 跳过
       * + string: 重定向URL
       * + "_header_editor_cancel_": 取消请求
       */
        callback: (
                url: string
        ) => string | null | undefined | "_header_editor_cancel_";
}
/**
* 修改请求头
*/
interface CAT_headerEditor_modifyRequestHeader
        extends CAT_headerEditor_Rule,
                CAT_headerEditor_HeaderRule {
        ruleType: "modifyRequestHeader";
}
/**
* 修改响应头
*/
interface CAT_headerEditor_modifyResponseHeader
        extends CAT_headerEditor_Rule,
                CAT_headerEditor_HeaderRule {
        ruleType: "modifyResponseHeader";
}
/**
* 修改响应体
* @only firefox
*/
interface CAT_headerEditor_modifyResponseBody extends CAT_headerEditor_Rule {
        ruleType: "modifyResponseBody";
}
/**
* 所有的规则类型
*/
type CAT_headerEditor_OptionRuleType =
        | CAT_headerEditor_blockRequest["ruleType"]
        | CAT_headerEditor_redirectRequest["ruleType"]
        | CAT_headerEditor_modifyRequestHeader["ruleType"]
        | CAT_headerEditor_modifyResponseHeader["ruleType"]
        | CAT_headerEditor_modifyResponseBody["ruleType"];

/**
* 配置
*/
interface CAT_headerEditor_Option {
        ruleType: CAT_headerEditor_OptionRuleType;
}

export const CAT_headerEditor = function (option: CAT_headerEditor_Option) {
        // 具体实现
};

```

whitesev 发表于 2024-6-18 13:12:57

@王一之

王一之 发表于 2024-6-18 13:47:17

可以的,有说法的

不过目前还没空增加新的API,新功能的添加先重构完成了MV3再说,现在的版本只做缝缝补补了

MV3实现这个应该没啥问题,然后API的定义怎么样还不好说,后续再思考


哥哥可以发到GitHub上去,这边主要还是社区这块的

whitesev 发表于 2024-6-18 14:09:17

王一之 发表于 2024-6-18 13:47
可以的,有说法的

不过目前还没空增加新的API,新功能的添加先重构完成了MV3再说,现在的版本只做缝缝补补 ...

好的gg,已经提issue了
页: [1]
查看完整版本: 【建议】探讨新增Api处理header