Używam curl, aby php wysłał żądanie http do jakiegoś serwisu gdzieś i ustawiłem CURLOPT_FOLLOWLOCATION na 1, tak aby następowało przekierowania. Jak więc mogę się dowiedzieć, gdzie ostatecznie został przekierowany?Sprawdzanie, gdzie curl został przekierowany
5
A
Odpowiedz
6
można zrobić coś takiego:
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
-1
Jeśli nie potrzebujemy ostatecznej ciało można to zrobić w ten sposób:
Set CURLOPT_HEADER
i CURLOPT_NOBODY
. Nagłówek "Lokalizacja" powinien zostać zwrócony i zawierać nowy adres URL. Następnie w razie potrzeby wykonaj żądanie z nowym adresem URL.
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'];
To pokaże Ci URL, które zostały ostatecznie przekierowany.
0
przetestuj te fragmenty kodu. Działa to dobrze dla mnie:
$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>";
}
Powiązane problemy
- 1. lib curl symbol nie został znaleziony
- 2. Sprawdzanie, kiedy kod został zmieniony w git
- 3. Gdzie umieścić certyfikaty cacert.pem dla cURL?
- 4. Sprawdzanie, czy został dostarczony komunikat dotyczący tcp.
- 5. Sprawdzanie, czy konwerter został już zarejestrowany
- 6. TFS 2012 sprawdzanie, czy oddział został scalony
- 7. C# Sprawdzanie, czy został kliknięty przycisk
- 8. Ruby HTTParty - uzyskać przekierowany URL
- 9. cURL - Załaduj stronę z ochroną CloudFlare
- 10. Jak uzyskać ostatni URL pobrany przez CURL?
- 11. Nie znaleziono polecenia bash curl. Gdzie mogę to znaleźć?
- 12. HttpClient 4 - jak przechwycić ostatni przekierowany URL
- 13. java URLConnection uzyskać ostateczną przekierowany URL
- 14. nginx podścieżki karnetów proxy nie przekierowany
- 15. Facebook aplikacje przekierowany do strony 404
- 16. Kiedy lub gdzie został sformułowany termin "Najbardziej dokuczliwy parse"?
- 17. Metoda Alamofire.download(): Gdzie jest plik i czy został zapisany pomyślnie?
- 18. php cUrl do linii poleceń curl wywołanie
- 19. Korzystanie certyfikat klienta w poleceniu Curl Curl
- 20. co oznacza `curl -e` lub` curl --referer`?
- 21. Curl --resolve odpowiednik w bibliotece PHP CURL
- 22. Przekłada cURL wiersz polecenia w PHP cURL
- 23. Gdzie sprawdzanie jednostek w wyszukiwarce Google wymaga pliku persistence.xml?
- 24. Wzrost pamięci pętli cURL
- 25. Curl PHP CURLOPT_IPRESOLVE
- 26. co to jest CURL 302?
- 27. "StandardOut nie został przekierowany lub proces jeszcze się nie rozpoczął" podczas czytania wyniku polecenia konsoli w C#
- 28. cURL - - polecenie
- 29. PHP CURL CURLOPT_SSL_VERIFYPEER ignorowane
- 30. curl nie przechodząc phpsessid
Nice. Nie wiedziałem o tym. Biorąc pod uwagę liczbę opcji zwijania, nie zawsze jest łatwo je znaleźć. Dzięki. –