GET Request - browser vortäuschen
jonas werder
- php
guten morgen
ich möchte einen GET request mit php ausführen.
das mache ich bis jetzt so:
$fp = fsockopen("www.foobar.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /foo/bar/ HTTP/1.1\r\n";
$out .= "Host: www.foobar.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo htmlspecialchars(fgets($fp, 128));
}
fclose($fp);
}
aber das script auf dieser seite merkt, dass ich diese seite nicht per browser "besurfe" ..
kann ich das irgendwie umgehen ?
gruss jonas
Moin!
Moin. In der Dokumentation von fsockopen ist das genauestens beschrieben.
Ich bleibe bewusst so knapp in der Aussage weil ich davon ausgehe, das der Serverbetreiber es scheinbar nicht wünscht, dass Du seine Inhalte abholst und womöglich auf seine Kosten (hier: traffic, Rechenleistung des Servers) in Deine eigene Webseite verbaust.
Warum willst das umgehen?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
aber das script auf dieser seite merkt, dass ich diese seite nicht per browser "besurfe" ..
Schau Dir doch erstmal z.B. mit http://web-sniffer.net/
an, was sonst so üblich ist.
Mir würde der Accept-Header einfallen, den wohl fast alle Browser mitsenden.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
vielen dank für die zahlreichen antworten.
ich habe es mit einem ausführlichen GET Request mit user-agent und referer hinbekommen.
gruss
hi,
aber das script auf dieser seite merkt, dass ich diese seite nicht per browser "besurfe" ..
kann ich das irgendwie umgehen ?
Nur dann, wenn du einen Request absetzt, der von dem eines Browser für das Ziel nicht zu unterscheiden ist.
Im allgemeinen dürften dazu ein paar zusätzliche Header, die bspw. einen "bekannten" User-Agent etc. übermitteln, ausreichend sein.
(Ich bin mir gerade nicht sicher, ob PHP bei fsockopen ohne solche Angaben einen eigenen UA generiert, wie es bei fopen() der Fall wäre.)
Wenn das Ziel aber noch spezifischere Überprüfungen vornimmt (bspw. die anfragende IP als die eines Webservers erkennt, oder auch aus dem Aufbau des HTTP-Request, ggf. auf tieferen Protokollebenen, Schlüsse zieht - ich meine mich zu erinnern, dass die Browser auch da ihre individuellen Eigenarten haben sollen, die sie eindeutig erkennbar machen sollen), dann hast du wenig Chancen.
Aber wenn eine Seite sich derart dagegen abzusichern versucht - liegt dann nicht die Vermutung nahe, dass ein automatisierter Zugriff gar nicht erwünscht sein könnte?
gruß,
wahsaga
Hallo,
(Ich bin mir gerade nicht sicher, ob PHP bei fsockopen ohne solche Angaben einen eigenen UA generiert, wie es bei fopen() der Fall wäre.)
PHP generiert diese Angabe im Falle von Wrapperlosen Verbindungen nicht.
Gruß aus Berlin!
eddi
hi,
PHP generiert diese Angabe im Falle von Wrapperlosen Verbindungen nicht.
Danke, ich war mir wie gesagt gerade nicht sicher.
Logischer ist es aber, weil man mit fsockopen ja schließlich mehr "Kontrolle" über den Reqeust haben will, als mit einem simplen fopen() auf eine HTTP-Ressource.
gruß,
wahsaga
Hallo,
PHP generiert diese Angabe im Falle von Wrapperlosen Verbindungen nicht.
Logischer ist es aber, weil man mit fsockopen ja schließlich mehr "Kontrolle" über den Reqeust haben will, als mit einem simplen fopen() auf eine HTTP-Ressource.
es ist vor allem deshalb logisch, weil ich mit fsockopen() auf einer viel tieferen Protokollebene (nämlich TCP/IP Sockets) arbeite, das solche Dinge wie einen User-Agent gar nicht kennt - im Gegensatz zum Application-Level-Protokoll HTTP.
Ciao,
Martin
Hello,
(Ich bin mir gerade nicht sicher, ob PHP bei fsockopen ohne solche Angaben einen eigenen UA generiert, wie es bei fopen() der Fall wäre.)
PHP generiert diese Angabe im Falle von Wrapperlosen Verbindungen nicht.
Das wäre wohl auch schlimm!
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
aber das script auf dieser seite merkt, dass ich diese seite nicht per browser "besurfe" ..
kann ich das irgendwie umgehen ?
das geht nur, wenn Du weißt, wie der angesprochene Server Deinen Request filtert.
Gruß aus Berlin!
eddi