Ich benutze curl, um php eine HTTP-Anfrage an eine Website irgendwo senden und CURLOPT_FOLLOWLOCATION auf 1 setzen, so dass es Weiterleitungen folgt. Wie kann ich herausfinden, wohin es schließlich umgeleitet wurde?Herausfinden, wo curl umgeleitet wurde
5
A
Antwort
6
Sie können so etwas wie tun:
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
-1
Wenn Sie nicht die endgültigen Körper benötigen, können Sie es auf diese Weise tun:
Set CURLOPT_HEADER
und CURLOPT_NOBODY
. Der Header "Location" sollte zurückgegeben werden und die neue URL enthalten. Führen Sie dann die Anfrage bei Bedarf mit der neuen URL aus.
2
$ch = curl_init("http://websitethatredirects.com");
$curlParams = array(
CURLOPT_FOLLOWLOCATION => true,
);
curl_setopt_array($ch, $curlParams);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
print $info['url'];
Dies wird Ihnen die URL zeigen, die Sie letztlich umgeleitet wurden.
0
Testen Sie diese Codeschnipsel. Es funktioniert gut für mich:
$urls = array(
'http://www.apple.com/imac',
'http://www.google.com/'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
foreach($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
// line endings is the wonkiest piece of this whole thing
$out = str_replace("\r", "", $out);
// only look at the headers
$headers_end = strpos($out, "\n\n");
if($headers_end !== false) {
$out = substr($out, 0, $headers_end);
}
$headers = explode("\n", $out);
foreach($headers as $header) {
if(substr($header, 0, 10) == "Location: ") {
$target = substr($header, 10);
echo "[$url] redirects to [$target]<br>";
continue 2;
}
}
echo "[$url] does not redirect<br>";
}
Verwandte Themen
- 1. Wie kann ich herausfinden, wo ein Objekt instanziiert wurde?
- 2. Get URL nach curl wird umgeleitet
- 3. Kann nicht herausfinden, wo Race-Bedingung auftritt
- 4. Herausfinden, wann ein MotionEvent beendet wurde
- 5. Herausfinden, welches Symbol in UIActivityViewController angeklickt wurde
- 6. Kann nicht herausfinden, wo SQL-Syntaxfehler von
- 7. Wo wurde Blender erstellt?
- 8. Wie kann ich herausfinden, wohin ich mit cURL weitergeleitet werde?
- 9. Wie kann ich herausfinden, warum cURL hängt und nicht reagiert?
- 10. curl: (56) Recv failure: Verbindung wurde zurückgesetzt
- 11. Wie erkennt man, ob Console.In (stdin) umgeleitet wurde?
- 12. yii überprüfen, ob Benutzer zur Anmeldeseite umgeleitet wurde
- 13. Grails - überprüfen, ob die Anfrage bereits umgeleitet wurde
- 14. Ermitteln, ob die Seite direkt umgeleitet oder geladen wurde (JavaScript)
- 15. PowerShell-Ausgabe kann nicht umgeleitet werden, wenn -EncodedCommand verwendet wurde
- 16. Wo wurde der Griff zugewiesen?
- 17. Nicht auf die Standardseite umgeleitet
- 18. Herausfinden, was über PostUpdate-Listener in Symfony 2.1 geändert wurde
- 19. Wie Sie herausfinden, dass die Anwendung aktualisiert wurde
- 20. C# Windows 10 herausfinden, wann das System gestartet wurde
- 21. Kann ich herausfinden, wann eine Webseite zuletzt hochgeladen wurde?
- 22. Wie kann ich herausfinden, ob eine Datei geändert wurde?
- 23. Wie kann ich herausfinden, welche Hash-Funktion verwendet wurde?
- 24. C++ Client muss herausfinden, Socket wurde von Twisted-Server
- 25. herausfinden, welche URI wurde verwendet, um mich anzurufen?
- 26. Herausfinden, welche Version von R eine Funktion eingeführt wurde in
- 27. Wie kann ich herausfinden, wo sich die Datei httpd.conf befindet?
- 28. Ich kann nicht herausfinden, wo ich ORDER BY
- 29. Wie kann eine Stapeldatei herausfinden, wo sie sich befindet?
- 30. Kann nicht herausfinden, wo große Leerraum Lücke kommt von
Nizza. Ich wusste nichts von diesem. In Anbetracht der Anzahl der Curl-Optionen ist es nicht immer einfach, sie zu finden. Vielen Dank. –