У меня проблемы с использованием curl для получения заголовков для меньшинства сайтов.
Некоторые примеры - digg.com и 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;
}
Это функция и опции, которые я использую в настоящее время, и для удобства использования у меня есть небольшой тестовый скрипт, работающий @ isitup.org / test.php? D = example.com . Он просто возвращает заголовки ответа, а на примерах сайтов его не хватает.
Проблема в том, что эти сайты, похоже, игнорируют запрос, и я не получаю ответа. Я поэкспериментировал с различными вариантами, но не могу получить ответ.
Есть что-то, что я пропускаю? Или просто невозможно получить доступ к таким сайтам с помощью curl?
С уважением,
Sam
Edit:
test.php имеет следующий вид:
<code><?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)."
");
?>
Однако новый пользовательский агент все еще не получает ответ от этих сайтов ...
Обновление: Woops увидел мою ошибку, переместил агента в функцию и да, она работает! Спасибо: P