cURL get-url umleiten
Ich bin derzeit mit cURL, um zu versuchen und erhalten Sie die URL einer Weiterleitung für eine Webseite Spachtel. Ich brauche nur die url von der website. Ich habe recherchiert, auf stackoverflow und anderen Websites, für die letzten paar Tage und waren erfolglos. Der code, den ich verwende, ist von dieser website:
$url = "http://www.someredirect.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_NOBODY, true);
$response = curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
curl_close($ch);
echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';
Jede Hilfe wäre sehr geschätzt werden!
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
sind, die Sie versuchen zu entsprechen header('Location:http://google.com');
zum Beispiel? :/Ja. Versuchen zu analysieren, eine Position aus der Kopf, aber die Lage tag nicht wieder in den header.
In diesem Fall, dein code funktioniert gut für mich.
InformationsquelleAutor Josh | 2013-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem speziellen Fall, der server ist die überprüfung für bestimmte user-agent-strings.
Wenn ein server überprüft den user-agent-string, es werden nur Antworten mit einem
302
redirect-status code, wenn der server sieht eine "gültige" (je nach server), user-agent. Alle "ungültigen" Benutzer-agents erhalten keine302
redirect " status-code der Antwort oderLocation:
header.In Ihrem besonderen Fall, wenn der server erhält eine Anfrage von einem "ungültigen" Benutzer-agent antwortet er mit einem
200
OK status-code ohne text in der Antwort der Körper.(Hinweis: in dem code unten, die tatsächlichen URLs, die zur Verfügung gestellt wurden ersetzt durch Beispiele.)
Lassen Sie uns sagen, dass
http://www.example.com
's-server-überprüft den User-Agent-string und dashttp://www.example.com/product/123/
Umleitungen zuhttp://www.example.org/abc
.In Ihre PHP-Lösung wäre:
Und die Ausgabe dieses Skriptes wäre:
http://www.example.org/abc
.Ja, ich war zu bemerken, dass, sollten schon etwas gesagt. Wenn es technisch nicht umleiten, aber immer noch leitet zu einer anderen Seite, wie würde ich mich über grabbing die url, die ich will?
Auf der Kommandozeile können Sie überprüfen Sie Ihre Umleitungen mit
curl
. E. g.,curl -IL http://microsoft.com
zuerst geben Sie status-codes 301, dann eine 200. Wenn ich in der url, die Sie mir gab, ich bekomme ein 200 OK status-code auf der ersten URL.Hängt davon ab, wie die Umleitung ist fertig. Dieser link sollte hilfreich sein, wenn der redirect erfolgt im HTML-oder JavaScript-Code: stackoverflow.com/questions/12633369/...
Aktualisiert die Lösung, so dass es funktioniert für diesen speziellen server. Außerdem ersetzte ich die tatsächlichen URLs zur Verfügung gestellt von @Josh mit Beispielen.
InformationsquelleAutor cmt
Versuchen Sie es mit diesem code:
}
InformationsquelleAutor bukvoed