Ниже приведен код для получения канала новостей Google. Это работает хорошо в течение некоторого времени. Если мы попытаемся вызвать эту функцию более чем за 2 или 3 раза, это покажет ошибку.
$url="http://news.google.com/news?q=Stella+Artois&hl=en&um=1&ie=UTF-8&output=rss";
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($data, 0, $header_size);
$body = substr($data, $header_size);
if(curl_error($ch)){
echo 'error:' . curl_error($ch);
}
curl_close($ch);
ошибка: не удалось подключиться к порту news.google.com 80: соединение отклонено
Я знаю, что причина была, Google заблокирует доступ после нескольких запросов. СИ что-нибудь может сделать? Я использую сервер Linux.
Да, Google заблокирует это после повторных попыток и может даже вообще ответить на запросы скручивания. Вы должны использовать API — https://newsapi.org/google-news-api
Перепробовав много вариантов, я нашел альтернативный API, который сейчас работает хорошо rss2json.com