Setup your own Proxy Server in 5 Minutes for Free

Google Proxy

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.

1_create_app_engine_account 2_verify_mobile 3_authenticate 4_create_application
install_python install_app_engine_sdk sdk_preferences

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.

add_proxy_application edit_app_id deploy_proxy_server

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 mirror site. 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: , , , , 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!

Is it also possible to install flash on the proxy to stream video?

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.

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?

Great article! I just hope there’s a way to support Flash so people outside US can watch Hulu and such. Any ideas?

Is the proxy code standard? For example, can someone upload their code so I don’t have to install python etc?

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?

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 !?

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.

is anyone having any luck using a site that requires login? (gmail, facebook etc) through this interface?

This is great! Is there any way to configure it so that it allows YouTube, Vimeo and other flash video sites to work?

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 ***

Is there anyway that I can do this on Mac OS X?

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.

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?

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.

Would this work to bypass sites like hulu.com ?

Anyway to do this and that I can still use flash?

App Engine Error

Over Quota
This Google App Engine application is temporarily over its serving quota. Please try again later.

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?

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!

Does the change to the main.html file require re-deployment? I don’t see my changes when I refresh the page.

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.

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?

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,

how do i change the coding of the proxy app so that it encodes the url

Not bad tips to create web proxy server. but there is more easy steps available on internet to create your own proxy server…

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

proxy itself is pretty useless, but thanks for the tutorial on appspot.

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?

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

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!

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.

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…

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.

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.

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.

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.

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

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.

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

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.

Please do not add HTML tags in your comments. All comments are moderated.

Add a Comment

required, use real name
required, will not be published
optional, will not be published
Google Custom Search