My wife and I recently had a baby. Amongst the toys and cloths we received as gifts, there were a few CDs and DVDs with music for the little one. We then realised that we no longer have a CD or DVD drive in our computers. So we bought an external USB DVD/CD. When playing the DVDs, the region-selection menu appeared. I nearly forgot about it. Oh, the good ol’ copy-protection of the 90’s. So I chalked it up as one of those oddities of life, and thought how silly it seems today in the Internet age and all that. My wife is japanese, and I’m Israeli. And we live in Berlin. Naturally each side of the family wanted to send us Music in their own language, so there you go.
Only a few days later, my wife asked for my help with her Nexus 7. She bought a few eBooks from a Japanese site. Those work fine on her iPhone and Mac. But somehow the Play store won’t install the app (never mind the question why someone needs a bespoke app to read books).
“This item is not available in your country”.
This time I was determined to work around this.
Here’s a quick howto which does not require a rooted android.
Find (or run) a proxy
If you know of a HTTP proxy in the country you want to teleport your android to, then you’re almost good to go. (no. SOCKS isn’t supported on Android. Why?). I didn’t have one in Japan. But I could SSH into a server on AWS or Linode in Japan. I didn’t want to install anything on the remote server, so I used a combination of SSH and a local HTTP proxy. I was running this on my Ubuntu desktop running on ip address 192.168.0.123. Replace this IP with yours.
- Connect to the server and run a SOCKS server locally
ssh -D 192.168.0.123:1080 email@example.com
- Run a local HTTP proxy server that forwards request via the SOCKS proxy. I used privoxy.
sudo apt-get privoxy
- Edit the privoxy configuration (make sure you have those two lines in
forward-socks4a / 192.168.0.123:1080 .
- restart privoxy using
sudo service restart privoxy
Set up the proxy on the android device
Go to the WIFI settings, find the access point you’re connected to, and long-pressed on it. Then choose ‘Modify Network’. When you tick the ‘show advanced options’ box, you can then configure your proxy. (Manual; address: 192.168.0.123 port: 8118)
I’m not entirely sure whether this is required, but I set the android into airplane mode and turned it off. This is the part where you can imagine going into the plane and being asked to switch off all electronic devices for takeoff.
Now imagine you’ve just landed in Japan, and turn the android on again. It should be in airplane mode, so not connected. Then turn wifi on. Yes, it allows you to do so in airplane mode. It should then connect to the wifi and to your proxy. From then on, your android should think it’s wherever you SSH’d into. You can check your ip address by going to ipchicken.com
That’s it. From then on we went to the play store and installed the app without any problems.
Those location-based restrictions are totally silly. I can’t figure out any logical reason to block people from accessing (and paying!) for your apps and content if they happen to be elsewhere. It seems as outdated as the region protection on DVDs. Or even worse. Because we should have learned something by now.