{"id":13623650,"url":"https://github.com/jiacai2050/gooreplacer","last_synced_at":"2026-07-12T17:30:17.627Z","repository":{"id":20941714,"uuid":"24230088","full_name":"jiacai2050/gooreplacer","owner":"jiacai2050","description":"⚡️⚡️A browser extension to modify HTTP requests :-)","archived":true,"fork":false,"pushed_at":"2022-12-04T10:24:36.000Z","size":5780,"stargazers_count":1251,"open_issues_count":6,"forks_count":177,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-02-09T16:14:20.863Z","etag":null,"topics":["antd","chrome","chrome-extension","clojurescript","edge","edge-extension","firefox","firefox-addon","javascript","reagent","redirect-urls","redirects"],"latest_commit_sha":null,"homepage":"https://jiacai2050.github.io/gooreplacer/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiacai2050.png","metadata":{"files":{"readme":"README-en.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-19T13:06:50.000Z","updated_at":"2025-02-07T12:31:05.000Z","dependencies_parsed_at":"2023-01-12T03:31:06.623Z","dependency_job_id":null,"html_url":"https://github.com/jiacai2050/gooreplacer","commit_stats":null,"previous_names":["jiacai2050/gooreplacer4chrome"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiacai2050%2Fgooreplacer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiacai2050%2Fgooreplacer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiacai2050%2Fgooreplacer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiacai2050%2Fgooreplacer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiacai2050","download_url":"https://codeload.github.com/jiacai2050/gooreplacer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240560544,"owners_count":19820904,"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":["antd","chrome","chrome-extension","clojurescript","edge","edge-extension","firefox","firefox-addon","javascript","reagent","redirect-urls","redirects"],"created_at":"2024-08-01T21:01:34.187Z","updated_at":"2026-07-12T17:30:17.545Z","avatar_url":"https://github.com/jiacai2050.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\n## [gooreplacer](http://liujiacai.net/gooreplacer)\n\u003e A browser extension to modify HTTP requests :-)\n\nAt first, Gooreplacer is created for redirecting Google Ajaxs/APIs/Fonts to other CDN to bypass [Great Firewall](https://en.wikipedia.org/wiki/Great_Firewall), since pages referring those are slow as molasses.\n\nNowadays, more features have been added to gooreplacer, mainly:\n\n1. Block request\n2. Modify headers\n3. Export/Import rules, sync between Firefox/Chrome/Edge...\n4. Live Test\n5. i18n\n\nMost users prefer gooreplacer than other similar extensions, [HTTPS Everywhere](https://www.eff.org/https-everywhere)/[Redirector](http://einaregilsson.com/redirector/), for ease-of-use. Why not give it a try?\n\n## Install\n\n| Browser| Rate | User |\n|---|---|---|\n| [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/jnlkjeecojckkigmchmfoigphmgkgbip.svg?style=plastic)](https://chrome.google.com/webstore/detail/gooreplacer/jnlkjeecojckkigmchmfoigphmgkgbip) | [![Chrome Web Store](https://img.shields.io/chrome-web-store/rating/jnlkjeecojckkigmchmfoigphmgkgbip.svg?style=plastic)](https://chrome.google.com/webstore/detail/gooreplacer/jnlkjeecojckkigmchmfoigphmgkgbip) | [![Chrome Web Store](https://img.shields.io/chrome-web-store/users/jnlkjeecojckkigmchmfoigphmgkgbip.svg?style=plastic)](https://chrome.google.com/webstore/detail/gooreplacer/jnlkjeecojckkigmchmfoigphmgkgbip) |\n| [![Mozilla Add-on](https://img.shields.io/amo/v/gooreplacer.svg?style=plastic)](https://addons.mozilla.org/firefox/addon/gooreplacer/) | [![Mozilla Add-on](https://img.shields.io/amo/rating/gooreplacer.svg?style=plastic)](https://addons.mozilla.org/firefox/addon/gooreplacer/) | [![Mozilla Add-on](https://img.shields.io/amo/users/gooreplacer.svg?style=plastic)](https://addons.mozilla.org/firefox/addon/gooreplacer/) |\n| [![Microsoft Edge](https://img.shields.io/badge/dynamic/json?label=edge%20add-on\u0026prefix=v\u0026query=%24.version\u0026url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fcidbonnpjopamnhfjdgfcmjmlmehjnej)](https://microsoftedge.microsoft.com/addons/detail/gooreplacer/cidbonnpjopamnhfjdgfcmjmlmehjnej) | [![Microsoft Edge](https://img.shields.io/badge/dynamic/json?label=rating\u0026suffix=/5\u0026query=%24.averageRating\u0026url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fcidbonnpjopamnhfjdgfcmjmlmehjnej)](https://microsoftedge.microsoft.com/addons/detail/gooreplacer/cidbonnpjopamnhfjdgfcmjmlmehjnej) |  |\n\n## Guides\n\nCurrently gooreplacer support 4 functions. Take one exported rules as example:\n\n```\n{\n  \"createBy\": \"https://github.com/jiacai2050/gooreplacer\",\n  \"version\": \"2.0\",\n  \"createAt\": \"Sun Oct 29 2017 19:55:32 GMT+0800 (CST)\",\n  \"redirect-rules\": [\n    {\n      \"src\": \"ajax.googleapis.com\",\n      \"dst\": \"ajax.proxy.ustclug.org\",\n      \"kind\": \"wildcard\",\n      \"enable\": true\n    }\n  ],\n  \"cancel-rules\": [\n    {\n      \"src\": \"facebook.com\",\n      \"kind\": \"wildcard\",\n      \"enable\": true\n    }\n  ],\n  \"request-headers\": [\n    {\n      \"src\": \"google.com\",\n      \"kind\": \"wildcard\",\n      \"name\": \"user-agent\",\n      \"value\": \"gooreplacer\",\n      \"op\": \"modify\",\n      \"enable\": true\n    }\n  ],\n  \"response-headers\": [\n    {\n      \"src\": \"google.com\",\n      \"kind\": \"wildcard\",\n      \"name\": \"Cookie\",\n      \"op\": \"cancel\",\n      \"enable\": true\n    }\n  ]\n}\n```\n\n- `redirect-rules` used for redirects\n- `cancel-rules` used for blocks\n- `request-headers` used for modify/cancel http request headers\n- `response-headers` used for modify/cancel http response headers\n\nIn each rule,\n\n- `src` limit which request it will work on, and it has two types: wildcard and regexp, which is defined in `kind` key.\n- `dst` only required in redirects, means destination\n- `enable` turn on/off\n- `op` required in `request-headers` `response-headers`, has two enum value: `cancel` or `modify`\n- `name`, `value` required in `request-headers` `response-headers`, means header name(case-insensitive), header value\n\nIn redirects, you can use `$1` `$2` ... to backreference captured groups in case of `regexp` kind. For example:\n\n```\n{\n  \"src\": \"https://search.yahoo.com/search\\?p=([a-z]+)\",\n  \"dst\": \"https://www.google.com/search?q=$1\",\n  \"kind\": \"regexp\",\n  \"enable\": true\n}\n```\n\nThen https://search.yahoo.com/search?p=gooreplacer will redirect to https://www.google.com/search?q=gooreplacer\n\nIf your rules don't work as expected, use sandbox to test, it can tell what's missing.\n\n## NOTE\n\n- In order to be compatiable with old versions, `redirect-rules` key in JSON-rules file can be just `rules` and have following format:\n\n  ```\n  \"rules\": {\n    \"ajax.googleapis.com\": {\n      \"dstURL\": \"ajax.proxy.ustclug.org\",\n      \"enable\": true,\n      \"kind\": \"wildcard\"\n    }\n  }\n  ```\n\n- According to [Google Extension document](https://developer.chrome.com/extensions/webRequest)，headers below can't be modified:\n\n    - Authorization\n    - Cache-Control\n    - Connection\n    - Content-Length\n    - Host\n    - If-Modified-Since\n    - If-None-Match\n    - If-Range\n    - Partial-Data\n    - Pragma\n    - Proxy-Authorization\n    - Proxy-Connection\n    - Transfer-Encoding\n\n\n## Development\n\nGooreplacer is written in pure JavaScript before v1.0, you can check this version at [legacy-js-src](legacy-js-src).\nAfter v2.0, gooreplacer get a big rewrite in [ClojureScript](https://github.com/clojure/clojurescript) + [Reagent](https://github.com/reagent-project/reagent) + [Antd](https://ant.design/) + [React-Bootstrap](https://react-bootstrap.github.io/)，which is resident in [cljs-src](cljs-src)。\n\n\n## License\n\n[MIT License](http://liujiacai.net/license/MIT.html?year=2015) © Jiacai Liu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiacai2050%2Fgooreplacer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiacai2050%2Fgooreplacer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiacai2050%2Fgooreplacer/lists"}