ICQ Bot Не знаю, тот ли раздел, но вот кто-то пытался залить мне на сервак https://gist.github.com/4023169
Есть у кого-то что то подобное? http://forum.antichat.ru/showpost.php?p=1151651&postcount=635 Ссылка сдохла.
Блокировка ip по маске подсетей и useragent Скрипт для блокирования ip адресов, подсетей: PHP: <?php if($_SERVER['HTTP_X_FORWARDED_FOR']!=''){ $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }else{ $ip = $_SERVER['REMOTE_ADDR']; } if(preg_match("/95.78.|178.63.68.|88.198.49./",$ip)){die('Вас забанили');} ?> Скрипт для блокировки по Useragent строке: PHP: <?php $u = $_SERVER['HTTP_USER_AGENT']; if( $u == "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)" ) { echo "Вас забанили"; exit(); }?>
Определение AS и под-сети по IP Скрипт для определения AS-ки и сетки, которой принадлежит ИП. Полезно, чтоб определять поисковых ботов, заходы с проксей итд. Юзает сервис от Team Cymru PHP: function getIpInfo($ip) { $ip = explode('.', $ip); $cymru=$ip[3].'.'.$ip[2].'.'.$ip[1].'.'.$ip[0]. '.origin.asn.cymru.com'; $origin=dns_get_record($cymru, DNS_TXT); $asn = 0; $subnet=$ip.'/32'; if ($origin!==FALSE) { if (isset($origin[0]) && isset($origin[0]['txt'])) { $txt = $origin[0]['txt']; $txt = explode('|', $txt); $asn = (int)$txt[0]; $subnet = $txt[1]; } } return array('asn' => $asn, 'subnet'=>$subnet); }
подскажите актуальный скрипт для отлова ботов на сайте Либо кто разбирается подскажите алгоритм создания таких скриптов
Тема большая, боты бывают разные. Чтоб оценить масштаб, советую взглянуть на сорцы в странице регистрации на гугло-групах. Это детективный роман почти. И это только что видно на клиенте. На сервере разумеется тоже дофига проверок. Можно обойтись меньшей кровью, если знать повадки интересующих ботов - заголовки иногда не совсем такие или скрипты не вполне корректно исполняются. Хотелось бы конкретики, конечно. универсального оружия нет.
Скрипт для чека мыл на валидность: PHP: // Открываем сокет $fp = fsockopen('pop.mail.ru', 110, $errNo, $errStr, 10); print fgets($fp,1024).'Connect good!<br />'; // Посылаем Логин: fputs($fp,'USER [LOGIN_NAME]'.CRLF); print fgets($fp,1024).' :Login GOOD!<br />'; // Посылаем Пароль: fputs($fp,'PASS [PASSWORD]'.CRLF); print fgets($fp,1024).'password GOOD!<br />'; // Запрашиваем письмо № 26 fputs($fp,'RETR 26'.CRLF); $text.=getData($fp); Там где в квадратных скобках [] подстовляем логин и дальше пасс. Вам остается только создать цикл по перебору логов из файла и подключить цикл по работе с прокси, получится отличная вещь!
скрипт полного архивирования и копирования сайта WP и базы данных исходя из config.php не встречался никому?
Столкнулся с такой проблемой, что нужен был сканер файлов, папок и под папок на пхп из текущей директории, пришлось чуток повозиться, в итоге выдернул с одного сканера шеллов и чуток подправил, может кому пригодится: PHP: @ini_set('display_errors', '0'); $dir=getcwd(); function scan_directory_recursively($directory, $filter=FALSE) { if(substr($directory,-1) == '/') { $directory = substr($directory,0,-1); } if(!file_exists($directory) || !is_dir($directory)) { return FALSE; }elseif(is_readable($directory)) { $directory_list = opendir($directory); while (FALSE !== ($file = readdir($directory_list))){ if($file != '.' && $file != '..'){ $path = $directory.'/'.$file; echo $path."<br>"; if(is_dir($path)){ $directory_tree[] = array( 'path' => $path, 'kind' => 'directory', 'content' => scan_directory_recursively($path, $filter)); } } } closedir($directory_list); return TRUE; }else{ return FALSE; } } scan_directory_recursively($dir);
хоть бы смотрели что и откуда копируете. getData функция из ниоткуда берется? CRLF эта константа тоже из воздуха взялась? Что еще за цикл по работе с прокси? Вы хоть представляете как происходит коннект socks->smtp/pop? эххх, нет слов, одни эмоции.
Немного php скриптов , которые будут вам полезны Веб прокси PHP: echo file_get_contents($_GET['q']); $content=file_get_contents("http://урл.сайта/имя.скрипта?=".$url); //Использование Можно конечно использовать прокси - но это гораздо сложнее (надо парсить списки, собирать курл запрос и т.д.). А так просто размещаете на своих хостингах с разными IP файлик proxy.php, и потом скриптом случайно выбираете адрес и парсите с него. Только проверьте предварительно (некоторые хостеры закрывают доступ). Я такой начал использовать для твиттера (у него ограничение 150 запросов в час). Alexa Rank PHP: function alexa($url) { preg_match('#<div class="data .+?">(.*?)</div>#si', file_get_contents("http://www.alexa.com/siteinfo/{$url}"), $a); return trim(str_replace(",","",strip_tags($a[1])));} Вводим адрес сайта (без http://) - получаем его Alexa Rank. Алекса может обидится (раньше всячески препятствовал парсинга), так что аккуратнее. Яндекс: тИЦ PHP: function cy($url){ preg_match("/value=\"(.\d*)\"/", join("", file('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'.$url.'/')), $tic); return($tic[1]!=""?$tic[1]:0); } Довольно компактный парсер тИЦа. Может дольше обновляется, чем на кнопке/в каталоге. Писал не я (некоторые моменты я тоже не вкурил - работает, и ладно). Яндекс: число страниц в индексе PHP: <? function ya_stat($url){ $str=file_get_contents("http://yandex.ru/yandsearch?numdoc=10&serverurl={$url}&lr=1"); $str=str_replace(" млн","000000",$str); $str=str_replace(" тыс.","000",$str); preg_match('~<title>[^\d]*(\d+)[^\d]*</title>~',$str,$find); $res=$find[1]; if(preg_match("/<title>(.*)ничего не найдено(.*)<\/title>/s", $str)) {$res=0;} return $res; } $site="spryt.ru"; $ya=ya_stat($site); echo "$site = $ya"; ?> Обратите внимание на ограничения яндекса - он запросто может ограничить IP и выдавать ему капчу (если парсите сразу пачку сайтов). Между запросами лучше установить случайный интервал, вроде sleep(5,rand(1,5)); LiveInternet статистика PHP: function listat($url){ $content = file_get_contents("http://counter.yadro.ru/values?site=".$url); preg_match_all("|LI_([^ ]+) = (\d*);|",$content,$ok); for($i=0; $i<count($ok[1]); $i++) $info[$ok[1][$i]]=$ok[2][$i]; return $info;} //Использование $ff=listat($url); $w_vis=floor($ff[week_vis]/7); $w_hit=floor($ff[week_hit]/7);//Средняя посещаемость за последнюю неделю $li_vis=$ff[day_vis]; $li_hit=$ff[day_hit];//И дневная посещаемость echo "Week $w_vis / $w_hit, today $li_vis / $li_hit"; Информация для счетчика LiveInternet. Показывается для всех сайтов, которые не закрыли отображение инфы на счетчике (даже если сама статистика закрыта). Удобно как анализировать чужие сайты, так и просматривать суммарную посещаемость своих. Google Pagerank PHP: <? $googlehost='toolbarqueries.google.com'; $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5'; function StrToNum($Str, $Check, $Magic) { $Int32Unit = 4294967296; $length = strlen($Str); for ($i = 0; $i < $length; $i++) { $Check *= $Magic; if ($Check >= $Int32Unit) { $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit)); $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; } $Check += ord($Str{$i}); } return $Check; } function HashURL($String) { $Check1 = StrToNum($String, 0x1505, 0x21); $Check2 = StrToNum($String, 0, 0x1003F); $Check1 >>= 2; $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F); $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF); $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF); $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F ); $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 ); return ($T1 | $T2); } function CheckHash($Hashnum) { $CheckByte = 0; $Flag = 0; $HashStr = sprintf('%u', $Hashnum) ; $length = strlen($HashStr); for ($i = $length - 1; $i >= 0; $i --) { $Re = $HashStr{$i}; if (1 === ($Flag % 2)) { $Re += $Re; $Re = (int)($Re / 10) + ($Re % 10); } $CheckByte += $Re; $Flag ++; } $CheckByte %= 10; if (0 !== $CheckByte) { $CheckByte = 10 - $CheckByte; if (1 === ($Flag % 2) ) { if (1 === ($CheckByte % 2)) { $CheckByte += 9; } $CheckByte >>= 1; } } return '7'.$CheckByte.$HashStr; } function getch($url) { return CheckHash(HashURL($url)); } function get_pr($url) { global $googlehost,$googleua; $ch = getch($url); $fp = fsockopen($googlehost, 80, $errno, $errstr, 30); if ($fp) { $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n"; $out .= "User-Agent: $googleua\r\n"; $out .= "Host: $googlehost\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $data = fgets($fp, 128); $pos = strpos($data, "Rank_"); if($pos === false){} else{ $pr=substr($data, $pos + 9); $pr=trim($pr); $pr=str_replace("\n",'',$pr); return $pr; } } fclose($fp); } } $site="spryt.ru"; $pr=get_pr($site); echo "$site = $pr"; ?>
четыре дня чтива python вылились в парсер выбора ip адресов с открытым портом. PHP: #!/usr/bin/python3 #coding=utf-8 """ разработка скрипта для парсига лога программы Nmap при сканировании серверов домашний сети для выявления открытых портов на интерфейсах применяется в административных целях. Цель:скрипт должен принимать данные из командной строки или из файла и выводить данные """ import sys #import ipd #:import codecs #import re maska='Nmap scan report for'#будет хранить шаблон для строки содержащей ip port='80/tcp open http' numberserver=0 inp=0#хранит индекс скобки '(' за которой лежит ip -нужна для диапазона обрезания строк out=0#хранит индекс открывающейся скобки (хранит индекс открывающейся скобки (хранит индекс закрывающейся скобки ) intmaska='123456789'#шаблон для ip адресов wfile=open('тут путь к логу который нужно отпарсить','w',encoding='utf8')#создает файл для хранения открытых серверов file=open('skan_80port','r')# загружаю файл в переменную file не забыть закрыть файл в конце программы!!!! strin=file.read()#strin строка file.close#закрытие файла с не отпарсенной информацией sfile=strin.split('\n')# sfile работает как список coun=0#счетчик для привязки ip адреса к своему порту for line in sfile: if maska in line:#maska'Nmap skan report for' s_ip=line#сохраняю строку с ip для будущего парсинга если порт открыт if port in sfile[coun+3]: #если порт открыт то выводить статус порта и адрес ip if s_ip.count(')'): #если ip адрес в скобках закрыт для айпишников со скобками for i in s_ip: inp=(s_ip.find('('))+1 out=(len(s_ip))-1 s_ip=s_ip[inp:out] inp=0 print(s_ip) wfile.write(s_ip+'\n')#запись открытого порта:сервера numberserver+=1 break else: for i in s_ip:#запустить индексацию с конца строки inp+=1 if i in intmaska: out=len(s_ip) s_ip=s_ip[inp:out] print(s_ip) wfile.write(s_ip+'\n')#запись открытого порта:сервера inp=0 numberserver+=1 break coun+=1 else: coun+=1 wfile.close# закрываю файл с отпарсенными серверами print(numberserver)# выводит количество адресов с открытым портом.
был лог nmap таким HTML: Nmap scan report for host-128-13-52-24.midco.net (24.52.13.128) Host is up (0.27s latency). PORT STATE SERVICE 445/tcp filtered microsoft-ds Nmap scan report for fn128-static42.fariya.com (14.192.128.42) Host is up (0.27s latency). PORT STATE SERVICE 445/tcp filtered microsoft-ds Nmap scan report for c-174-60-27-74.hsd1.pa.comcast.net (174.60.27.74) Host is up (0.24s latency). PORT STATE SERVICE 445/tcp filtered microsoft-ds Nmap scan report for 197.106.70.218.cq.cq.cta.net.cn (218.70.106.197) Host is up (0.33s latency). PORT STATE SERVICE 445/tcp filtered microsoft-ds Nmap scan report for OTWAON23-1279656571.sdsl.bell.ca (76.70.2.123) Host is up (0.23s latency). PORT STATE SERVICE 445/tcp filtered microsoft-ds
А есть такой скрипт, чтобы он : 1 открыл гугел 2 сделал запрос 3 в выводе нашел нужный сайт и открыл его ????
Да в принципе открыть и сделать запрос, не сложно. Проверить тот ли сайт тоже не сложно, по паре ключевых слов. Вот перебор гуглового вывода не представляю как делается, там у него сложно как то, не тупой html. Наверняка кто-то делал уже...... ??