Utilisation de cURL pour télécharger d'un site HTML source, mais l'obtention de fichier différent de celui prévu
Je suis en train d'utiliser cURL et PHP pour télécharger le code source HTML (comme il apparaît dans le navigateur) de ici. Mais au lieu de le code source, c'est renvoyée à la place (une méta lien d'actualisation fixé à 0).
<html>
<head><title>Object moved</title></head>
<body>
<h2>Object moved to <a href="https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&checkda=1&ct=1321044850&rver=6.1.6195.0&wp=MBI&wreply=http:%2F%2Fwww.windowsphone.com%2Fen-US%2Fapps%2Fea39f002-ac30-e011-854c-00237de2db9e&lc=1033&id=268289">here</a>.
</h2>
</body>
</html>
Je suis en train d'usurper le renvoi en-tête de la place, mais il semble que je suis en train de faire le mal. Le Code est ci-dessous. Toutes les suggestions? Grâce
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.windowsphone.com/en-US/apps/ea39f002-ac30-e011-854c-00237de2db9e');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_REFERER, "http://www.windowsphone.com/en-US/apps/ea39f002-ac30-e011-854c-00237de2db9e");
$html = curl_exec($ch);
curl_close($ch);
J'ai un sentiment que j'ai répondu à celui-ci avant: stackoverflow.com/questions/8046907/...
OriginalL'auteur user954912 | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
Je vais l'essayer et c'est du travail.
Je l'ai juste essayé, et il retourne
Object moved
etc.fonctionne parfaitement, merci!
Ah c'est votre travail d'édition qu'il fixe.
OriginalL'auteur Nikolay Baluk
Ajouter le curl option pour suivre les redirections:
Si c'est un meta refresh et pas un HTTP déplacé d'en-tête, voir:
PHP: Peut CURL suivre méta redirige
Comme mentionné par flesk, vous pouvez aussi avoir besoin de stocker les cookies.
Je suis en train d'écrire le code HTML retourné dans un fichier séparé (pour lire plus tard). Lorsque j'ai mis FOLLOWLOCATION à true, le fichier est devenu vide.
Cela fonctionne bien si la redirection est juste dans les en-têtes. Je viens de tester avec ton code, et la page renvoie un 200 OK avec une balise meta refresh. Voir mon edit.
excellent, je vais vérifier. Désolé, je suis nouveau à tout cela, HTTP/spoofing/cURL
OriginalL'auteur jli
Le problème n'est pas le référent, mais que vous devez activer les cookies pour que cela fonctionne.
Essayer quelque chose comme cela:
Vous avez une requête à la page deux fois. D'abord autoriser les redirections pour obtenir le cookie de login.live.com puis de nouveau requête avec le cookie ensemble.
OriginalL'auteur flesk