node-unblocker

Internet censorship is the control or suppression of what can be accessed or published on the internet based on regulations or on their own initiative. Organizations or individuals face this censorship for publishing contents that violate the regulations. Node-blocker is a web proxy for dodging this internet censorship and general-purpose Node.js library for proxying and rewriting remote webpages. It is one of the fastest web proxies available. There are many web proxies such as CGIProxy, PHProxy or Glype that allow you to avoid internet censorship. It is written using JavaScript and Node.js. node-unblocker processes data on the fly rather than buffering it. The URL’s are modified only when it's necessary. It uses “pretty” urls which allows links with relative paths to work without modification. Links relative to the root are handled by checking referrer and 307 redirect them to the right location in the referring site. Cookies are proxied by changing their path to include the proxy’s URL. Some limitations are also present. OAuth login forms and websites that use postMessage don't work as expected. You need Node.js 4.3 or above to run this on your computer. You can download node-unblocker from github and cd into examples/nodeunblocker.com directory and run npm install. Then run the npm start command. 

To run website on heroku/ bluemix/ modulus etc

Without any modification the project should be runnable. Copy examples/nodeunblocker.com directory to the new git repo and push it. 

To use unblocker as a library in your software.

npm install --save unblocker
Unblocker exports an express-compatible API, so using in an express application is trivial:
var express = require('express')
var Unblocker = require('unblocker');
var app = express();

// this must be one of the first app.use() calls and must not be on a subdirectory to work properly
app.use(new Unblocker({prefix: '/proxy/'}));

app.get('/', function(req, res) {
    //...
});