Skip to content
This repository has been archived by the owner on Oct 14, 2024. It is now read-only.

Latest commit

 

History

History
171 lines (139 loc) · 4.06 KB

guides.md

File metadata and controls

171 lines (139 loc) · 4.06 KB

English version


匹配方式

为了做到细粒度控制,所有规则需要指定一个作用源,用于限定规则作用范围,支持两种匹配方式:

  • 通配符(wildcard),可以使用 *表示任意个字符,?表示任一字符。如需表示这两个字符自身的含义,需要使用\进行转义。
{
  "src": "www.baidu.com/s\?wd=java",
  "dst": "www.baidu.com/s?wd=lisp",
  "kind": "wildcard",
  "enable": true
}

此外,可以使用^$表示字符的开始与结尾。例如:

防止运营商劫持

{
  "src": "baidu.com/$",
  "dst": "baidu.com/?",
  "kind": "wildcard",
  "enable": true
}

这样就能够把baidu.com/重定向到baidu.com/?了,据说,这样能防止劫持吆 :-)

  • 正则式(regexp),语法同JS 的 RegExp,对于有分组的情况,在目标 URL 中可以使用 $1, $2... 反引用。例如
{
  "src": "(weibo|ucloud)\.com",
  "dst": "$1.cn",
  "kind": "regex",
  "enable": true
}

这样就把weibo.comucloud.com分别重定向到weibo.cnucloud.cn了。

自动跳转知乎链接

{
    "enable": true,
    "dst": "http$1://$2",
    "kind": "regexp",
    "src": "https://link\.zhihu\.com/\?target=http(s?)%3A\/\/(.*)"
}

测试

为了方便用户使用,在添加新规则后可以用 Sandbox 去测试是否有效。😊

内置规则

下面是一份导出规则的样本,展示了目前支持的四类规则:

  • redirect-rules 重定向 URL 规则
  • cancel-rules 屏蔽 URL 规则
  • request-headers http request headers 修改规则
  • response-headers http response headers 修改规则
{
  "createBy": "http://liujiacai.net/gooreplacer/",
  "version": "2.0",
  "createAt": "Sun Oct 29 2017 19:55:32 GMT+0800 (CST)",
  "redirect-rules": [
    {
      "src": "ajax.googleapis.com",
      "dst": "ajax.proxy.ustclug.org",
      "kind": "wildcard",
      "enable": true
    }
  ],
  "cancel-rules": [
    {
      "src": "github.com",
      "kind": "wildcard",
      "enable": true
    }
  ],
  "request-headers": [
    {
      "src": "http://liujiacai.net/gooreplacer/",
      "kind": "wildcard",
      "name": "user-agent",
      "value": "gooreplacer",
      "op": "modify",
      "enable": true
    }
  ],
  "response-headers": [
    {
      "src": "http://liujiacai.net/gooreplacer/",
      "kind": "wildcard",
      "name": "cookie",
      "op": "cancel",
      "enable": true
    }
  ]
}

规则中一些字段含义:

  • kind: wildcard表示通配符,regexp表示正则式
  • op: modify表示修改 header,cancel表示删除 header
  • name header name,不区分大小写

NOTE: 为于老版本兼容,重定向规则的 key 也可以为 rules,格式如下:

"rules": {
  "ajax.googleapis.com": {
    "dstURL": "ajax.proxy.ustclug.org",
    "enable": true,
    "kind": "wildcard"
  }
}

根据 Google Extension 文档,以下 headers 不支持修改:

  • Authorization
  • Cache-Control
  • Connection
  • Content-Length
  • Host
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • Partial-Data
  • Pragma
  • Proxy-Authorization
  • Proxy-Connection
  • Transfer-Encoding

迁移指南(v1.0-->v2.0)

在 Option 页面的打开 Console,输入下面的代码

function decode(src, kind) {
    if (kind == 'wildcard' && src.match(/\.(\*|\?)/g)) {
        return src.replace(/\.(\*|\?)/g, "$1");
    } else {
        return src;
    }
}

var rawRules = JSON.parse(localStorage.getItem("rules"));
var exportRules = {};
for(var k in rawRules) {
    exportRules[decode(k, rawRules[k].kind)] = rawRules[k];
}

console.log(JSON.stringify({"rules": exportRules}, null , 2));

回车运行,会打印出本地规则,新建gooreplacer.gson文件,保存上面输出的内容,之后在导入时选择这个文件即可恢复原有规则。

PS:如果在迁移过程中有任何问题,可以提 issue,我会尽量协助大家迁移。