J'utilise curl pour que php envoie une requête http vers un site Web quelque part et a défini CURLOPT_FOLLOWLOCATION sur 1 afin qu'il suive les redirections. Comment puis-je savoir où il a finalement été redirigé?Découvrir où curl a été redirigé
5
A
Répondre
6
Vous pouvez faire quelque chose comme:
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
-1
Si vous n'avez pas besoin du corps final, vous pouvez le faire de cette façon:
Set CURLOPT_HEADER
et CURLOPT_NOBODY
. L'en-tête "Location" doit être retourné et contiendra la nouvelle URL. Ensuite, effectuez la requête avec la nouvelle URL si nécessaire.
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'];
Cela vous montrera l'URL que vous avez été finalement redirigé vers.
0
tester ces extraits de code. Cela fonctionne bien pour moi:
$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>";
}
Questions connexes
- 1. Obtenir l'URL après curl est redirigé
- 2. Comment puis-je trouver où je serai redirigé en utilisant cURL?
- 3. traduire rss-feed qui a été saisi par cURL
- 4. PHP multi curl - savoir quel proxy a été utilisé pour un handle curl particulier
- 5. Mise en entrée de l'utilisateur après stdin a été redirigé, dans un script bourne
- 6. Découvrir qui a le plus battu Teamcity
- 7. Découvrez où Jquery ajax demande est redirigé vers
- 8. Comment voir l'URL vers laquelle j'ai été redirigé?
- 9. Trouver tous les endroits où une variable a été définie?
- 10. Quel objet a été cliqué lorsqu'un événement a été déclenché?
- 11. Y a-t-il des projets documentés où CouchDB a été essayé et rejeté?
- 12. Comment puis-je savoir ce qui a été envoyé avec cURL?
- 13. « System.OutOfMemoryException » a été levée
- 14. FatalExecutionEngineError a été détecté
- 15. exécution a été interrompue
- 16. SQL 2005 Découvrir qui a créé une vue
- 17. jQuery: Comment ajouter un gestionnaire de clic à une classe et découvrir quel élément a été cliqué?
- 18. La connexion sous-jacente a été fermée: La connexion a été fermée de manière inattendue.
- 19. Exception Sql a été pris
- 20. trouver lequel a été cliqué
- 21. API CURL C: le rappel n'a pas été appelé
- 22. Problème de domaine redirigé
- 23. problème par url redirigé
- 24. Découvrir quelle version SSL/TLS et quels chiffrements ont été négociés par un navigateur
- 25. Passer un champ de jeton d'invitation caché après avoir été redirigé depuis l'autorisation openid
- 26. Attribut RequireHttps redirigé vers le mauvais port
- 27. FTPS - Signale qu'un fichier a été téléchargé
- 28. IPhone rappelez-vous où vous avez été
- 29. Rails3 ": pop-up a été obsolète"
- 30. Utiliser WebClient en C# est-il possible d'obtenir l'URL d'un site après avoir été redirigé?
Nice. Je ne savais pas à propos de celui-ci. Compte tenu du nombre d'options de boucles, il n'est pas toujours facile de les trouver. Merci. –