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\"");
Полезный скриптик, спасибо :) Если непротив выложу у себя
Спасибо за дополнение!
Конечно, не против :)
Отправить комментарий