Ich habe ein paar Fragen, bitte helfen Sie:
Ich kann auf die Google-Suche zugreifen, indem ich einfach tippe http://74.125.224.211
, da dies die von nslookup zurückgegebene IP-Adresse ist.
Mit den von www.yahoo.com zurückgegebenen IP-Adressen konnte ich dies jedoch nicht tun. Wie gehe ich nach IP auf die Yahoo-Suchseite?
Ein anderes Beispiel http://www.allaboutcircuits.com
wird nach 68.233.243.63
DNS-Server aufgelöst, aber wenn ich gehe http://68.233.243.63
, bekomme ich "Hallo Welt!".
Zweitens ist aus irgendeinem Grund etwas mit DNS-Resolvern bei meinem Webhosting-Dienst nicht in Ordnung (es wird nicht behoben !!) . Also Befehle wie
get_file_contents("http://www.allaboutcircuits.com");
wird zurückkehren php_network_getaddresses: getaddrinfo failed: Name or service not known
Wie kann ich das mit der IP-Adresse umgehen?
68.233.243.63
Ich meine, irgendwie den HTTP-Hostnamen-Parameter anhängen get_file_contents()
?
Ich möchte dies auf meiner eigenen Seite (in meinem Code) lösen. Der Serveradministrator wird keine Fehlerbehebung / Anpassung vornehmen.
quelle
Antworten:
Wenn Sie in Ihrem PHP-Skript über eine IP-Adresse darauf zugreifen, müssen Sie
Host:
in Ihrer Anfrage auch einen Header mit dem richtigen Domainnamen senden .Diese Frage zu Stack Overflow erklärt, wie es geht: /programming/356705/how-to-send-a-header- using-a-http-request-through-a-curl- call
quelle
Wie Wallyk sagte, handelt es sich um virtuelle Server
Nehmen Sie dieses Beispiel für Apache
In c: \ www \ example.com erstellen Sie eine Indexdatei mit der Aufschrift "Hello World! Example.com".
Erstellen Sie in c: \ www \ example2.com eine Indexdatei mit der Aufschrift "Hellow World! example2.com".
Und ändern Sie Ihre Hosts-Datei auf
Gehen Sie dann zu http://example.com und dann zu http://example2.com
Auf diese Weise können Sie mehrere Websites pro IP-Adresse einrichten
Im Grunde genommen lautet die Antwort: Nein, Sie können diese Site nicht von der IP-Adresse abrufen.
quelle
Host
Header enthält, die ein Server benötigt, um zwischen den Websites, die er hostet, und den richtigen Websites zu unterscheiden.Sie möchten sowohl den Hostnamen als auch die IP-Adresse manuell angeben, anstatt sich auf einen DNS-Server zu verlassen, auf den Sie keinen Einfluss haben. Wenn ich mir die Kommentare in der file_get_contents-Dokumentation ansehe , sehe ich, dass Kommentatoren dort ähnliche Probleme gelöst haben, indem sie einen Kontext erstellt haben, der den erforderlichen Host: -Header enthält. Etwas wie das:
Beachten Sie natürlich, dass der Nachteil der manuellen Angabe von Hostname und IP-Adresse darin besteht, dass Ihr Code möglicherweise nicht mehr funktioniert, wenn sich die IP-Adresse in der Zukunft ändert (z. B. wenn die Site zu einem neuen Hosting-Anbieter wechselt) Sie aktualisieren die IP-Adresse manuell.
quelle
Die IP-Adresse allein reicht nicht aus, um eindeutig zu identifizieren, zu welcher Site Sie wechseln möchten, wenn mehrere virtuelle Hosts auf demselben Port / Server ausgeführt werden. In diesem Fall müssen Sie den Host-Header in der HTTP-Anforderung angeben, der den Servernamen identifiziert. Sie können dies direkt über Telnet an Port 80 tun:
Hier geben Sie den Befehl telnet sowie die Zeilen GET und Host ein und rufen dann den vom Server zurückgegebenen HTML-Quellcode ab.
Oder Sie können Curl verwenden, um den Header (mit dem
-H
Flag) gezielt hinzuzufügen .quelle
Sie können einen anderen DNS-Server auf der Client-Seite verwenden, falls es sich nicht um den Webhost handelt. 8.8.8.8 und 8.8.8.6 werden von Google ausgeführt, und 4.4.4.2 ist eine häufig verwendete Standby-Version. Mit Namebench finden Sie den schnellsten. Alternativ können Sie auch einen Proxy-Dienst verwenden (ich verwende meinen eigenen auf einem VPS oder verwende Tor, aber es gibt andere Möglichkeiten).
Da dies PHP ist, ist es noch einfacher, den Code auf einem anderen System auszuführen. Kludges sind nicht wartbar.
quelle