Gibt es sowieso in PHP, den Router eines Benutzers eindeutig zu identifizieren? Ich möchte wissen, welche Benutzer auf demselben Router sind.Gibt es sowieso in PHP, den Router eines Benutzers eindeutig zu identifizieren?
Antwort
Sie können die Benutzer-IP-Adresse mit $_SERVER['REMOTE_ADDR']
abrufen und dann ein traceroute
Dienstprogramm verwenden, um die Hops zu erhalten und nach den Routern zu suchen, die Sie finden möchten, wenn Sie die IPs von beiden kennen.
Angenommen, der Router übersetzt sie nicht für die Adresse, sonst funktioniert das nicht, da es darauf angewiesen ist, dass der Router den Benutzer wieder erreichen kann. Wenn einer der Router zum Benutzer zurückkehren kann, funktioniert er überhaupt nicht. Gut für Dial-In-Benutzer.
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$router1IP = "123.123.123.123";
$output = array();
exec('traceroute -n ' . $ip, $output, $result);
if ($result == 0) {
$outputText = implode("\n", $output);
if (preg_match("/" . preg_quote($router1IP) . "/", $output)) {
echo "Router 1";
} else {
echo "Router 2";
}
}
?>
Es gibt keine Garantie, dass der Rückweg mit dem Pfad übereinstimmt, den Sie in diese Richtung zurücklegen. Dies ist also bestenfalls eine Vermutung. Es hängt auch davon ab, ob "REMOTE_ADDR" das Vorhandensein eines Headers "X-FORWARDED-FOR" berücksichtigt. –
@Nick Bastin: Ganz richtig, es ist eine Vermutung - aber im Vergleich zu "keine Ahnung" besteht eine gewisse Chance zu erraten. Es würde für Einwahlbenutzer funktionieren. Ich habe meine Antwort aktualisiert, um das zu sagen. – Orbling
Die allgemeine Antwort wird grundsätzlich no sein - Erkennung der Netzwerktopologie ist ein nicht-trivialer Vorgang (und das Erkennen der Pfadpakete, die Sie benötigen, kann von einem Endpunkt nahezu unmöglich sein). Es klingt jedoch so, als hätten Sie eine bestimmte Topologie, die Ihnen vielleicht mehr darüber sagt, dass wir Ihnen vielleicht helfen können.
Vorausgesetzt, die folgenden Dinge:
- Sie haben zwei Ingress-Router
- Ihr Webserver hat nur eine Ethernet-Schnittstelle
- Sie versuchen zu bestimmen, welche den Verkehr Router kam durch
Sie könnten den eingehenden Verkehr an jeder Eingangsschnittstelle mit VLAN markieren (und alle Ihre Hosts auf unmarkierte Switch-Schnittstellen setzen) und sich einen Schnittstellen-Alias auf Ihrem Web-Server geben Für jedes VLAN, und damit wissen Sie, aus welchem virtuellen Interface Sie gekommen sind, wissen Sie, von welchem Ingress-Router der Traffic kam.
+1 Für die VLAN-Idee, clever. – Orbling
Das Beste, was Sie tun können, ist eine Benutzer-IP-Adresse mit der $_SERVER['REMOTE_ADDR']
identifizieren. Wenn IP-Adresse Router entspricht, haben Sie Glück.
- 1. Einen Computer eindeutig identifizieren
- 2. Gibt es in ClosedXML sowieso den Spaltenbuchstaben vom Spaltenkopfnamen?
- 3. wie ios Gerät eindeutig zu identifizieren
- 4. Gibt es sowieso Änderungen an den Tastaturkürzeln in Eclipse?
- 5. In asp.net gibt es sowieso was in httpcontext.Cache zu sehen?
- 6. Gibt es sowieso das 24h Format in UIDatePicker zu verstecken
- 7. Gibt es sowieso Jquery in React Komponente zu verwenden
- 8. Gibt es in PHP eine Methode, um die Standard-E-Mail eines Benutzers zu erhalten?
- 9. gibt es sowieso um von Double zu BigInteger zu konvertieren?
- 10. Gibt es eine Möglichkeit, den Benutzernamen eines SVN-Benutzers über den gesamten Repository-Verlauf zu ändern?
- 11. Wie eindeutig Thread in jvmti identifizieren
- 12. Gibt es sowieso Hangouts außerhalb von Google +?
- 13. xamarin.forms - eindeutig zu identifizieren Kontrollen in Listview in XAML
- 14. Der beste Weg, um einen Benutzer eindeutig zu identifizieren
- 15. Identifizieren Sie Element eindeutig für Elternklasse
- 16. Gibt es sowieso Python-Bytecode-Cache zu löschen?
- 17. PHP - Identifizieren einzelner Benutzer unter demselben Router (Haupt-IP-Adresse)
- 18. Mehrere Eigenschaften von Knoten Knoten eindeutig zu identifizieren
- 19. Wie kann man einen Monitor eindeutig identifizieren?
- 20. eindeutig identifizieren IPhone auf einer Web-Anwendung
- 21. Gibt es sowieso die Speicherbelegung des Python-Prozesses zu kontrollieren?
- 22. gibt es eine einfache Gruppennamen eines Benutzers in django
- 23. gibt es sowieso, um die Antwort zu speichern, die mein PHP-Skript in eine Variable produziert?
- 24. Gibt es sowieso eine Vorlage auf der Grundlage der Mitglieder eines Parameters in C++ zu spezialisieren?
- 25. So identifizieren Sie ein Mac-System eindeutig
- 26. php- Profilseite eines Benutzers bearbeiten
- 27. Erstellen eines Benutzers fehlgeschlagen. Gibt es eine Möglichkeit, den Fehler zu interagieren?
- 28. Gibt es sowieso, um den Puffer in log4net programmierbar zu leeren
- 29. identifizieren eindeutig gebrochen jpeg wenn jpeginfo und identifizieren nichts falsch
- 30. Eine Möglichkeit, ein BTLE-Gerät eindeutig zu identifizieren
Was meinst du mit "dem zweiten Router"? – robert
nein gibt es keine Möglichkeit, sicher zu stellen, wie wäre es, wenn er Proxy, anonyme Website-Surfen ... usw. – tawfekov