How does Google Maps know where I am, when I'm using a VPN?
How does Google Maps determine my location?
I've gotten some understanding of Google Maps' geolocation methods from here: http://friendlybit.com/js/geolocation-and-google-maps/
In the newer browsers (all but IE6, IE7, or IE8) may ask you for your positioning information from the browser. It usually shows up as a bar at the top of the browser. The browser then gathers two specific forms of positioning information from your computer: your IP address and the signal strength of any wireless network near you. That information is then sent, if you approve it, to Google, which returns the coordinates you are at the moment.
If your wireless reciever is turned off, or you’re at a stationary computer, all calculations are based on the IP number. These kind of lookups are quite arbitrary and inaccurate, I just get to the nearest big city when trying to use it over a non-wireless line. But mobile connections are slowly taking over landlines, so I guess this problem will solve itself automatically.
According to this article, Google only uses my IP address if I am using a desktop. However, when I use a VPN to go online (and I can confirm that another IP geolocation service shows me as being on another continent), Google Maps is still able to accurately show my location. How does this work?
change your router.. google obtained the mac of your router, when making google maps. I changed my router after it died, and I no longer appear.
Also if you are on IPv6 most likely the VPN service will not cover all your traffics. It happened to me with ipvanish. Google stopped to see my real location only when I turned off IPv6 on my browser. Read also: http://blog.dave.io/2011/06/vpn-ipv6-privacy/
If you consent, Firefox gathers information about nearby wireless access points and your computer’s IP address. Then Firefox sends this information to the default geolocation service provider...
Firefox knows the IP address, which is used to connect to the VPN provider. Many geolocation services, however, only look at the IP address they see from the server side.
By the way: With java installed, a website can read the local ip-address without asking for permission.
new Socket("http://example.com", 80)).getLocalAddress().getHostAddress()
example.com needs to be replaced with the name website to obey the same origin policy.
I suspect this has less to do with "your computer's IP address" and more to do with nearby wireless access points (that Google has an inventory of). My local machine's IP address is of no use unless I'm using a public IP address. If I'm using any RFC1918 address, and I'm tunneling my traffic through a VPN then IP address is not the information giving up my location.
I also suspect, google being google, they could be using a number of heuristics to 'guess' location. I have noticed google reporting incorrect location information when using a desktop with a wired connection. I'm in a rural location and google will often report me as being in the nearest large metropolitan location. My guess is that if you live in a major city, google's guesswork/voodoo will frequently be correct, but if your in a regional/remote locaiton, more often than not, it will be incorrect unless your using a device with geo-loc facilities.
I edited out the second half of your answer because it is no longer correct. First, Java applets have to be manually enabled. Second, by default, Java requires permission to be ran in the browser. You can of course grant such permission indefinitely; however, I can only conceive a negligible number of scenarios in which one who would use a VPN would do that. Third, applets are very rare nowadays. The decline in prevalence will only continue. Fourth, it does not answer the question since this question is specifically about Google's practices. Google Maps has never employed applets.