{"id":18665359,"url":"https://github.com/robertklep/node-rewriting-proxy","last_synced_at":"2025-11-06T10:30:42.822Z","repository":{"id":19162292,"uuid":"22394023","full_name":"robertklep/node-rewriting-proxy","owner":"robertklep","description":"A Node.js-based request/response rewriting HTTP proxy","archived":false,"fork":false,"pushed_at":"2015-11-27T12:56:13.000Z","size":17,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-15T02:43:08.356Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/robertklep.png","metadata":{"files":{"readme":"README.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-07-29T20:15:34.000Z","updated_at":"2017-08-09T21:20:17.000Z","dependencies_parsed_at":"2022-09-06T19:10:45.916Z","dependency_job_id":null,"html_url":"https://github.com/robertklep/node-rewriting-proxy","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertklep%2Fnode-rewriting-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertklep%2Fnode-rewriting-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertklep%2Fnode-rewriting-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertklep%2Fnode-rewriting-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertklep","download_url":"https://codeload.github.com/robertklep/node-rewriting-proxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239492675,"owners_count":19647994,"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":[],"created_at":"2024-11-07T08:27:21.211Z","updated_at":"2025-11-06T10:30:42.751Z","avatar_url":"https://github.com/robertklep.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Rewriting HTTP proxy\n\nThis Node.js based HTTP proxy allows you to rewrite HTTP requests and responses based on rules (*if request matches this hostname, block the request*, etc). You can also add/remove/modify content on specific pages.\n\n### Installation\n\nFirst, make sure Node and NPM [are installed](http://nodejs.org/).\n\nNext, install directly from the GitHub repository:\n\n```\n[sudo] npm install robertklep/node-rewriting-proxy -g\n```\n\n`sudo` may or may not be necessary. Try without first, you may already have the right permissions to write to the global installation path.\n\n### Configuration\n\nThe proxy can be configured using XML-based rules files. I know XML is a bother, but there's two reasons for using it:\n\n1. Rules contain properties that aren't (easily) serializable to something like JSON (regular expressions, JS functions);\n2. I initially created this proxy as a replacement for [GlimmerBlocker](http://glimmerblocker.org/), and it should be compatible with the GlimmerBlocker filter format;\n\nBecause of GlimmerBlocker compatibility, most [GB filters](http://glimmerblocker.org/wiki/Filters) will work, although the modifying filters may require some rewriting.\n\nBy default, the proxy looks for rules files in `$HOME/.node-rewriting-proxy/` (all `*.xml` files will be processed).\n\n### Running\n\n```\n$ node-rewriting-proxy -h\n\nUsage: node-rewriting-proxy [options]\n\nOptions:\n   -p PORT, --port PORT                 Port to listen on  [8228]\n   -H HOST, --host HOST                 Host to listen on  [0.0.0.0]\n   -d DIRECTORY, --rule-dir DIRECTORY   Directory where rules files reside  [$HOME/.node-rewriting-proxy]\n   -t URL, --test URL                   Test an url to against the ruleset(s)\n   -l LEVEL, --log-level LEVEL          Log level (\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\")  [warn]\n```\n\nThe proxy server doesn't daemonize (for now).\n\n### Rule format\n\nTBD.\n\nFor now, take a look at [this file](http://glimmerblocker.org/site/filters/default/ad-networks.xml), which is one of the default lists used by GlimmerBlocker. Most rules in there should work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertklep%2Fnode-rewriting-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertklep%2Fnode-rewriting-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertklep%2Fnode-rewriting-proxy/lists"}