Ask HN: Building a web circumventor or proxy server
Dear HN Community:
My government blocks all the political or barely political websites (eg gmail.com) in my country. I am in US right now and would like to build a web circumventor or proxy server to help those in the country. I know there are already lots of proxy servers, but most of them are banned too. Plus i want to learn how to do this myself. If you have advice or resources (eg books/tutorials/code) on how to build a great proxy server, please let me know.
(I am thinking about implementing it on the Google App Engine Server (Python))
Thanks, Max
6 comments
[ 4.4 ms ] story [ 24.7 ms ] threadWhat worked for me, I put-up a website in the US. I did use PHP at the time and used curl to scrape content from banned sites and serve it from the website.
I removed possibly offensive words and presto! Obviously this does not scale well. If you have more problems you can use a ridiculously simple encryption scheme, by swapping all English characters to Armenian and converting back to English at the receiving end via Javascript! (I would not encrypt fully as it might trigger filters of a worse kind).
OpenVPN: use it for what it's made for.
SSH: use the "-D" socks5 feature.
HTTPS: use CGIProxy hosted behind a password wall, http://www.jmarshall.com/tools/cgiproxy/
And sure, also try putting up an http proxy server but those are often banned via applevel protocol matching, right? The HTTPS option above can only be stopped if you are A) blocked to your IP or B) not allowed to do any HTTPS at all.
Whilst that might be slightly weird advice it's probably the best. As an individual you could spend hours a week providing and maintaining ways to bypass the blocks - but there is no way you will win if the Govt. is actively blocking new "leaks".
They probably have more manpower and access to ISP's at the highest level.
On the other hand look at Iran: despite govt. blocks the channers and other groups successfully provided routes out to the rest of the world entirely by virtue of numbers. There were so many accessible proxies and services it was an impossible task to block them.
The Internet is a bigger "country" than many real countries: that's your greatest weapon.
This could be a valuable resource, too, although it might not cover setting up a large proxy server, it shows quite a few ways to reach that goal.
http://code.google.com/appengine/docs/python/tools/devserver...
Using URL Fetch
When your application uses the URL fetch API to make an HTTP request, the development web server makes the request directly from your computer. The behavior may differ from when your application runs on App Engine if you use a proxy server for accessing websites.