Полезные скрипты

Discussion in 'PHP' started by SMiX, 2 Nov 2006.

  1. scanislav

    scanislav Elder - Старейшина

    Joined:
    25 Jun 2010
    Messages:
    87
    Likes Received:
    22
    Reputations:
    31
    ICQ Bot

    Не знаю, тот ли раздел, но вот кто-то пытался залить мне на сервак :D

    https://gist.github.com/4023169
     
    avin likes this.
    1. Sat-hacker

      Sat-hacker New Member

      Joined:
      19 May 2012
      Messages:
      98
      Likes Received:
      0
      Reputations:
      -10
      Есть у кого-то что то подобное?
      http://forum.antichat.ru/showpost.php?p=1151651&postcount=635
      Ссылка сдохла.
       
      1. GAiN

        GAiN Elder - Старейшина

        Joined:
        2 Apr 2011
        Messages:
        2,550
        Likes Received:
        172
        Reputations:
        99
        Блокировка 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();
        }
        ?>
         
        #1143 GAiN, 28 May 2013
        Last edited: 28 May 2013
        1. scanislav

          scanislav Elder - Старейшина

          Joined:
          25 Jun 2010
          Messages:
          87
          Likes Received:
          22
          Reputations:
          31
          Определение 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($cymruDNS_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);
          }

           
          1. 1profit

            1profit New Member

            Joined:
            29 Jun 2013
            Messages:
            0
            Likes Received:
            0
            Reputations:
            0
            подскажите актуальный скрипт для отлова ботов на сайте :(
            Либо кто разбирается подскажите алгоритм создания таких скриптов
             
            1. scanislav

              scanislav Elder - Старейшина

              Joined:
              25 Jun 2010
              Messages:
              87
              Likes Received:
              22
              Reputations:
              31
              Тема большая, боты бывают разные.

              Чтоб оценить масштаб, советую взглянуть на сорцы в странице регистрации на гугло-групах. Это детективный роман почти. И это только что видно на клиенте. На сервере разумеется тоже дофига проверок.

              Можно обойтись меньшей кровью, если знать повадки интересующих ботов - заголовки иногда не совсем такие или скрипты не вполне корректно исполняются. Хотелось бы конкретики, конечно. универсального оружия нет.
               
              1. Юго

                Юго Member

                Joined:
                2 Feb 2011
                Messages:
                0
                Likes Received:
                77
                Reputations:
                17
                Скрипт для чека мыл на валидность:

                PHP:
                // Открываем сокет
                $fp fsockopen('pop.mail.ru'110$errNo$errStr10);
                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);

                Там где в квадратных скобках [] подстовляем логин и дальше пасс.
                Вам остается только создать цикл по перебору логов из файла и подключить цикл по работе с прокси, получится отличная вещь!
                 
                2 people like this.
                1. extjs

                  extjs Member

                  Joined:
                  23 Jun 2013
                  Messages:
                  31
                  Likes Received:
                  6
                  Reputations:
                  0
                  устарел с ipv6 не будет робить
                   
                  1. SsSsSr

                    SsSsSr New Member

                    Joined:
                    11 Oct 2012
                    Messages:
                    0
                    Likes Received:
                    2
                    Reputations:
                    1
                    скрипт полного архивирования и копирования сайта WP и базы данных исходя из config.php не встречался никому?
                     
                    VulturRe likes this.
                    1. winstrool

                      winstrool ~~*MasterBlind*~~

                      Joined:
                      6 Mar 2007
                      Messages:
                      1,414
                      Likes Received:
                      911
                      Reputations:
                      863
                      Столкнулся с такой проблемой, что нужен был сканер файлов, папок и под папок на пхп из текущей директории, пришлось чуток повозиться, в итоге выдернул с одного сканера шеллов и чуток подправил, может кому пригодится:
                      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);
                       
                      _________________________
                      1. b3

                        b3 Banned

                        Joined:
                        5 Dec 2004
                        Messages:
                        2,170
                        Likes Received:
                        1,155
                        Reputations:
                        202
                        на рдоте в полезных мелочах есть в одну строку данный сканер для использования в GET
                         
                        1. CE/l/lEP

                          CE/l/lEP New Member

                          Joined:
                          13 Dec 2011
                          Messages:
                          12
                          Likes Received:
                          3
                          Reputations:
                          0
                          хоть бы смотрели что и откуда копируете.

                          getData функция из ниоткуда берется?
                          CRLF эта константа тоже из воздуха взялась?

                          Что еще за цикл по работе с прокси? Вы хоть представляете как происходит коннект socks->smtp/pop?

                          эххх, нет слов, одни эмоции.
                           
                          1. Anwy

                            Anwy Elder - Старейшина

                            Joined:
                            16 Dec 2004
                            Messages:
                            265
                            Likes Received:
                            232
                            Reputations:
                            45
                            Немного 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("&nbsp;млн","000000",$str);
                            $str=str_replace("&nbsp;тыс.","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";
                            ?>
                             
                            2 people like this.
                            1. Orakul

                              Orakul New Member

                              Joined:
                              24 Jun 2013
                              Messages:
                              14
                              Likes Received:
                              0
                              Reputations:
                              0
                              четыре дня чтива 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)# выводит количество адресов с открытым портом.


                               
                              1. Orakul

                                Orakul New Member

                                Joined:
                                24 Jun 2013
                                Messages:
                                14
                                Likes Received:
                                0
                                Reputations:
                                0
                                был лог 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. littlebig

                                  littlebig New Member

                                  Joined:
                                  11 Feb 2016
                                  Messages:
                                  1
                                  Likes Received:
                                  0
                                  Reputations:
                                  0
                                  а есть какой нибудь скрипт по типу экранной лупы на сайт?
                                   
                                  1. artkar

                                    artkar Well-Known Member

                                    Joined:
                                    14 Nov 2016
                                    Messages:
                                    350
                                    Likes Received:
                                    331
                                    Reputations:
                                    6
                                    А есть такой скрипт, чтобы он :
                                    1 открыл гугел
                                    2 сделал запрос
                                    3 в выводе нашел нужный сайт и открыл его
                                    ????
                                     
                                    1. winstrool

                                      winstrool ~~*MasterBlind*~~

                                      Joined:
                                      6 Mar 2007
                                      Messages:
                                      1,414
                                      Likes Received:
                                      911
                                      Reputations:
                                      863
                                      Когда-то писал подобный скрипт под хауман эмулятор(Лицензию). суть была в поведенческом факторе.
                                       
                                      _________________________
                                      1. artkar

                                        artkar Well-Known Member

                                        Joined:
                                        14 Nov 2016
                                        Messages:
                                        350
                                        Likes Received:
                                        331
                                        Reputations:
                                        6
                                        Да в принципе открыть и сделать запрос, не сложно. Проверить тот ли сайт тоже не сложно, по паре ключевых слов. Вот перебор гуглового вывода не представляю как делается, там у него сложно как то, не тупой html.

                                        Наверняка кто-то делал уже......
                                        ??
                                         
                                        1. wanessa

                                          wanessa New Member

                                          Joined:
                                          21 Nov 2011
                                          Messages:
                                          14
                                          Likes Received:
                                          1
                                          Reputations:
                                          0
                                          Может у кого то завалялся простенький скрипт калькулятора калорий для сайта?