{"id":13459115,"url":"https://github.com/justjavac/ReplaceGoogleCDN","last_synced_at":"2025-03-24T16:31:22.323Z","repository":{"id":22773248,"uuid":"26119237","full_name":"justjavac/ReplaceGoogleCDN","owner":"justjavac","description":"⚡️ 一个 Chrome 插件：将 Google CDN 替换为国内的。","archived":false,"fork":false,"pushed_at":"2025-03-03T11:28:27.000Z","size":4159,"stargazers_count":3489,"open_issues_count":38,"forks_count":537,"subscribers_count":83,"default_branch":"master","last_synced_at":"2025-03-19T12:21:12.680Z","etag":null,"topics":["cdn","chrome","chrome-extension","google","javascript"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/justjavac.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG-v2-x.x.x.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":[],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://github.com/justjavac/buy-me-a-coffee"}},"created_at":"2014-11-03T13:16:00.000Z","updated_at":"2025-03-18T14:57:48.000Z","dependencies_parsed_at":"2023-10-11T02:44:37.370Z","dependency_job_id":"11553c7b-8465-4572-a0ae-8e10f666609a","html_url":"https://github.com/justjavac/ReplaceGoogleCDN","commit_stats":{"total_commits":120,"total_committers":17,"mean_commits":"7.0588235294117645","dds":0.55,"last_synced_commit":"0c857f253e7b61663b8bfdd1f45de36f8d179dcb"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justjavac%2FReplaceGoogleCDN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justjavac%2FReplaceGoogleCDN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justjavac%2FReplaceGoogleCDN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justjavac%2FReplaceGoogleCDN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justjavac","download_url":"https://codeload.github.com/justjavac/ReplaceGoogleCDN/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245308572,"owners_count":20594272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdn","chrome","chrome-extension","google","javascript"],"created_at":"2024-07-31T09:01:04.762Z","updated_at":"2025-03-24T16:31:21.420Z","avatar_url":"https://github.com/justjavac.png","language":"JavaScript","funding_links":["https://github.com/justjavac/buy-me-a-coffee"],"categories":["JavaScript","Chrome 扩展"],"sub_categories":[],"readme":"# Replace Google CDN\n\n[![](https://img.shields.io/github/issues/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/issues)\n[![](https://img.shields.io/github/release/justjavac/ReplaceGoogleCDN.svg)](https://github.com/justjavac/ReplaceGoogleCDN/releases)\n[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/kpampjmfiopfpkkepbllemkibefkiice.svg)](https://chrome.google.com/webstore/detail/kpampjmfiopfpkkepbllemkibefkiice)\n\n将 Google CDN 替换为国内的。\n\n## 缘起\n\n\u003e 由于众所周知的原因，只需替换一个域名就可以继续使用 Google 提供的前端公共库了。\n\u003e 同样，通过 `script` 标记引用这些资源，让网站访问速度瞬间提速！\n\n很多网站，尤其是国外网站，为了加快网站的速度，都使用了 Google 的 CDN。\n但是在天朝，由于某些原因，导致全球最快的 CDN 变成了全球最慢的。\n\n于是，我写了这个插件/扩展，将 Google 的 CDN 替换成国内的。\n\n## 原理\n\n\u003e 借助浏览器提供的API，实现请求地址重定向。\n\u003e\n\u003e -   [浏览器 V2 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)，\n\u003e -   [浏览器 V3 API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest)\n\u003e\n\u003e 默认未启用的规则, （双击扩展图标，进入扩展选项页面，可调整替换地址）\n\n此插件/扩展可以将以下的 CDN 资源替换为国内的：\n\n| 序号 | 原地址                                        | 替换后的地址                                                              | 是否启用 | 简述                  |\n|----|--------------------------------------------|---------------------------------------------------------------------|------|---------------------|\n| 1  | `ajax.googleapis.com`                      | `ajax.loli.net`                                                     | ✅    | 前端公共库               |\n| 2  | `fonts.googleapis.com`                     | `fonts.googleapis.cn`                                               | ✅    | 免费字体库               |\n| 3  | `themes.googleusercontent.com`             | `themes.loli.net`                                                   | ✅    | fonts 资源引用          |\n| 4  | `fonts.gstatic.com`                        | `fonts.googleapis.cn`                                               | ✅    | 免费字体库               |\n| 5  | `www.google.com/recaptcha`                 | `www.recaptcha.net/recaptcha`                                       | ✅    | Google 图像验证库        |\n| 6  | `secure.gravatar.com`                      | `gravatar.loli.net`                                                 | ✅    | gravatar 头像         |\n| 7  | `maxcdn.bootstrapcdn.com/bootstrap`        | `lib.baomitu.com/twitter-bootstrap/`                                | ✅    | bootstrap 框架使用的 CDN |\n| 8  | `code.jquery.com/jquery-(version)(suffix)` | `https://fastly.jsdelivr.net/npm/jquery@$verson/dist/jquery$suffix` | ✅    | jquery 框架使用的 CDN    |\n| 9  | `cdnjs.cloudflare.com`                     | `cdnjs.loli.net`                                                    | -    | -                   |\n| 10 | `cdn.jsdelivr.net`                         | `fastly.jsdelivr.net`                                               | -    | -                   |\n| 11 | `developers.google.com`                    | `developers.google.cn`                                              | -    | -                   |\n| 12 | `developer.android.com`                    | `developer.android.google.cn`                                       | -    | -                   |\n| 13 | `source.android.com`                       | `source.android.google.cn`                                          | -    | -                   |\n| 14 | `www.gstatic.com`                          | `www.gstatic.cn`                                                    | -    | -                   |\n| 15 | `lh3.googleusercontent.com`                | -                                                                   | -    | -                   |\n| 16 | `cdn.sstatic.net`                          | `sstatic.net`                                                       | -    | -                   |\n\n## 扩展选项页使用简述\n\n1. \u003cstrong\u003e双击扩展图标-自动打开扩展选项配置页面\u003c/strong\u003e\n1. [扩展选项配置页面原理](extension/options_ui/README.md)\n\n## 功能变更记录\n\n-   v3 功能变更记录[`CHANGELOG-v3-x.x.x`](CHANGELOG-v3-x.x.x.md)\n-   v2 功能变更记录[`CHANGELOG-v2-x.x.x`](CHANGELOG-v2-x.x.x.md)\n\n## 效果\n\n安装扩展/插件后访问 \u003chttps://stackoverflow.com/questions\u003e 页面：\n\n![](./screen-sof.png)\n\n第一行是 jquery.min.js 的原始请求\n`https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js`，被拦截并替换，返回的状态码为\n307 Internal Redirect，耗时 26ms。第三行是 jquery.min.js\n被替换后的请求，33kB，耗时 95ms。\n\n下表是各种资源的网络请求对比（以替换后的速度为基准 100%）：\n\n| 资源                       | 来源                             |   尺寸(kB) | 时间(ms) |  速度(B/ms) |      百分比 |\n|--------------------------|--------------------------------|---------:|-------:|----------:|---------:|\n| jquery.min.js            | ajax.googleapis.com            |        0 |     26 |         - |        - |\n| stub.en.js               | cdn.sstatic.net                |     18.0 |    293 |      61.4 |      18% |\n| **jquery.min.js**        | **ajax.loli.net** ⚡️           | **33.1** | **95** | **348.4** | **100%** |\n| clc.min.js               | cdn.sstatic.net                |      4.2 |    399 |      10.5 |      30% |\n| full.en.js               | cdn.sstatic.net                |     99.6 |    534 |     186.5 |      54% |\n| gpt.js                   | securepubads.g.doubleclick.net |     21.3 |     85 |     250.6 |      72% |\n| analytics.js             | google-analytics.com           |     19.6 |     79 |     248.1 |      71% |\n| quant.js                 | secure.quantserve.com          |      9.1 |    420 |      21.7 |      62% |\n| beacon.js                | sb.scorecardresearch.com       |      1.8 |     73 |      24.7 |      71% |\n| integrator.js            | adservice.google.com 🐌        |      0.3 |     87 |       3.4 |       1% |\n| markup.js                | clc.stackoverflow.com 🐌       |      9.2 |    252 |      36.5 |      10% |\n| osd.js                   | googletagservices.com          |     28.1 |     90 |     312.2 |      89% |\n| rules-p-c1rF4kxgLUzNc.js | rules.quantcount.com 🐌        |      0.4 |     96 |       4.2 |       1% |\n| keyboard-shortcuts.en.js | cdn.sstatic.net                |      7.3 |     75 |      97.3 |    27.9% |\n\n## 打包命令\n\n构建打包结果位于 dist 目录。\n\n打包 V2 版本\n\n```bash\nbash release-archive.sh\n```\n\n打包 V3 版本\n\n```bash\nbash release-archive-v3.sh\n```\n\n## 安装\n\n### 在线安装\n\n-   [Chrome](https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice)\n-   [Firefox](https://addons.mozilla.org/zh-CN/firefox/addon/google-cdn-replace/)\n-   [Edge](https://microsoftedge.microsoft.com/addons/detail/replace-google-cdn/cojepngjobmaiajphkijbdcdjnnjhpjc)\n\n### 手动安装：\n\nChrome 安装方法（Google 被墙了上不去）：\n\n1. 下载\n   [ReplaceGoogleCDN](https://github.com/justjavac/ReplaceGoogleCDN/archive/master.zip)\n   然后解压， 找到 `extension` 子目录\n1. 打开 Chrome，输入: `chrome://extensions/`\n1. 勾选 Developer Mode\n1. 选择 Load unpacked extension... 然后定位到刚才解压的文件夹里面的 extension\n   目录，确定\n1. 这就安装好了，去掉 Developer Mode 勾选。\n\n### 扩展下载方式三(来自国内镜像)\n\n克隆源代码以后，步骤如上：:point_up_2: :point_up_2: :point_up_2:\n\n1. [ReplaceGoogleCDN gitee 镜像](https://gitee.com/mirrors/replacegooglecdn)\n1. [ReplaceGoogleCDN gitcode 镜像](https://gitcode.com/mirrors/justjavac/replacegooglecdn.git)\n\n```bash\n# 克隆源代码\ngit clone -b master https://gitee.com/mirrors/replacegooglecdn.git --depth=1 --progress\n\n# 或者\ngit clone -b master https://gitcode.com/mirrors/justjavac/replacegooglecdn.git --depth=1 --progress\n\n# 更新源代码\ngit -C replacegooglecdn pull --depth=1 --progress --rebase\n```\n\n### 扩展下载方式四\n\n已经构建好，可以上传扩展市场的代码。\n\n1. [ReplaceGoogleCDN-v3.zip（release v3 版本）支持 chromium 系列浏览器](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v3.zip)\n1. [ReplaceGoogleCDN-v2.zip（release v2 版本）同时支持 firefox 和 chromium 系列浏览器](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v2.zip)\n1. [ReplaceGoogleCDN.zip（全部源码）](https://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN.zip)\n\n#### 构建原理\n\n```bash\n# 原理： github: page + action\n\n# 构建脚本\nhttps://github.com/jingjingxyk/jingjingxyk.github.io/blob/main/tools/setup-gh-pages-step-02-chromium-extension.sh\n\n# 源代码打包下载地址\nhttps://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN.zip\n\n# 已经构建好扩展包下载地址\nhttps://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v2.zip\nhttps://www.jingjingxyk.com/chromium-extension/ReplaceGoogleCDN-v3.zip\n```\n\n## 文档\n\n-   [declarative_net_reques 规则配置示例](extension/rules/README.md)\n-   [测试用例](test/README.md)\n-   [公共 CDN 静态资源库](public-cdn.md)\n-   [网络拨测工具 (测试 公共 CDN 静态资源库 区域可用性)](tools/net-detect.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustjavac%2FReplaceGoogleCDN","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustjavac%2FReplaceGoogleCDN","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustjavac%2FReplaceGoogleCDN/lists"}