Endgültige "Find My Geolocation" -Lösung für Python

9

Also habe ich eine Weile im Internet nach einer Python-Bibliothek gesucht, die genau Ihren aktuellen Standort zurückgibt und feststellt, dass nichts verfügbar ist, wenn Sie nicht die billige und ungenaue Methode wählen, Ihren Standort über Ihre IP-Adresse zu finden was ich an meinem mobilen Hotspot getestet habe und es ist 100 Meilen entfernt.

Ich habe eine andere Lösung, aber es wird JavaScript mit Python mischen müssen, und ich brauche Hilfe, ich war erst seit ein paar Tagen auf Python / Django.

Da Python serverseitig ist, konnte ich keine Bibliotheken finden, die Ihren genauen Längen- und Breitengrad bestimmen können. Bei Client-seitigem JavaScript ist dies jedoch extrem einfach und erfordert keinerlei Bibliotheken:

Ссылка

Ich frage mich also, ob es irgendwelche Python-Programmierer mit etwas mehr Erfahrung gibt, die hier erklären könnten, wie Sie den obigen JavaScript-Code ausführen und die Javascript-Ausgabe als Python-String zurückgeben können:

%Vor%

Also meine Idee hier ist, den gesamten HTML-Block in der JSfiddle-URL auszuführen, die ich in einer einzigen Python-Funktion bereitgestellt habe, die das gleiche Ergebnis liefert, das JSfiddle bietet.

Mit diesem Ergebnis kann ich es in einer Python-Variablen speichern und eine Zeichenkette dazu machen, um schließlich meine genauen Längen- und Breitengradkoordinaten auf der Clientseite zu speichern.

Ist es also möglich, JavaScript in einer Python-Funktion auszuführen?

ODER

Können Sie Python / Django verwenden, um die HTML-Quelle des Benutzers zu lesen, die der Benutzer nach dem Ausführen der javascript / HTML5-Geolokation sieht?

Je mehr ich darüber nachdenke, desto mehr fange ich an zu denken, dass das Javascript AJAX etwas an den Django-Server übergeben muss ...

    
user1504605 18.01.2014, 01:31
quelle

1 Antwort

1

Momentan gibt es 4 Wege in meinem Kopf. Ich weiß nicht, wie ich sie alle umsetzen soll. Wenn Sie jedoch online suchen, finden Sie einen Weg, sie zu implementieren.

JavaScript-Methode (Clientseite)

Sie rufen geolocation in Javascript auf (wie das, das Sie implementiert haben) und durchsuchen dann eine Datenbank mit dem nächstgelegenen Standort zu diesen Koordinaten.

Datenbank der Postleitzahlen

MySQL-Abfrage basierend auf dem Standort

Eine weitere MySQL-Abfrage: latitude / longitude Finde den nächsten Breiten- / Längengrad - komplexe sql oder komplexe Berechnung

Dies könnte jedoch ein bisschen sein. Sie können die Informationen über Ajax an den Server zurücksenden. Denken Sie daran, der Benutzer könnte es ablehnen, seinen Standort zu teilen.

Wenn Sie einen Beispielcode benötigen, sagen Sie es mir und ich werde einen für Sie schreiben.

IP-Adresse suchen (Serverseite)

Erhalte die IP-Adresse dieses Benutzers und suche die Stadt des entfernten Benutzers. Dies führt nicht immer zu guten Ergebnissen. Manchmal ist es Hunderte von Meilen entfernt.

Sie können whois-Informationen verwenden, um die Stadt des Benutzers zu suchen, wenn Sie keine Datenbank verwenden möchten.

Triangulieren der WiFi-MAC-Adresse (Smartphone erforderlich)

Wenn Sie einen Webdienst erstellen, der als Back-End für die Android- oder iPhone-App dient, können Sie mithilfe der Google- oder Apple-Dienste den genauen Standort des Benutzers ermitteln, indem Sie GPS- oder drahtlose Informationen in der Nähe verwenden der Benutzer. Android und iPhones laden MAC-Adressen von öffentlichem WLAN und ihre entsprechenden Koordinaten hoch. Dies ist sehr gut, aber erfordert ein Smartphone

Es ist möglich, dieselbe Methode auf einem PC zu verwenden, aber Sie müssen die WLAN-Karte kontrollieren und die SSID in der Nähe scannen und dann den Google-Dienst mit den MAC-Adressen abfragen (Dies ist ein kostenpflichtiger Dienst von Google) / p>

Triangulieren von Computern im Internet mit Netzwerklatenz

Es gibt eine Methode, die von der NSA patentiert wurde. Ich kann Ihnen einen Hinweis geben, wie es funktioniert, ich könnte mich deswegen irren.

simplifizierte Version:

Halten Sie 3 Server innerhalb des geografischen Standorts des Benutzers bereit. Versuchen Sie dann, eine Verbindung von jedem Server zu öffnen und zu messen, wie schnell die Verbindung zum Client hergestellt werden kann. Danach wandle diese Zeit in die Entfernung um, indem du die Zeit verwendest, die das Licht pro Strecke kreuzt. Erstellen Sie einen Kreis mit dem Radius dieser Entfernung und triangulieren Sie die Benutzerposition von der Schnittmenge aus 3 Kreisen.

Sie müssen die propageation deley (die Zeit, die der Router benötigt, um das Netzwerkpaket zu verarbeiten und zu senden, sobald es empfangen wird) von jedem Router Ihrer TCP-Verbindung berechnen und von der Nummer abziehen, die Sie von der Verbindung erhalten. Bedenken Sie, dass der Benutzer möglicherweise ein langsames Internet hat. Ich habe einen Link für das Patent eingefügt

Ahmed 01.06.2015 23:44

quelle

Tags und Links