Skip to content

Commit

Permalink
fmt document (#198)
Browse files Browse the repository at this point in the history
  • Loading branch information
justjavac authored Dec 6, 2023
1 parent d41f81e commit 4cf3aa4
Show file tree
Hide file tree
Showing 8 changed files with 126 additions and 105 deletions.
114 changes: 69 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Replace Google CDN

[![](https://img.shields.io/github/issues/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/issues) [![](https://img.shields.io/github/release/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/releases)
[![](https://img.shields.io/github/issues/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/issues)
[![](https://img.shields.io/github/release/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/releases)
[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/kpampjmfiopfpkkepbllemkibefkiice.svg)](https://chrome.google.com/webstore/detail/kpampjmfiopfpkkepbllemkibefkiice)

将 Google CDN 替换为国内的。
Expand All @@ -17,54 +18,70 @@

## 原理

> 借助浏览器提供的API,实现请求地址重定向 。[浏览器 V2 API ](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)[浏览器 V3 API ](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)
> 借助浏览器提供的API,实现请求地址重定向。
>
> - [浏览器 V2 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)
> - [浏览器 V3 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)
>
> 默认未启用的规则, 如需启用请到扩展选项页自行打开
> > 默认未启用的规则, 如需启用请到扩展选项页自行打开
此插件/扩展可以将以下的 cdn 资源替换为国内的:
此插件/扩展可以将以下的 CDN 资源替换为国内的:

1. `ajax.googleapis.com` - 前端公共库,替换为 `ajax.loli.net`
1. `fonts.googleapis.com` - 免费字体库,替换为 `fonts.googleapis.cn`
1. `themes.googleusercontent.com` - fonts 有时会使用到这个里面的资源,替换为 `themes.loli.net`
1. `themes.googleusercontent.com` - fonts 有时会使用到这个里面的资源,替换为
`themes.loli.net`
1. `fonts.gstatic.com` - 免费字体库,替换为 `fonts.gstatic.cn`
1. `www.google.com/recaptcha` - Google 图像验证库,替换为 `www.recaptcha.net/recaptcha`
1. `www.google.com/recaptcha` - Google 图像验证库,替换为
`www.recaptcha.net/recaptcha`
1. `secure.gravatar.com` - gravatar 头像,替换为 `gravatar.loli.net`
1. `maxcdn.bootstrapcdn.com/bootstrap` - bootstrap 框架使用的 CDN,替换为 `lib.baomitu.com/twitter-bootstrap/`
1. `code.jquery.com/jquery-(version)(suffix)` - jquery 框架使用的 CDN,替换为 `https://fastly.jsdelivr.net/npm/jquery@$verson/dist/jquery$suffix`
1. `cdnjs.cloudflare.com` - 替换为 `cdnjs.loli.net` 默认未启用, 如需启用请到扩展选项页自行打开
1. `maxcdn.bootstrapcdn.com/bootstrap` - bootstrap 框架使用的 CDN,替换为
`lib.baomitu.com/twitter-bootstrap/`
1. `code.jquery.com/jquery-(version)(suffix)` - jquery 框架使用的 CDN,替换为
`https://fastly.jsdelivr.net/npm/jquery@$verson/dist/jquery$suffix`
1. `cdnjs.cloudflare.com` - 替换为 `cdnjs.loli.net` 默认未启用,
如需启用请到扩展选项页自行打开
1. `cdn.jsdelivr.net` - 替换为 `fastly.jsdelivr.net`
1. `developers.google.com` - 替换为 `developers.google.cn` 默认未启用, 如需启用请到扩展选项页自行打开
1. `developer.android.com` - 替换为 `developer.android.google.cn` 默认未启用, 如需启用请到扩展选项页自行打开
1. `source.android.com` - 替换为 `source.android.google.cn` 默认未启用, 如需启用请到扩展选项页自行打开
1. `www.gstatic.com` - 替换为 `www.gstatic.cn` 默认未启用, 如需启用请到扩展选项页自行打开
1. `developers.google.com` - 替换为 `developers.google.cn` 默认未启用,
如需启用请到扩展选项页自行打开
1. `developer.android.com` - 替换为 `developer.android.google.cn` 默认未启用,
如需启用请到扩展选项页自行打开
1. `source.android.com` - 替换为 `source.android.google.cn` 默认未启用,
如需启用请到扩展选项页自行打开
1. `www.gstatic.com` - 替换为 `www.gstatic.cn` 默认未启用,
如需启用请到扩展选项页自行打开
1. `lh3.googleusercontent.com` 默认未启用, 如需启用请到扩展选项页自行打开
1. `cdn.sstatic.net`- 替换为 `sstatic.net` 默认未启用, 如需启用请到扩展选项页自行打开
1. `cdn.sstatic.net`- 替换为 `sstatic.net` 默认未启用,
如需启用请到扩展选项页自行打开

## 扩展选项页使用简述

1. <strong>双击扩展图标-自动打开扩展选项配置页面</strong>
1. [扩展选项配置页面原理](extension/options_ui/README.md)

## v3 功能变更记录[`CHANGELOG-v3-x.x.x`](CHANGELOG-v3-x.x.x.md)
## 功能变更记录

## v2 功能变更记录[`CHANGELOG-v2-x.x.x`](CHANGELOG-v2-x.x.x.md)
- v3 功能变更记录[`CHANGELOG-v3-x.x.x`](CHANGELOG-v3-x.x.x.md)
- v2 功能变更记录[`CHANGELOG-v2-x.x.x`](CHANGELOG-v2-x.x.x.md)

## 效果

安装扩展/插件后访问 <https://stackoverflow.com/questions> 页面:

![](./screen-sof.png)

第一行是 jquery.min.js 的原始请求 `https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js`,被拦截并替换,返回的状态码为
307 Internal Redirect,耗时 26ms。第三行是 jquery.min.js 被替换后的请求,33kB,耗时 95ms。
第一行是 jquery.min.js 的原始请求
`https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js`,被拦截并替换,返回的状态码为
307 Internal Redirect,耗时 26ms。第三行是 jquery.min.js
被替换后的请求,33kB,耗时 95ms。

下表是各种资源的网络请求对比(以替换后的速度为基准 100%):

| 资源 | 来源 | 尺寸(kB) | 时间(ms) | 速度(B/ms) | 百分比 |
| ------------------------ | ------------------------------ | -------: | -------: | ---------: | -------: |
| jquery.min.js | ajax.googleapis.com | 0 | 26 | - | - |
| stub.en.js | cdn.sstatic.net | 18.0 | 293 | 61.4 | 18% |
| **jquery.min.js** | **ajax.loli.net** ⚡️ | **33.1** | **95** | **348.4** | **100%** |
| **jquery.min.js** | **ajax.loli.net** ⚡️ | **33.1** | **95** | **348.4** | **100%** |
| clc.min.js | cdn.sstatic.net | 4.2 | 399 | 10.5 | 30% |
| full.en.js | cdn.sstatic.net | 99.6 | 534 | 186.5 | 54% |
| gpt.js | securepubads.g.doubleclick.net | 21.3 | 85 | 250.6 | 72% |
Expand All @@ -79,14 +96,18 @@

## 打包命令

> 构建打包结果位于 dist 目录
构建打包结果位于 dist 目录

```shell
打包 V2 版本

bash release-archive.sh
```bash
bash release-archive.sh
```

bash release-archive-v3.sh
打包 V3 版本

```bash
bash release-archive-v3.sh
```

## 安装
Expand All @@ -101,39 +122,44 @@ bash release-archive-v3.sh

Chrome 安装方法(Google 被墙了上不去):

> 1. 下载 [ReplaceGoogleCDN](https://github.com/justjavac/ReplaceGoogleCDN/archive/master.zip) 然后解压,
> 找到 `extension` 子目录
> 2. 打开 Chrome,输入: `chrome://extensions/`
> 3. 勾选 Developer Mode
> 4. 选择 Load unpacked extension... 然后定位到刚才解压的文件夹里面的 extension 目录,确定
> 5. 这就安装好了,去掉 Developer Mode 勾选。
1. 下载
[ReplaceGoogleCDN](https://github.com/justjavac/ReplaceGoogleCDN/archive/master.zip)
然后解压, 找到 `extension` 子目录
1. 打开 Chrome,输入: `chrome://extensions/`
1. 勾选 Developer Mode
1. 选择 Load unpacked extension... 然后定位到刚才解压的文件夹里面的 extension
目录,确定
1. 这就安装好了,去掉 Developer Mode 勾选。

### 扩展下载方式三(来自国内镜像)

### 扩展下载方式三:(来自国内镜像) 克隆源代码以后, 步骤如上: :point_up_2: :point_up_2: :point_up_2:
克隆源代码以后,步骤如上::point_up_2: :point_up_2: :point_up_2:

1. [ReplaceGoogleCDN gitee 镜像](https://gitee.com/mirrors/replacegooglecdn)
1. [ReplaceGoogleCDN gitcode 镜像](https://gitcode.com/mirrors/justjavac/replacegooglecdn.git)

```shell
```bash
# 克隆源代码
git clone -b master https://gitee.com/mirrors/replacegooglecdn.git --depth=1 --progress

# 或者
git clone -b master https://gitcode.com/mirrors/justjavac/replacegooglecdn.git --depth=1 --progress

# 更新源代码

git -C replacegooglecdn pull --depth=1 --progress --rebase=true

git -C replacegooglecdn pull --depth=1 --progress --rebase
```

### 扩展下载方式四:(已经构建好,可以上传扩展市场的代码)
### 扩展下载方式四

已经构建好,可以上传扩展市场的代码。

1. [ReplaceGoogleCDN-v3.zip(release v3 版本)支持 chromium 系列浏览器](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v3.zip)
1. [ReplaceGoogleCDN-v2.zip(release v2 版本)同时支持 firefox 和 chromium 系列浏览器](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v2.zip)
1. [ReplaceGoogleCDN.zip(全部源码)](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN.zip)

#### 扩展下载方式四, 构建原理
#### 构建原理

```text
```bash
# 原理: github: page + action

# 构建脚本
Expand All @@ -145,13 +171,11 @@ https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN.zip
# 已经构建好扩展包下载地址
https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v2.zip
https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v3.zip
```

## [declarative_net_reques 规则配置示例](extension/rules/README.md)

## [测试用例](test/README.md)

## [公共 CDN 静态资源库](public-cdn.md)
## 文档

## [网络拨测工具 (测试 公共 CDN 静态资源库 区域可用性)](tools/net-detect.md)
- [declarative_net_reques 规则配置示例](extension/rules/README.md)
- [测试用例](test/README.md)
- [公共 CDN 静态资源库](public-cdn.md)
- [网络拨测工具 (测试 公共 CDN 静态资源库 区域可用性)](tools/net-detect.md)
12 changes: 7 additions & 5 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@
## v2 版本 与 v3 最大的区别:

> V2 版本允许使用 javascript 脚本 动态修改 HTTP请求的 请求头 和 响应头 ,V3 版本禁止使用
> V3 使用声明式规则 实现 对HTTP请求的 请求头 和 响应头的修改,不支持使用 javascript 动态修改
> V2 版本允许使用 javascript 脚本 动态修改 HTTP请求的 请求头 和 响应头 ,V3
> 版本禁止使用
>
> V3 使用声明式规则 实现 对HTTP请求的 请求头 和 响应头的修改,不支持使用
> javascript 动态修改
## 浏览器 V2 API

1. [浏览器 V2 API ](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)
1. [浏览器 V3 API ](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)
1. [浏览器 V2 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)
1. [浏览器 V3 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)
1. [chromium declarativeNetRequest匹配规则文档](https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/)

## [firefox 支持 V3 情况](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)
Expand Down
2 changes: 1 addition & 1 deletion docs/advanced/README.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#
#
4 changes: 2 additions & 2 deletions docs/tools/tools.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 工具介绍

##
##

##
##
2 changes: 1 addition & 1 deletion experimental-features/READEM.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# 试验特性介绍

##
##
8 changes: 5 additions & 3 deletions experimental-features/v3/rules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
> 动态地址替换 `rules_advance_redirect_2.json`
> 移除 content-security-policy `rules_remove_content_security_policy_header.json`
> 移除 content-security-policy
> `rules_remove_content_security_policy_header.json`
> 阻止请求 `rules_block_request.json`
> [应用例子:用于查看 chromium 的源码 ](https://github.com/jingjingxyk/extension-v3-test)
> [应用例子:用于查看 chromium 的源码](https://github.com/jingjingxyk/extension-v3-test)
### 指定匹配域名

Expand All @@ -26,7 +27,8 @@

### 动态匹配域名

> https://www.chromium.org/ -> https://2_www_xn--3px_chromium_xn--3px_org.proxy.domain.com/
> https://www.chromium.org/ ->
> https://2_www_xn--3px_chromium_xn--3px_org.proxy.domain.com/
```json
{
Expand Down
47 changes: 22 additions & 25 deletions extension/options_ui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,29 @@

## 选项页原理

> 选项页一直都是围绕 `chrome.declarativeNetRequest.updateDynamicRules` 函数的使用,而展开开发工作
> 函数使用文档: https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#method-updateDynamicRules
> 选项页一直都是围绕 `chrome.declarativeNetRequest.updateDynamicRules`
> 函数的使用,而展开开发工作
>
> 函数使用文档:
> https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#method-updateDynamicRules
## 函数的使用用法

```text
// chromium 内核版本87以上开始支持
```js
// chromium 内核版本 87 以上开始支持
chrome.declarativeNetRequest.updateDynamicRules(
{
addRules: [ {新增规则1},{新增规则2},{新增规则3},{新增规则4} ],
removeRuleIds: [待删除规则的id1,待删除规则的id2,待删除规则的id3]
}
{
addRules: [{ 新增规则1 }, { 新增规则2 }, { 新增规则3 }, { 新增规则4 }],
removeRuleIds: [待删除规则的id1, 待删除规则的id2, 待删除规则的id3],
},
);
```

## 来个演示例子

```javascript
// developers.google.com 重定向到 developers.google.cn
// 123 是被删除的规则ID (和添加规则的例子id=10同一个属性)
// 123 是被删除的规则 ID (和添加规则的例子 id=10 同一个属性)

chrome.declarativeNetRequest.updateDynamicRules(
{
Expand Down Expand Up @@ -70,19 +68,18 @@ chrome.declarativeNetRequest.updateDynamicRules(
},
(parameter) => {
console.log(parameter);
}
)

},
);
```

## 选项页做了什么事?

> 根据规则的来源把 规则 ID 划分了成了不同的区间段,
>
> 然后调用函数,执行规则插入、删除 、备份操作
>
> 更新操作: 其实是删除,然后插入
>
> 规则 ID 是自定义的
## 按照规则来源划分规则 ID 区间段
Expand All @@ -108,7 +105,6 @@ chrome.declarativeNetRequest.updateDynamicRules(
同步远端动态规则编号:40000<=编号<=320000
其他编号: 未定义
```

## 固定规则编号
Expand Down Expand Up @@ -137,11 +133,12 @@ chrome.declarativeNetRequest.updateDynamicRules(
| 9999 | supper-priority-override-rule | 默认未启用 |

> 默认未启用的规则,如何启用?
> 答:扩展默认选项设置 =》 默认候选项切换 =》 选中规则候选项=》启用 默认未启用的规则
>
> 答:扩展默认选项设置 =》 默认候选项切换 =》 选中规则候选项=》启用
> 默认未启用的规则
>
> 规则 id=9999,priority=9999。规则拥有最高优先级,作用:
>
> 答: 用于覆盖其他地址重定向规则
## 演示地址的规则来源
Expand Down
Loading

0 comments on commit 4cf3aa4

Please sign in to comment.