Je rencontre des problèmes lors de l'utilisation de curl pour récupérer des en-têtes pour une minorité de sites.Utilisation de cURL avec PHP, impossible d'obtenir des en-têtes pour une minorité de sites
Quelques exemples sont digg.com et microsoft.com.
function get_headers_curl($url, $port)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$r = curl_exec($ch);
$r = split("\n", $r);
return $r;
}
C'est la fonction et les options que je suis en train d'utiliser, et pour la facilité d'utilisation j'ai un petit script de test en cours d'exécution @ isitup.org/test.php?d=example.com. Il retourne juste les en-têtes de la réponse, et avec les sites d'exemple le manque d'un.
Le problème est que ces sites semblent ignorer la demande et je n'obtiens aucune réponse. J'ai eu un jeu avec différentes options, mais je n'arrive pas à obtenir une réponse.
Y a-t-il quelque chose qui me manque? Ou est-ce simplement impossible d'accéder à de tels sites en utilisant curl?
Cordialement,
Sam
Edit:
test.php est la suivante:
<?php
$domain = preg_replace("/[^A-Za-z0-9-\/\.\:]/", "", trim($_GET["d"]));
$agent = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8";
function get_headers_curl($url, $port)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt($ch, CURLOPT_HEADER, true);
// curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$r = curl_exec($ch);
$r = split("\n", $r);
return $r;
}
$headers = get_headers_curl("http://".$domain, 80);
print("<pre>".print_r($headers,true)."</pre>");
?>
Cependant, le nouvel agent utilisateur ne reçoit pas encore une réponse de ces sites. ..
Mise à jour: Woops a vu mon erreur, agent décalé dans la fonction tion et oui cela fonctionne! Merci: P
Pouvez-vous poster le code PHP que vous utilisez dans test.php? – razzed
BTW, split() est obsolète et sera supprimé en 6.0. – GZipp
J'ai également essayé sur deux serveurs différents, à Paris et en Amérique, donc il ne s'agit pas d'un ip restreint ... –