Nếu sử dụng API mã hóa địa lý của Google hoặc một nguồn trực tuyến khác là tùy chọn của bạn chứ không phải tùy chọn cục bộ, tôi khuyên bạn nên xem xét Dự án Tor (dễ dàng cài đặt thông qua gói có tên 'Gói Vidalia').
Tor bảo vệ bạn bằng cách chuyển các liên lạc của bạn xung quanh một mạng lưới rơle phân tán được điều hành bởi các tình nguyện viên trên khắp thế giới: nó ngăn ... các trang web bạn truy cập tìm hiểu vị trí thực của bạn.
Cùng với việc tiêm địa chỉ ngẫu nhiên và sử dụng ssl (https) để mã hóa thông tin liên lạc đến các điểm cuối của chúng (đảm bảo bạn cũng đang thực hiện việc này), tôi không thể nghĩ ra một cách an toàn hơn để mã hóa địa lý từ xa. Bất cứ dịch vụ mã hóa địa lý nào bạn đang sử dụng sẽ không thể xác định được các yêu cầu cuối cùng đến từ đâu và với https, sẽ không có ai khác làm như vậy. Lưu ý: không sử dụng dịch vụ mã hóa địa lý yêu cầu khóa api cho việc này hoặc bạn sẽ không còn ẩn danh. (Google không yêu cầu khóa api nữa).
Một lợi ích phụ của quy trình này là bạn sẽ không còn bị hạn chế đối với bất kỳ số lượng yêu cầu mã hóa địa lý nào, vì các yêu cầu của bạn sẽ giống như chúng đến từ nhiều địa chỉ IP. Tuy nhiên, tôi không khuyến nghị hoặc tán thành việc lạm dụng các API miễn phí đáng yêu này! Tốc độ sẽ vẫn bị giới hạn nếu tốc độ giới hạn API (mặc dù tốc độ truyền sử dụng Tor chậm hơn một chút so với kết nối trực tiếp).
Nghiên cứu điển hình về Python - Khi bạn đã cài đặt Gói Vidalia và có proxy chạy trên 127.0.0.1:8118 (mặc định), trong Python 2.7 trở lên, bạn có thể thiết lập proxy https urllib2 bằng cách sử dụng:
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")
Lưu ý rằng proxy urllib2 không hoạt động với https cho đến khi ít nhất Python 2.7 trở lên, vì vậy phương pháp này chỉ hoạt động với các phiên bản Python gần đây. Đảm bảo bạn đã có 'https' (không phải 'http') ở cả hai nơi trong ví dụ trên. Tôi chỉ thử nghiệm nó với Python 2.7.1.
Vidalia thay đổi nguồn gốc địa chỉ IP rõ ràng / nhận dạng của bạn cứ sau 10 phút, nhưng nếu bạn gặp phải tốc độ chậm hoặc các vấn đề khác (lỗi vượt quá hạn ngạch) hoặc nếu bạn đặc biệt hoang tưởng và muốn thay đổi danh tính thường xuyên hơn, bạn có thể thay đổi danh tính Tor của mình sử dụng mã python ở đây (sửa đổi một chút bên dưới). Bạn sẽ cần thay đổi mật khẩu Tor thành mật khẩu tĩnh (thay vì mật khẩu được tạo ngẫu nhiên) bằng cách nhập cài đặt Vidalia. Cũng có thể cần phải khởi động lại Vidalia sau tất cả các thay đổi.
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