Jeśli wolisz korzystać z Google Geocoding API lub innego źródła online, a nie opcji lokalnych, sugeruję zajrzenie do Projektu Tor (łatwo instalowanego przez pakiet o nazwie „Pakiet Vidalia”).
Tor chroni cię, odbijając komunikację wokół rozproszonej sieci przekaźników obsługiwanych przez wolontariuszy na całym świecie: uniemożliwia ... odwiedzanym stronom poznanie twojej fizycznej lokalizacji.
Wraz z wprowadzaniem losowych adresów i używaniem ssl (https) do szyfrowania komunikacji do ich punktów końcowych (upewnij się, że to robisz), nie mogę wymyślić bardziej bezpiecznego sposobu na zdalne geokodowanie. Jakakolwiek usługa geokodowania, której używasz, nigdy nie będzie w stanie określić, skąd ostatecznie pochodzą żądania, a dzięki https nikt inny też tego nie zrobi. Uwaga: nie korzystaj z usługi geokodowania, która wymaga do tego klucza API, w przeciwnym razie nie będziesz już anonimowy. (Google nie wymaga już klucza API).
Dodatkową zaletą tej procedury jest to, że nie będziesz już ograniczany do dowolnej liczby żądań geokodowania, ponieważ Twoje żądania będą wyglądać, jakby pochodziły z wielu adresów IP. Jednak nie polecam ani nie popieram nadużywania tych uroczych bezpłatnych interfejsów API! Szybkość będzie nadal ograniczona, jeśli API ograniczy szybkość (chociaż prędkość transmisji przy użyciu Tora jest nieco wolniejsza niż bezpośrednie połączenie).
Studium przypadku w Pythonie - po zainstalowaniu pakietu Vidalia i uruchomieniu proxy na 127.0.0.1:8118 (domyślnie), w Pythonie 2.7 lub nowszym możesz skonfigurować proxy https urllib2 używając:
import urllib2
proxy = urllib2.ProxyHandler({'https': '127.0.0.1:8118'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
response = urllib2.urlopen("https://maps.google.com/maps/geo?q=Los+Angeles&sensor=false&gl=us")
Zauważ, że serwery proxy urllib2 nie działają z protokołem https, dopóki przynajmniej Python 2.7 lub tak, więc ta metoda działa tylko z najnowszymi wersjami Pythona. Upewnij się, że masz „https” (nie „http”) w obu miejscach w powyższym przykładzie. Testowałem to tylko w Pythonie 2.7.1.
Vidalia zmienia twoją tożsamość / pozorny początek adresu IP co 10 minut, ale jeśli napotkasz niskie stawki lub inne problemy (przekroczone limity kwot) lub jeśli jesteś szczególnie paranoikiem i chcesz częściej zmieniać swoją tożsamość, możesz zmienić swoją tożsamość Tora używając tutaj kodu python (nieco zmodyfikowany poniżej). Musisz zmienić hasło Tora na hasło statyczne (zamiast losowo generowanego), wprowadzając ustawienia Vidalii. Być może trzeba będzie zrestartować Vidalię po wszystkich zmianach.
p = "MySuperSecurePassword"
def renewTorIdentity():
success = False
try:
s = socket.socket()
s.connect(('localhost', 9051))
s.send('AUTHENTICATE "' + p + '"\r\n')
resp = s.recv(1024)
if resp.startswith('250'):
s.send("signal NEWNYM\r\n")
resp2 = s.recv(1024)
if resp2.startswith('250'):
success = True
except:
success = False
return success