Node Unblocker was firstly a web deputy for escaping internet suppression, analogous to CGI proxy/ PH Proxy/ Glype but written innode.js. It’s since morphed into a general- purpose library for proxying and rewriting remote webpages.
All data is reused and bear to the customer on the cover without gratuitous buffering, making Node Unblocker one of the fastest web delegates available.
The magic part
The script uses” enough” urls which, besides looking enough, allow links with relative paths to just work without revision.(E.g. )
In addition to this, links that are relative to the root(E.g. ) can be handled without revision by checking the referrer and 307 turning them to the proper position in the pertaining point.( Although the deputy does essay to rewrite these links to avoid the deflect.)
Eyefuls are proxied by conforming their path to include the deputy’s URL, and a bit of redundant work is done to insure they remain complete when switching protocols or subdomains.
Although the deputy works well for standard login forms and indeed most AJAX content, OAuth login forms and anything that uses pos tMessage( Google, Facebook,etc.) aren’t likely to work out of the box. This isn’t an invincible issue, but it’s not one that I anticipate to have fixed in the near term.
More advanced websites, similar as Roblox, Discord, YouTube *, Instagram,etc. don’t presently work. At the moment, there’s no timeframe for when these might be supported.
There’s an illustration that detects YouTube videotape runners and replaces them with a custom runner that just streams the videotape.
Patches are welcome, including both general- purpose advancements to go into the main library, and point-specific fixes to go in the exemplifications brochure.
Node Unblocker ” middleware” are small functions that allow you to check and modify requests and responses. The maturity of Node Unblocker internal sense is implimented as middleware, and it’s possible to write custom middleware to compound or replace the erected- in middleware.
Custom middleware should be a function that accepts a single data argument and runs synchronously.
To reuse request and response data, produce a Transform Stream to perform the processing in gobbets and pipe through this sluice.( Example below.)
To respond directly to a request, add a function toconfig .request Middleware that handles the client Response( a standard http. Server Response when used directly, or a Node Unblocker Express Response when used with Express. Once a response is transferred, no farther middleware will be executed for that request.( Example below.)
still, no farther middleware is run, If any piece of middleware sends a response.
After all request Middleware has run, the request is encouraged to the remote garcon with the( potentially modified) url/ heads/ sluice/etc.
response Middleware receives the same data expostulate as the request Middleware, but the heads and sluice fields are replaced with those of the remote garcon’s response, and Node Unblocker several new fields are added for the remote request and response
- Erected- in Middleware utmost of the internal functionality of the deputy is also enforced as middleware
host Corrects the host title in gregarious responses
- referrer Corrects the referrer title in gregarious requests
- eyefuls Fixes the Path trait of set- cookie heads to Node Unblocker limit eyefuls to their” path” on the deputy(e.g. Path = / deputy/ http//example.com/). Also injects redirects to copy eyefuls from between protocols and subdomains on a given sphere.
- hosts Removes Strict- Transport- Security heads because they can blunder to other spots and can break the deputy.
- pip Removes Public-crucial- Cascading heads because they can blunder to other spots and can break the deputy.
- cusp Removes Content- Security- Policy heads because Node Unblocker they can blunder to other spots and can break the deputy.
- redirects Rewrites URLs in 3xx redirects to insure they go through the deputy
decompress Decompresses Content- Garbling grip| deflate responses and also tweaks request heads to ask for either gzip-only or no contraction at all.( It’ll essay to relax deflate content, but there are some issues, so it doesn’t announce support for deflate.)
- charsets Converts the charset of responses to UTF- 8 for safe string processing innode.js. Determines charset from heads or meta markers and rewrites all heads and meta markers in gregarious response.
- URL Prefixes Rewrites URLS of links images CSS/etc. to insure they go through the deputy
- meta Robots Injects a ROBOTS NOINDEX, NOFOLLOW meta label to help hunt machines from crawling the entire web through the deputy.
- content Length Deletes the content- length title on responses if the body was modified.
- Setting the standard Middleware configuration option to false disables all erected- in middleware, allowing you to widely enable, configure, Andre-order the erected- in middleware.