cURL obtenir l'url de redirection
Je suis actuellement à l'utilisation de cURL pour essayer et obtenir de l'URL de redirection d'un site web d'un grattoir. J'ai seulement besoin de l'url du site web. J'ai fait des recherches sur stackoverflow et d'autres sites depuis quelques jours et ont été infructueuses. Le code que j'utilise actuellement est à partir de ce site web:
$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';
Toute aide serait grandement appréciée!
preg_match_all('/^Location:(.*)$/mi', $response, $matches);
, êtes-vous essayer de faire correspondreheader('Location:http://google.com');
par exemple? :/- Ouais. En essayant d'analyser un Emplacement de la tête, mais l'emplacement de la balise n'est pas retourné dans l'en-tête.
- Dans ce cas, votre code fonctionne très bien pour moi.
Vous devez vous connecter pour publier un commentaire.
Dans votre cas particulier, le serveur est la vérification de certaines chaînes user-agent.
Lorsqu'un serveur vérifie la chaîne de l'agent utilisateur, il ne pourra répondre qu'avec un
302
code de statut de redirection lorsque le serveur voit un "valide" (selon le serveur) de l'agent utilisateur. Tout "invalide" agents utilisateurs ne recevront pas de302
rediriger le code d'état de réponse ouLocation:
en-tête.Dans votre cas particulier, lorsque le serveur reçoit une requête à partir d'un "non valide" user-agent, il répond avec un
200
code de statut OK avec aucun texte dans le corps de la réponse.(Note: dans le code ci-dessous, les Url fournies ont été remplacés par des exemples.)
Disons que
http://www.example.com
's server vérifie la chaîne de l'Agent Utilisateur et quehttp://www.example.com/product/123/
redirige vershttp://www.example.org/abc
.En PHP de votre solution serait:
Et la sortie de ce script serait:
http://www.example.org/abc
.curl
. E. g.,curl -IL http://microsoft.com
vais d'abord vous donner les codes d'état 301, puis 200. Quand je l'ai mis dans l'url que vous avez donné à moi, je reçois un 200 OK code d'état sur la première URL.Essayez d'utiliser ce code:
}