Просмотр полной версии : Нужна прога для мониторинга сайтов
^_WhitE_DeMoN_^
26.08.2009, 20:57
Нужна прога которая следила бы за присутствием моей ссылки/HTML/JavaScript кода на чужых сайтах.
Вчера целый день гуглил, сегодня Ачат перекаповал - не нашол :( Помогите...
POS_troi
26.08.2009, 22:27
Автоматом или полу автоматом?
Готовое решение не предложу (принципильно) но дам направление
Список ресурсов +
PHP/Perl скрипт - тянеш страниц с ресурсов по списку +
Загоняеш в регулярку и ищеш свой код +
не нашол , отправляеш себе мыло
Это все в крон (под винду тоже есть порт)
Примерно с полтинник строк кода
^_WhitE_DeMoN_^
27.08.2009, 00:31
Да какую нибуть... Любая помощ или инфо будет очень полезна ! Нужно чтобы скрипт/прога обхажывала указанные сайты и их страницы в поиске нужного кода, в конце показавала результат. Желательно обойтись без спама на мыло :D Текущий список сайтов ~ 50 штук, будет стремительно увеличиватся...
+casper+
27.08.2009, 01:01
Пишеш php скрипт. Гет страницы, парсинг, запись результов в файл. А вот чтоб следить чтоб ссылка находилась в видимом поле низнаю и как.
код написал, но только есть одна загвоздка.
не могу придумать как найти нужную ссылку на всей странице ?
Что в preg_match нужно написать, чтобы он нашёл нужный текст ?
ТС, вид у ссылки какой ?
<a href="http://antichat.ru">ANTICHAT.RU</a> ?
^_WhitE_DeMoN_^
27.08.2009, 17:59
@+casper+ На этом варианте остановлися...
@geforse Надо еще придумать как найти ссылку на ВСЕХ остальных станицах сайта =) Тоесть, скрипт должен искать линки, ведущие на страницы сканируемого сайта и проверять о наличии кода там (можно и обойтись... но не желательно). Вид ссылки может быть разный, надо искать это <a href="http://antichat.ru
С JavaScript-ом, думаю будет лекче, он один для всех, но спец-символов полно...
Еще думаю - не лучше ли будет, впарить еще один JavaScript к линкам/коду который будет орать моему серверу - "Я на http://antichat.ru/index.php !". Но тогда могут вырезать ссылку и оставить только оратора =)
Иду доки курить, скрипты искать, голову мучеть...
^_WhitE_DeMoN_^
27.08.2009, 19:13
не могу придумать как найти нужную ссылку на всей странице ?
Загоняем страницу в переменную с file_get_contents()
^_WhitE_DeMoN_^ Решили конкурировать с сапой, но на пхп все сделать? :D
$input = file_get_contents('Страниццо');
$array = array('<a href="http://ссылка1">http://ссылка1</a>', '<a href="http://ссылка2">http://ссылка2</a>', 'вообще любой текст');
foreach($array as $one)
{
echo 'Текст '.$one.(strpos($input,$one)!==false?' есть ':' отсутствует ').'на странице <br/>';
}
Загоняем страницу в переменную с file_get_contents()
Как же это я не догадался :D
Я больше cURL люблю, чем file_get_contents()
Я имел ввиду что нужно написать в preg_match_all(), чтобы нашлась нужная ссылка
Быть может найти все ссылки -> Поместить в массив -> Циклом проверять каждый элемент массива на соответствие с нужной...
^_WhitE_DeMoN_^
27.08.2009, 20:06
@Gifts Большая конкуренция не получится =) Но надо же както выживать... Да и люди не любят back-link ставить, придется заставить =)
Спасибо за код, очень помогло !
@geforse С cURL-ом не знаком... Все равно...
Работаю над етим =)
+ Потом буду ставить, кто больше поможет... Спасибо всем !
Вот пока что накодил:
<?php
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nReferer: http://для.красоты\n "
)
);
$context = stream_context_create($opts);
$a = file_get_contents('http://ищем.сдесь', false,$context);
if (preg_match("/<a href=\"http:\/\/искомый.линк/i", $a)) {
echo "Линк найден.";
} else {
echo "Линк не найден.";
}
?>
^_WhitE_DeMoN_^
27.08.2009, 23:57
@geforse Ты мне об этом говорил ?
<?php
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nReferer: http://откуда.пришол/\n "
)
);
echo '<html><head><style type="text/css">#ok {font-weight: bold; color: green; } #no {font-weight: bold; color: red; }</style></head><body>';
$context = stream_context_create($opts);
$urls = array('сайт.1', 'сайт.2', 'и.так.далее');
foreach($urls as $url)
{
$input = file_get_contents('http://'.$url, false,$context);
$array = array('a href="http://че.ищем', 'a href="http://может.еще.че', 'название.нашего.сервиса');
foreach($array as $one)
{
echo $url.' >>> '.$one.(strpos($input,$one)!==false?' <p id="ok">OK</p> ':' <p id="no">BAD</p> ').'<br/>';
}
}
echo '</body></html>';
?>
Дописал чуть :D
Но какой метод лучше пользовать, preg_match или strpos ?
Еще, база адресов у меня находится в .dat (txt) файле, вот в таком формате циферки.числа||циферки.числ а||0||0||текст||http://адрес.сайта/||
циферки.числа||циферки.числ а||1||0||текст||http://адрес.сайта/||
Буду разжевовать как их выдернуть от туда и запихнуть напр. в $urls
@geforse Ты мне об этом говорил ?
Нет, это не мой код
^_WhitE_DeMoN_^
28.08.2009, 20:23
Да знаю что не твой :D
Я про это: Быть может найти все ссылки -> Поместить в массив -> Циклом проверять каждый элемент массива на соответствие с нужной...
^_WhitE_DeMoN_^
30.08.2009, 02:02
Помогитее =)
Вот че написал:
<?php
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nReferer: http://откуда.пришли/\n "
)
);
echo '<html><head><style type="text/css">#ok {font-weight: bold; color: green; } #no {font-weight: bold; color: red; }</style></head><body>';
$line = file('http://мой.сайт/папка/index.dat', FILE_IGNORE_NEW_LINES);
foreach($line as $value) {
if(strlen($value)<20) continue;
$value = str_replace(array("http://","www.","/"),array('','',''),$value);
$urls = explode('||',$value);
$context = stream_context_create($opts);
foreach($urls[5] as $url) {
$input = file_get_contents('http://'.$url, false,$context);
$array = array('a href="http://че.ищем', 'a href="http://может.еще.че', 'название.сервиса');
foreach($array as $one) {
echo $url.' >>> '.$one.(strpos($input,$one)!==false?' <p id="ok">OK</p> ':' <p id="no">BAD</p> ').'<br/>';
}
}
}
echo '</body></html>';
?>
Но, скрипт ругается:
Warning: Invalid argument supplied for foreach() in /home/....../parser.php on line 18
Тоесть на foreach($urls[5] as $url)
Че я не так делаю ? Поправьте меня... Доки курить нет времени и желания, дрыхнуть пора :( Но, Ачат не спит ;)
^_WhitE_DeMoN_^
30.08.2009, 16:07
это значит, что у тебя не передаётся массив в $urls[5]
:confused: Но echo urls[5]; выводит все нужные елементы массива ..? Предложте решение...
:confused: Но echo urls[5]; выводит все нужные елементы массива ..? Предложте решение...
Если срабатывает ехо,то эо не массив,а скорее элемент массива.Пробуй: $url as $array
^_WhitE_DeMoN_^
30.08.2009, 16:51
Извини, но, я так думаю или ты правда перепутал чето... $url as $array ??
//Edit:
Какой же я придурок...
<?php
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7\nReferer: http://откуда.пришол/\n "
)
);
echo '<html><head><style type="text/css">#ok {font-weight: bold; color: green; } #no {font-weight: bold; color: red; }</style></head><body>';
$line = file('http://мой.сайт/папка/index.dat', FILE_IGNORE_NEW_LINES);
foreach($line as $value)
{
if(strlen($value)<20) continue;
$value = str_replace(array("http://","www.","//|","/|"),array('','','|','|'),$value);
$urls = explode('||',$value);
$context = stream_context_create($opts);
$input = file_get_contents('http://'.$urls[5], false,$context);
$array = array('a href="http://че.ищем', 'a href="http://может.еще.че', 'Имя.нашего.сервиса');
foreach($array as $one)
{
echo $urls[5].' >>> '.$one.(strpos($input,$one)!==false?' <p id="ok">OK</p> ':' <p id="no">BAD</p> ').'<br/>';
}
}
echo '</body></html>';
?>
Разобрался...
У кого есть идеи, пусть не стесняется :D Может лучше вариант предложит...
FireFenix
31.08.2009, 17:59
если это некий чекер, то лучше curl_multi или просто curl
$value = str_replace(array("http://","www.","//|","/|"),array('','','|','|'),$value);
$urls = explode('||',$value);
имхо лучше регуляркой
циферки.числа||циферки.числ а||1||0||текст||http://адрес.сайта/||
preg_match_all('/([0-9.]*)\|\|([0-9.]*)\|\|1\|\|0\|\|([a-z]*)\|\|([^\n|$]*)/ims', $array, $match)
как-то так
$array = array('a href="http://че.ищем', 'a href="http://может.еще.че', 'Имя.нашего.сервиса');
foreach($array as $one)
{
echo $urls[5].' >>> '.$one.(strpos($input,$one)!==false?' <p id="ok">OK</p> ':' <p id="no">BAD</p> ').'<br/>';
}
этот кусок вообще индусский код.... Если идёт выборка - такие вещи делаются регуляркой, если же просто проверка, то лучше вынести отдельно, чем лепить в 1 строку
^_WhitE_DeMoN_^
31.08.2009, 23:00
FireFenix Большое спасибо, люблю такие мнения.
Да, это должно быть похоже на чекер :D
С curl-ом не знаком...
Особых преимуществ регулярных выражений сдесь не вижу, а и я о них еще только читаю :)
А про индусский код - согласен, посмотрю что можно сделать, как только дочитаю... и еще - этот кусок не мой, один чувак его скинул в тему :D
А можно намного проще, просто посылать на гугл запросы в виде:
site:www.сайт.domen "href="твой сайт""
Расскажу что я юзал:
Есть бесплатная прога для мониторинга http://www.yccy.ru/ там много возможностей, но одна из:Пакетная проверка обратных ссылок(текста ссылки) в Яндексе, Google.
Также есть анализ беклинков на определенном сайте, можно тоже свой скрипт туда прикрутить, чтобы парсил определенный урл(твой) http://www.pr-cy.ru/link_extractor/
И сайт http://www.backlinkwatch.com но он выдает все беклинки которые проиндексированы
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot