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

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.
  2. 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
    Ссылка сдохла.
     
  3. 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
  4. 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);
    }

     
  5. 1profit

    1profit New Member

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

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

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

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

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

    Юго 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.
  8. extjs

    extjs Member

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

    SsSsSr New Member

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

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    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);
     
    _________________________
  11. b3

    b3 Banned

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

    CE/l/lEP New Member

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

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

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

    эххх, нет слов, одни эмоции.
     
  13. 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.
  14. 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)# выводит количество адресов с открытым портом.


     
  15. 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
     
  16. littlebig

    littlebig New Member

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

    artkar Well-Known Member

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

    winstrool ~~*MasterBlind*~~

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

    artkar Well-Known Member

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

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

    wanessa New Member

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