I know similar questions have been asked many times, but I can't find a clear explanation relevant to my case. I use my http proxy installed on my server to access google and it can figure out where I really am, not impressive. Then I set my proxy forwarding to Tor. After signing out google account and clear cookies, google can no longer know where I'm. But if I use Foxyproxy to proxy only google* (this including googleusercontent, google-analytic etc), gstatic, and some youtube related google domains, google can magically find out my real location, not exactly the place but very close to. I inspected requests sent to google in firefox console network tab, nothing unusual. There are only www.google.com, apis.google.com, www.gstatic.com and ipv4.google.com. There should all go through my proxy too. Besides most google services are blocked here and I couldn't possibly visit google without proxy. This difference indicates it could not directly be an issue of geolocation, or wifi hotspot(in this case). There must be something else that hides within the web browser to servers, what is it then?
[EDIT] Additional information:
[ifoolb@server ~]$ nc 0.0.0.0 1080 -l
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept-Encoding: gzip, deflate
Via: 1.1 fool (squid/3.3.8)
I just knew that, I have disabled it already. The only thing google knows should just be that someone is using squid. I actually use squid->privoxy->Tor.
I've figured out a bit. It's not relevant to foxyproxy, it probably is because of some youtube cookies that make google know my location, as I only deleted all google and gmail cookies. Also the firefox browser must be sending something to google. After clearing all cookies and cache google still displays the .com English site, and the location information at the bottom of the page is 'unknown'. If I switch to private browsing mode, google finally jumps to local site related to the current ip address. Other than cookies and cache, I don't know any additional entities that can be used for identification. I don't set any site specific preference either so the language preference should be identical in both normal mode and private mode. So there is still something strange.