GeoIP is a technology gaining in popularity, simply put it attaches a geographical location to a user, based on their IP address. Depending on the service you use and the users geographical location this data could range from simply the user’s country, to granular detail like which neighbourhood in which city. MaxMind is currently the leader in GeoIP information, providing both free and commercial databases. Other popular providers include: IP2Location and InfoSniper.
You can check to see how your IP geo locates with this test.
Websites are using GeoIP information to customize all manner of services to their end users. Google selects the correct local version (google.com vs google.co.uk), Amazon may offer a more appropriate local store, Hulu refuses to display content to users not within the United States. More commonly merchants use a user’s location to select pricing points, display currency, or the most appropriate billing system.
Testing these systems presents a challenge, especially when multiple systems are involved (you may control your site, but your billing service might be independently run). A common technique for testing these systems is to force the system to accept your location as being elsewhere (e.g. example.org?ip=127.0.0.1). The inherent problem is that systems you interact with will ignore your hacks, and you’re left with a difficult problem when you move to production: you either lose the ability to test the GeoIP in production, or leave these hacks enabled (while you can attach these hacks to specific IPs to only allow them to work from your office, you’ve now added two additional layers on top of your codebase, that need to be maintained and bug free).
Proxies can help. By using a proxy server you’re able to route all of your web traffic through a specific location, you appear to both your application and whatever systems it interacts with to be there. At WonderProxy we’ve got over 35 servers in over 25 countries, perfect for GeoIP application testing, without the hacks.
There are limitations to this however, as systems that use Flash will detect the users original IP (as flash generally ignores proxy settings). In those environments a VPN is needed. More on those later…