Нужна прога которая следила бы за присутствием моей ссылки/HTML/JavaScript кода на чужых сайтах. Вчера целый день гуглил, сегодня Ачат перекаповал - не нашол Помогите...
Автоматом или полу автоматом? Готовое решение не предложу (принципильно) но дам направление Список ресурсов + PHP/Perl скрипт - тянеш страниц с ресурсов по списку + Загоняеш в регулярку и ищеш свой код + не нашол , отправляеш себе мыло Это все в крон (под винду тоже есть порт) Примерно с полтинник строк кода
Да какую нибуть... Любая помощ или инфо будет очень полезна ! Нужно чтобы скрипт/прога обхажывала указанные сайты и их страницы в поиске нужного кода, в конце показавала результат. Желательно обойтись без спама на мыло Текущий список сайтов ~ 50 штук, будет стремительно увеличиватся...
Пишеш php скрипт. Гет страницы, парсинг, запись результов в файл. А вот чтоб следить чтоб ссылка находилась в видимом поле низнаю и как.
код написал, но только есть одна загвоздка. не могу придумать как найти нужную ссылку на всей странице ? Что в preg_match нужно написать, чтобы он нашёл нужный текст ? ТС, вид у ссылки какой ? <a href="http://antichat.ru">ANTICHAT.RU</a> ?
@+casper+ На этом варианте остановлися... @geforse Надо еще придумать как найти ссылку на ВСЕХ остальных станицах сайта =) Тоесть, скрипт должен искать линки, ведущие на страницы сканируемого сайта и проверять о наличии кода там (можно и обойтись... но не желательно). Вид ссылки может быть разный, надо искать это <a href="http://antichat.ru С JavaScript-ом, думаю будет лекче, он один для всех, но спец-символов полно... Еще думаю - не лучше ли будет, впарить еще один JavaScript к линкам/коду который будет орать моему серверу - "Я на http://antichat.ru/index.php !". Но тогда могут вырезать ссылку и оставить только оратора =) Иду доки курить, скрипты искать, голову мучеть...
^_WhitE_DeMoN_^ Решили конкурировать с сапой, но на пхп все сделать? PHP: $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/>'; }
Как же это я не догадался Я больше cURL люблю, чем file_get_contents() Я имел ввиду что нужно написать в preg_match_all(), чтобы нашлась нужная ссылка Быть может найти все ссылки -> Поместить в массив -> Циклом проверять каждый элемент массива на соответствие с нужной...
@Gifts Большая конкуренция не получится =) Но надо же както выживать... Да и люди не любят back-link ставить, придется заставить =) Спасибо за код, очень помогло ! @geforse С cURL-ом не знаком... Все равно... Работаю над етим =) + Потом буду ставить, кто больше поможет... Спасибо всем ! Вот пока что накодил: Code: <?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 "Линк не найден."; } ?>
@geforse Ты мне об этом говорил ? PHP: <?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>'; ?> Дописал чуть Но какой метод лучше пользовать, preg_match или strpos ? Еще, база адресов у меня находится в .dat (txt) файле, вот в таком формате Code: циферки.числа||циферки.числа||0||0||текст||http://адрес.сайта/|| циферки.числа||циферки.числа||1||0||текст||http://адрес.сайта/|| Буду разжевовать как их выдернуть от туда и запихнуть напр. в $urls
Помогитее =) Вот че написал: PHP: <?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>'; ?> Но, скрипт ругается: Тоесть на foreach($urls[5] as $url) Че я не так делаю ? Поправьте меня... Доки курить нет времени и желания, дрыхнуть пора Но, Ачат не спит
Извини, но, я так думаю или ты правда перепутал чето... ?? //Edit: Какой же я придурок... PHP: <?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>'; ?> Разобрался... У кого есть идеи, пусть не стесняется Может лучше вариант предложит...
если это некий чекер, то лучше curl_multi или просто curl Code: $value = str_replace(array("http://","www.","//|","/|"),array('','','|','|'),$value); $urls = explode('||',$value); имхо лучше регуляркой Code: циферки.числа||циферки.числа||1||0||текст||http://адрес.сайта/|| preg_match_all('/([0-9.]*)\|\|([0-9.]*)\|\|1\|\|0\|\|([a-z]*)\|\|([^\n|$]*)/ims', $array, $match) как-то так Code: $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 строку
FireFenix Большое спасибо, люблю такие мнения. Да, это должно быть похоже на чекер С curl-ом не знаком... Особых преимуществ регулярных выражений сдесь не вижу, а и я о них еще только читаю А про индусский код - согласен, посмотрю что можно сделать, как только дочитаю... и еще - этот кусок не мой, один чувак его скинул в тему