PHP | Erhalten private IP-Adresse von einem client-Benutzer?
Weiß ich, Frage aber nicht finden, wirkliche Antwort auf stackoverflow. Dies ist nicht X_FORWARDED_FOR
, SERVER_NAME
oder SERVER_REMOTE_ADDR
ich wünschen, erhalten Sie die lokale IP-Adresse des remote-client mit meinem server zu erkennen, wer wirklich auf lokalen remote-Netzwerk angeschlossen ist.
Erklären:
ISP <----> ROUTER <----> LOCAL NETWORK <----> LOCAL PC
Was ich wissen will?
- Öffentliche IP-Adresse der angeschlossenen remote-client -
$_SERVER["REMOTE_ADDR"]
, okay, aber!... - Lokale IP-Adresse des angeschlossenen client über das öffentliche Netzwerk (192.168.x.x, 10.x.x.x, 172.x.x.x)
Wie dieses problem zu lösen? Ich habe die Antwort, also ich denke, das sollte wissen für alle, wenn Sie wollen, um zu wissen, die lokale IP-Adresse:
Sollten Sie verwenden CURL
und curl_getinfo()
Funktion. Dann, zeigen Sie die URL-Adresse jeder, der Sie (Ihrem Haupt-server-ip oder was auch immer), zum Beispiel:
<?php
$ch = curl_init();
$opt = curl_setopt($ch, CURLOPT_URL, "YOUR_SOME_URL_ADDRESS");
curl_exec($ch);
$response = curl_getinfo($ch);
$result = array('client_public_address' => $response["primary_ip"],
'client_local_address' => $response["local_ip"]
);
var_dump($result);
curl_close($ch);
?>
Fokus auf $response["primary_ip"]
die Antworten Ihrer Öffentlichen Adresse und $response["local_ip"]
die reponses lokale Adresse. Jetzt ist dieses Beispiel:
ISP <----> ROUTER <----> LOCAL NETWORK <----> LOCAL PC
/\ /\
|| ||
\/ \/
$response["primary_ip"] <----> $response["local_ip"]
213.x.x.x (for example) 192.168.1.3 (for example)
Ergebnis:
array (size=2)
'client_public_address' => string '213.xxx.xxx.xxx' (length=14)
'client_local_address' => string '192.168.1.3' (length=11)
Dies wird NICHT geben, eine ECHTE lokale IP-Adresse!
Danke.
- Warum müssen Sie die lokale IP-Adresse? Es ist die Idee von session-cookies in PHP und anderen Mitteln, um einen Benutzer eindeutig identifizieren.
- dies ist aber, wie bekommen Sie Ihre server lokale IP nicht client... geben Sie Ihre site mit einem beliebigen proxy, so werden Sie sehen, Sie sind völlig falsch
- Denken! Sie wollen suchen eine Reale person in das Haus, wer ist verbunden? Sie wusste nicht, ob Sie im Haus ist, zu viele Menschen mit unterschiedlichen user_agent und ports? Ihre Antwort packte Ihre lokale IP-Adresse und bittet um die "hostname" ist verbunden in dem Haus?
- Es ist immer eine gute Idee, um zu testen, Ihre Erfindungen vor der Veröffentlichung...
- auch mit einem user-agent und eine private ip-Adresse, Sie können nicht garantieren, dass dies die gleiche person, die mehr als eine person könnte mit dem computer mit dem gleichen browser mit der gleichen windows/linux login oder nicht login bei allen, das ist, wie fast die ganze Familie von Computern und wie viele Unternehmen arbeiten bei der Verwendung von "hot-desking".
I think this could help many people
in diesem moment sind Sie einfach nur verwirrend Menschen, so lassen Sie mich es klar: Es gibt keinen Weg, um Benutzer - /client private IP mit HTTP (in irgendeiner Sprache: PHP,Ruby,Java, etc.)- Dies ist nicht zur Arbeit gehen. Der user private IP, ist nicht unsere Sache
- Sie können beginnen, indem schreiben Sie Ihre eigenen browser, die lokale IP im Header für jede Anforderung.
- Versuchen Sie einfach, stellen Sie sich die situation, wenn Hunderte oder Tausende von Benutzern teilen sich dieselbe IP-Adresse. Stellen Sie sich Dutzende von Routern zwischen Benutzer ISP und seinem computer. Am Ende stellen Sie sich dies: mehrere Benutzer mit GLEICHEN LOKALEN IP auf verschiedenen Routern, die alle auf DASSELBE GEMEINSAME ÖFFENTLICHE IP-Adresse. Nicht möglich und nutzlos.
- (Ja, ich sage das, weil diese Antwort zeigt HOCH ina google-Suche auf meine Frage, um anderen zu helfen.) MEINE ähnliche Frage ist, wenn sowohl der server als auch der client sind in einem privaten Netzwerk, mit vielleicht einer Un-Instanz an ein Internet-gateway. Die Kommunikation möchte ich, um die client-Adresse ist die PRIVATE IP des private client Zugriff auf die PRIVATEN server. SOLLTE der $_SERVER['HTTP_CLIENT_IP' - Wert richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nie bekommen, um zu arbeiten.
Zuerst müssen Sie einen HTTP-server auf einem client zu machen, Antwort zu KRÄUSELN.
Selbst wenn es wäre - es ist nicht guarantted zurück, was "lokale IP".
Weiter ist ein HTTP-server, die pings sind es die Kunden wieder sieht verdächtig und wahrscheinlich gebannt wird.
Sowieso, ich versuchte Ihren code auf einem remote-IP:
wird es wieder nichts
Weile, als ich versuchte, meinen lokalen router funktioniert es okay
Es funktioniert nur für Ihren eigenen lokalen router, aber es kann nicht unabhängig von lokalen-Adresse von einem remote-system.
Ehrlich gesagt, es zeigt dir nur die lokalen IP-Adresse zugewiesen, um Ihren PC.
NULL
. Mein Fehler, sorry.Der lokalen IP angesprochen wird, nicht durch die Anwendungsschicht standardmäßig. Sie brauchen niedrigere level-Werkzeuge, die Sie extrahieren können diese Informationen aus dem Netzwerk-Pakete.
Können Sie HTML5-Funktionen (CORS und WebSocket) für die Bestimmung der Reichweite (xxx.xxx.xxx.xxx/24) zu sehen ist dieses live-Beispiel:
JS-RECON
Wie seine Arbeit?
Sie können den scan-Bereich von IP-Adressen (192.168.1.0/24 IP-Adresse 192.168.0.1/24, etc) und finden das Angebot, das durch den Benutzer verwendet, jedoch kann die Suche nach der genauen IP-Adresse ist immer noch schwierig.
Ergebnis:
Funktioniert nicht. IP 192.168.1.200 gibt 192.168.1.2; Website ungültig ist, Werkzeuge, die nicht wirklich funktionieren.
Currently works on WINDOWS ONLY.