A simple Google search and you’ll find dozens of really good PHP scripts on the Internet to help you create proxy servers in minutes for free. The only limitation with PHP based proxies is that you require a web server to host the proxy scripts and second, you also need a domain name to act as an address for your proxy site.
If you don’t own a domain or server space, you can still create a personal proxy server for free and that too without requiring any technical knowledge.
Create a Free Proxy Server with Google App Engine
Here’s one such proxy site that you can build for your friends in China or even for your personal use (say for accessing blocked sites from office). This is created using Google App Engine and, contrary to what you assume, the process is quite simple.
Step 1: Go to appengine.google.com and sign-in using your Google Account.
Step 2: Click the “Create an Application” button. Since this is your first time, Google will send a verification code via SMS to your mobile phone number. Type the code and you’re all set to create apps with Google App Engine.
Step 3: Choose a sub-domain* that will host your proxy server. Make sure the domain is available, agree to the Google Terms and click save. The sub-domain is also your App ID that will uniquely identify your proxy application.
For this example, we’ll use labnol-proxy-server as the App ID though you are free to choose any other unique name.
Step 4: OK, now that we have reserved the ID, it’s time to create and upload the proxy server application to Google App Engine. Go to python.org, download the 2.6.4 MSI Installer and install Python.
Step 5: Once Python is installed, go to code.google.com, download the Google App Engine SDK for Python and install it.
Step 6: Download this zip file and extract it to some folder on your desktop. The zip file, for the curious, contains a couple of text files (written in HTML and Python) that you can read with notepad.
Step 7: Start the Google App Engine Launcher program from the desktop and set the right values under Edit –> Preferences (see screenshot above).
Step 8. Click File –> Add Existing Application under the Google App Launcher program and browse to the directory that you created in Step 6. Click the Edit button and replace “YOUR_APP_ID” with the ID (sub-domain) that you reserved in Step 3.
Step 9: Click Deploy and your online proxy server is now ready for use. You can experience it live and if any of the steps don’t make sense, please refer to the following video screencast (available in 720p HD).
You can edit the main.html file to change the appearance of your proxy server and you can even add Analytics and AdSense code to your proxy server in case it gets popular on the web. The application is currently open to all users but you can add a layer of authentication so that only users who are logged-in into their Google Accounts can use your web proxy server.
If you have made any changes to your HTML files, you can upload the latest version to Google App Engine either by clicking the “Deploy” button again or use the following command -- appcfg.py update <app-directory>
Credits: The proxy server uses code from Mirrorr, an open-source web caching project by Brett Slatkin. Thanks Pratham for your help!
Update: To answer some of your questions:
- This proxy works with Flash videos (like YouTube and ABC News) though not with Hulu.
- If you are getting the “quota exceed” error, try this
mirrorsite. Update: This has been removed since the App Engine TOS does not allow you to split your app across multiple accounts to make use of the free quotas. So technically, the mirror of the proxy is in violation of the TOS. - As some of you have suggestions, domain with the word “proxy” or “proxies” are banned at workplaces so you may include them in your proxy address.
- Though there exist proxy servers for accessing secure sites, this is a basic proxy server that won’t work with sites that require logins (eg, Gmail or Hotmail).
Also see: How to Write Facebook Apps in 5 Minutes
Find this article at: http://www.labnol.org/internet/setup-proxy-server/12890/
Tags: Archives, google app engine, Most Popular, proxy, Internet
Reader Comments
Too bad it doesn’t appear to work for sites that have flash video (e.g. Hulu). That would be great for internationally constrained consumers!
Written by Media Dude on 03.03.10
Is it also possible to install flash on the proxy to stream video?
Written by Rob on 03.03.10
could this proxy be used for programs outside of webpages?
only reason I ask is that windows live sync is blocked at my work for some reason and I would love to have a proxy to use to get around that block.
Written by randall on 03.03.10
I haven’t received a text from Google. Using Verizon in the US. I checked the number and sent it twice :(.
So is it working for anyone else? If so, how good is it?
Written by Daniel on 03.03.10
Great article! I just hope there’s a way to support Flash so people outside US can watch Hulu and such. Any ideas?
Written by Syng on 03.03.10
Is the proxy code standard? For example, can someone upload their code so I don’t have to install python etc?
Written by rm on 03.03.10
Very handy to have given Australia’s upcoming stupid waste of time Web Filter.
I wonder if this will allow me to watch Hulu too?
Written by StevoTheDevo on 03.03.10
So it uses a cache version of a website that renders the use of a site like Hulu.com not possible.
Is there a way to do it so Hulu could work for a Canadian guy !?
Written by Marc on 03.03.10
doesnt work very well. I tried google maps and it didnt work. I tried a page with javascript…didnt work either. Of course https didnt work but i expected that.
When it does work its the fastest proxy i’ve ever seen though :)
thanks.
Written by guillermo on 03.03.10
is anyone having any luck using a site that requires login? (gmail, facebook etc) through this interface?
Written by rm on 03.03.10
This is great! Is there any way to configure it so that it allows YouTube, Vimeo and other flash video sites to work?
Written by Jason on 03.03.10
AWESOME hint, and very well-explained. Just finished all the steps and my new proxy seems to be 100% operational. Only one small message in the log when I deployed the app—could someone translate into non-programmer speak?
Checking if new version is ready to serve.
Closing update: new version is ready to start serving.
Uploading index definitions.
Error 400: — begin server output —
Creating a composite index failed: This index:
entity_type: “EntryPoint”
ancestor: false
Property {
name: “last_updated”
direction: 2
}
is not necessary, since single-property indices are built in. Please remove it from your index file and upgrade to the latest version of the SDK, if you haven’t already.
— end server output —
Your app was updated, but there was an error updating your indexes. Please retry later with appcfg.py update_indexes.
Password for —–ATgmailDOTcom: If deploy fails you might need to ‘rollback’ manually.
The “Make Symlinks…” menu option can help with command-line work.
*** appcfg.py has finished with exit code 0 ***
Written by Joe Kristoffer on 03.03.10
Is there anyway that I can do this on Mac OS X?
Written by Sebastian on 03.03.10
Great article! Do you know where the IP location of this is, or could that change around randomly? One great use is watching something like the olympics on the west coast, where an east coast IP is needed to see it live.
Written by alex on 03.03.10
How can the details of the resulting site be edited? I tried editing the HTML for the main.html file, but when i deployed it, the site just displayed the actual code in plaintext. Help?
Written by Matt on 03.03.10
I get this when trying to deploy:
Your app was updated, but there was an error updating your indexes. Please retry later with appcfg.py update_indexes.
Written by Dtamez on 03.03.10
Would this work to bypass sites like hulu.com ?
Written by Janis on 03.03.10
Anyway to do this and that I can still use flash?
Written by FlimtotheFlam on 03.03.10
App Engine Error
Over Quota
This Google App Engine application is temporarily over its serving quota. Please try again later.
Written by Vyas on 03.03.10
This is worthless! The proxy server doesn’t allow you to sign into Hotmail, Yahoo, Facebook, or even gmail! You can get to the signin page, but no further.
What good is a proxy that doesn’t let you actually used the things that were blocked?
Written by mt on 03.03.10
Dude, you totally rock! This is the coolest idea you’ve written about since us how to create multiple twitter accounts using one gmail account.
Thanks and keep up the excellent job you’re doing!
Written by John Bates on 03.03.10
Does the change to the main.html file require re-deployment? I don’t see my changes when I refresh the page.
Written by Tim Pettus on 03.03.10
Great post. One question: how do you deploy the revised main.html file? I modified it and redeployed the app via the GA Engine Launcher, but the online proxy server page did not change.
Written by Kent on 03.03.10
Quick question.
Is there a way to use this proxy in Firefox proxy settings or can you only use it as a web based portal?
Written by Gumby on 03.03.10
Hi Amit,
Good Post, i will try this out
I was in office when i read this ( To view Blocked sites from office ) but i got :
Access to this URL is currently restricted due to a blocking rule.
URL: link
Rule: Block URLs of type Administrator-defined
It seems if i search anything about “Proxy” i got this message. I will try to replace the word proxy in ” labnol-proxy-server ” and let see if that works or not.
Regards,
Written by Saurabh on 03.03.10
how do i change the coding of the proxy app so that it encodes the url
Written by Andrew on 03.03.10
Not bad tips to create web proxy server. but there is more easy steps available on internet to create your own proxy server…
Written by Ravindra on 03.03.10
can you show us how to install ssl module? i keep getting this error “ssl module not found. Without the ssl module, the identity of the remote host cannot be verified, and connections may NOT be secure. To fix this, please install the ssl module from link ” i have no idea how to do this, thanks
Written by quan on 03.03.10
proxy itself is pretty useless, but thanks for the tutorial on appspot.
Written by bwillb on 03.04.10
One little question: If I am inside GFW(China’s Great Firewall), will it be possible to set up a proxy myself?
Or, the above method is for those who’s currently outside GFW?
Written by killua on 03.04.10
I’m getting this error:
running appfg.py with the following flags:
–no_cookies –email=____@gmail.com –passin update
If deploy fails you might need to ‘rollback’ manually.
The “Make Symlinks…” menu option can help with command-line work.
If deploy fails you might need to ‘rollback’ manually.
The “Make Symlinks…” menu option can help with command-line work.
And it keeps repeating every second. Working on mac, but I think I filled everything out correctly.
Thanks
Written by hugoyles on 03.04.10
How about a “Set yowp in 15 minutes, including accessing secure sites”? Just a little more work, but sure it’ll worth it!
BTW, great post, thanks a lot!
Written by JuanPa on 03.04.10
Well, this is pretty cool, but it’s mostly useless. The three things I wanted to do, I can’t.
- Can’t log into gmail.
- Can’t watch videos on youtube, due to this error: “Sorry for the interruption. We have been receiving a large volume of requests from your network. To continue with your YouTube experience, please enter the verification code below.” Then it has a captcha, which is pretty much the same thing as logging in… doesn’t work.
- Can’t play flash games.
Thanks for the effort though.
Written by Frank on 03.04.10
I was using “VTunnel” and “CTunnel” to reach blocked web sites. It was a real big mess with advertisements on the background. But this new method is very clean and cool at the same time. No ads, no hassle… Thanks for sharing the wealth of information…
Written by Yohan Perera on 03.04.10
Following error occured::
2010-03-05 00:30:14 Running command: “['C:\\Python31\\python.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\appcfg.py', '--no_cookies', u'--email=sharerbn@gmail.com', '--passin', 'update', 'C:\\Users\\erbn.net\\Desktop\\proxy']”
Traceback (most recent call last):
File “C:\Program Files (x86)\Google\google_appengine\appcfg.py”, line 68, in
run_file(__file__, globals())
File “C:\Program Files (x86)\Google\google_appengine\appcfg.py”, line 64, in run_file
execfile(script_path, globals_)
NameError: global name ‘execfile’ is not defined
2010-03-05 00:30:14 (Process exited with code 1)
You can close this window now.
Written by rbn on 03.04.10
Nice way to get yourself fired! Especially if I catch you trying to use this on my network. We block proxies to keep people from downloading malware, visiting porn sites and bootlegging software. Not a wise choice since most companies will lock things down even tighter when they find this stuff going on.
Written by Yosimite Sam on 03.04.10
Good luck with that, Yosemite . I should hope your company employs people who know how to avoid malware by themselves. Most people want some fairly to extremely harmless activities, which are blocked by overdone blockers. If your blocker is stopping emails, you’re not blocking porn or bootlegs, you’re blocking email. That’s why this is great. You can finally read your email.
Also, I’m also interested in a URL scrambler.
Written by Eggbert on 03.04.10
I have a question. Why I don’t see my ip adress?. I see an american ip adress, and I’m in Peru. I think my machine is working to redirect other proxy.
Written by Marco on 03.04.10
I love the way IT thinks their God, in some countries website blocking is against a worker’s personal rights, and is an actionable offence. The US system treats workers like children blocking everything and putting people in cubes, an idea that doesn’t happen in many countries. If you do your job, and don’t pass deadlines (real not imaginary ones) then you should be able to view most sites without hassle (The Google Philosophy anyone?). Oh and the webmasters conveniently leave their tech sites unblocked? What do you all watch while waiting for the outlook email call? Best Wishes
Written by Anonymous on 03.04.10
Thank you for the instructions.
I tried all the steps a couple of times and right after pressing the deploy button I get several errors and the DOS session window (python?) closes.
A quick list of the errors where I’ve substituted actual directories with [path], etc. There are no spelling errors in the settings.
2010-03-04 19:15:48 Running command: “['[path]python.exe’, ‘[path]\appcfg.py’, ‘–no_cookies’, u’–email=[email]‘, ‘–passin’, ‘update’, u’[path]\[myserver]‘]”
[path]\appcfg.py:41: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
os.path.join(DIR_PATH, ‘lib’, ‘antlr3′),
[path]\dev_appserver_login.py:33: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
Error parsing yaml file:
Unable to assign value ‘[myserver].appspot.com’ to attribute ‘application’:
Value ‘[myserver].appspot.com’ does not match expression ‘^(?!-)[a-z\d\-]{1,100}$’
in “[path]\app.yaml”, line 1, column 14
2010-03-04 19:15:51 (Process exited with code 1)
You can close this window now.
==
Thank you for any help with this problem.
Written by Nick_M on 03.04.10
At my highschool there are two wifi networks, “Staff wireless” and “visitor wireless.” Visitor wireless only needs a three digit password (sol) to get in. Basically everybody with an ipod touch uses it. Only problem is that 95% of the internet is blocked. I set up one of these to get around that. Problem is it also blocks a url if it contains the name of a banned site. For example, if i try to go to urbandictionary.com through this proxy it takes me to Exampleproxy.appspot.com/urbandictionary.com which is promptly blocked because it contains urbandictionary.com. Is it possible someone could post a variant of the proxy software that scrambles the url? eg. exampleproxy.appspot.com/nvnyheizs934ns
Written by WiFi Freeloader on 03.04.10
UrlFetch service has limitation of quota. Though app-engine python coding is very easy compared to wordpress php coding, we should think twice before misusing Google Infrastructure.
Written by Vicky on 03.04.10