Il y a déjà des questions similaires sur Stackoverflow, mais aucune de leurs solutions n'a travaillé pour moi. J'essaie de saisir une page sur Loveit.com avec Curl, mais cela me renvoie une erreur 404, tandis que l'URL fonctionne correctement dans le navigateur:
$url = 'http://loveit.com/loves/P0D1jlFaIOzzZfZqj_bY3KV'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt ($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_REFERER,'http://loveit.com/');
4 Réponses :
J'ai rapidement vérifié ladite page avec Loadheaders activé et j'ai remarqué que le jeu de biscuits. Je soupçonne que, puisque ce n'est pas une URL "normale", vous devez remettre ces cookies tout en étant redirigé, sinon vous avez fini d'être expulsé avec 404. Utilisez curlopt_cookiejar code> avec votre instance CURL au début. Voir: http://php.net/manual/pl/function.curl-setopt .php p>
Merci de votre réponse, je suis donc visité la page, a sauvé les cookies dans un fichier cookies.txt (avec chrome extenson cookie.txt export) que je n'utilise pas curlopt_cookiejar, mais pour l'option curlopt_cookiefile strong> . $cookiefile = './cookie.txt';
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile);
Je viens d'avoir un problème similaire avec un site. Dans mon cas, ils s'attendaient à ce que User_Agent soit défini afin que toute personne avec cette question dans le futur devrait également vérifier cela. P>
Vous n'avez pas besoin de sauvegarder le fichier de cookie via chrome.
Vous pouvez créer une fonction pour obtenir ce cookie, puis la réutiliser. P>
Comme: P>
<?php error_reporting(E_ALL); Class Crawler{ var $cookie; var $http_response; var $user_agent; function __construct($cookie){ $this->cookie = (string) $cookie; $this->user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0'; } function get($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent); // Here we create the file with cookies curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie); $this->http_response = curl_exec($ch); } function get_with_cookies($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent); curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie); // Here we can re-use the cookie file keeping the save of the cookies curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie); $this->http_response = curl_exec($ch); } } $crawler = new Crawler('cookie_file_name'); // Creating cookie file $crawler->get('uri'); // Request with the cookies $crawler->get_with_cookies('uri');
Recréerez-vous l'environnement de navigateur exactement? par exemple. Obtenir courboire pour envoyer des cookies Le navigateur pourrait être? Vérification du référateur?