2016-06-15 7 views
-2

Ich arbeite ein PHP-Skript, um eine vage URL (zum Beispiel die Eingabe in facebook.com) als absolute URL (wie https://www.facebook.com) zu lösen; ähnlich wie das, was Ihr Browser täglich mit PHP tut.PHP: gethostbyaddr() gibt eine ungültige URL zurück

Bisher habe ich den folgenden Code bekam:

$link = gethostbyname("facebook.com"); 

Diese eine IPv4-Adresse liefert, die funktioniert, aber wenn ich dann Reverse-Lookup mit:

$link2 = gethostbyaddr($link); 

Ich erwarte zu bekomme eine gültige URL wie "https://www.facebook.com", aber stattdessen bekomme ich Müll wie "'edge-star-mini-shv-13-atn1.facebook.com'"

Das bricht dann jede Hoffnung auf die Verwendung von Fopen oder Curl einen Versuch machen nd lesen Sie den Inhalt der Webseite.

Kann mir jemand erklären, was hier falsch gelaufen ist und wie ich es lösen kann?

EDIT: Der Versuch, eine unsichere URL wie "google.co.uk" returns " 'lhr25s10-in-f3.1e100.net'", so dass es nicht etwas ist, mit sicheren HTTP zu tun (HTTPS)

+0

@ C0dekid - Ja. "google.co.uk" bietet "'lhr25s10-in-f3.1e100.net'" und das ist überhaupt nicht sicher – Raisus

+0

Halten Sie .. Host ist die Domäne, die diese IP gehostet wird, verwenden Sie ein GeoIP-Tool und sehen Sie es selbst. Hostbyaddr ist nicht der Link zur Website. – Jer

+0

nach PHP.net (http://php.net/manual/en/function.gethostbyaddr.php) ist es – Raisus

Antwort

0

gethostbyaddr erhält einen Hostnamen, keine URL für eine IP-Adresse.

Mehrere Hostnamen können einer einzelnen IP-Adresse zugewiesen werden.

gethostbyaddr wird der Standardwert erhalten.

Ein HTTP-Server, der diese IP-Adresse überwacht, verarbeitet Anfragen an alle Hostnamen.

Eine HTTP-Anforderung enthält einen Anforderungsheader namens Host, der angibt, nach welchem ​​Hostnamen Sie fragen.

Der HTTP-Server kann auf diesen Header achten und unterschiedliche Inhalte für verschiedene Hostnamen bereitstellen. Dadurch können mehrere Websites unter einer einzigen IP-Adresse gehostet werden. Dies ist sehr nützlich, da IPv4-Adressen nur begrenzt verfügbar sind und viele, viele Websites vorhanden sind.

Sie erhalten den Standard-Hostnamen für den Computer, der facebook.com hostet, aber der Webserver hostet nicht die gewünschte Website auf diesem Hostnamen.

+0

Ah. Aha. Was empfehlen Sie stattdessen, um die Website aufzurufen? Wenn Sie Ihre Antwort so bearbeiten können, dass ich sie einbeziehe, akzeptiere ich sie. – Raisus

+0

Um zu beginnen, die URL der Website zu kennen, mit der Sie sich befassen möchten (und nicht die IP-Adresse des Computers, der sie hostet). d. h., Sie überspringen absolut alles, was Sie in der Frage tun. – Quentin

+0

ABER ... das ist nicht wie Ihr Browser es tut. Sie müssen nicht die genaue URL kennen, damit Ihr Browser Ihre Absichten interpretieren kann. – Raisus

Verwandte Themen