SAPE: проверка страниц в Yandex
При добавлении новых сайтов для продажи ссылок SAPE индексирует все страницы, на которых установлен SAPE-код. При этом в список страниц попадают и те, что не проиндексированы Яндексом, а значит, такой сайт, скорее всего, не пройдет модерацию. Особенно это касается сайтов с большим числом страниц.
Сам SAPE не умеет автоматически исключать подобные страницы (глупо с их стороны). В сети есть несколько скриптов и программок, с помощью которых можно отсеить «плохие» страницы, но мне они чего-то не приглянулись (один платный, второй не заработал :)), так что я написал свой собственный. Его можно запустить как на локальной машине, так и оставить где-нибудь на хостинге, запустив по расписанию.
Чтобы Яндекс не забаннил, в скрипте есть ограничение на количество последовательных проверок. Если, допустим, вы запускаете его каждую минуту, можно ограничить число одновременных проверок 2-4 страницами (в скрипте стоит 2).
На вход скрипту подается файл, в котором перечисленны все страницы, найденные SAPE (его можно скачать с самого SAPE).
<?php
function getUrlContents($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
$data = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
curl_close($ch);
return array($httpCode, $data, $contentType);
}
function check($url) {
$ya = "http://www.yandex.ru/yandsearch?rpt=rad&text=".
urlencode("url=\"$url\" | url=\"www.$url\"");
echo "Request $ya\n\n";
list($code, $data, $contentType) = getUrlContents($ya);
$data = mb_convert_encoding($data, 'windows-1251', 'utf-8');
return preg_match('/Искомая комбинация слов нигде не встречается/', $data);
}
$home = './';
if (file_exists($home.'pages.ser'))
$pages = unserialize(file_get_contents($home.'pages.ser'));
else
$pages = file($home.'site_pages.xls');
$log = fopen($home.'pages.log', 'a');
for($i = 0; $i < 2; $i++) {
$page = preg_replace('/\/?\r?\n?$/', '', array_shift($pages));
$url = substr($page, 7, strlen($page) - 7);
echo 'Check '.$url.' ';
if (check($url)) {
fwrite($log, $page."\n");
echo "missing\n";
} else
echo "exists\n";
}
fclose($log);
$f = fopen($home.'pages.ser', 'w');
fwrite($f, serialize($pages));
fclose($f);
?>
Как вы уже, наверно, поняли, страницы, которые надо удалить из SAPE, соберутся в файле pages.log. Да, чтобы все заработало, нужно сохранить скрипт в файл с кодировкой windows-1251 или подправить строку, которая с яндекса получает данные.
Делать из этого сервис сейчас нет времени, но в будущем, может быть :).
Будут вопросы, спрашивайте в комментариях.








3 комментария:
Вчера я этот скрипт стартанул на одном особенно большом сайте. Вот уже меньше трети страниц осталось проверить :)
У яндекса сменился синтаксис, теперь надо убрать пробелы вокруг | в строке:
urlencode("url=\"$url\" | url=\"www.$url\"");
Полезный скриптик, спасибо :) Если непротив выложу у себя
Спасибо за дополнение!
Конечно, не против :)
Отправить комментарий