Se l'utilizzo dell'API di geocodifica di Google o di un'altra fonte online è la tua preferenza piuttosto che le opzioni locali, ti suggerirei di esaminare il Tor Project (facilmente installabile tramite il pacchetto chiamato "Bundle Vidalia").
Tor ti protegge facendo rimbalzare le tue comunicazioni su una rete distribuita di relè gestiti da volontari in tutto il mondo: impedisce ... ai siti che visiti di apprendere la tua posizione fisica.
Insieme all'iniezione di indirizzi casuali e all'utilizzo di ssl (https) per crittografare le comunicazioni ai loro endpoint (assicurati di farlo anche tu), non riesco a pensare a un modo più sicuro per geocodificare in remoto. Qualunque sia il servizio di geocodifica che stai usando non sarà mai in grado di identificare da dove provengono le richieste, e con https nessun altro lo farà. Nota: non utilizzare un servizio di geocodifica che richiede una chiave API per questo, o non sarai più anonimo. (Google non richiede più una chiave API).
Un 'vantaggio' secondario di questa procedura è che non sarai più limitato a nessun numero di richieste di geocodifica, poiché le tue richieste sembreranno provenire da più indirizzi IP. Tuttavia, non consiglio o approvo l'abuso di queste adorabili API gratuite! La velocità sarà comunque limitata se l'API limita la velocità (sebbene la velocità di trasmissione tramite Tor sia un po 'più lenta rispetto alla connessione diretta).
Case study in Python - Dopo aver installato il bundle Vidalia e aver eseguito il proxy su 127.0.0.1:8118 (impostazione predefinita), in Python 2.7 o versioni successive è possibile impostare un proxy https urllib2 utilizzando:
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")
Nota che i proxy urllib2 non funzionano con https almeno fino a Python 2.7 o giù di lì, quindi questo metodo funziona solo con le versioni recenti di Python. Assicurati di avere 'https' (non 'http') in entrambe le posizioni nell'esempio sopra. L'ho provato solo con Python 2.7.1.
Vidalia cambia la tua identità / origine dell'indirizzo IP apparente ogni 10 minuti, ma se riscontri tassi lenti o altri problemi (errori di quota superata) o se sei particolarmente paranoico e vuoi cambiare la tua identità più frequentemente, puoi cambiare la tua identità Tor usando qui il codice python (leggermente modificato di seguito). Dovrai cambiare la password Tor in una statica (piuttosto che una generata casualmente) inserendo le impostazioni di Vidalia. Potrebbe anche essere necessario riavviare Vidalia dopo tutte le modifiche.
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