фильтрация ботов на сайте

Discussion in 'PHP' started by GAiN, 11 Feb 2014.

  1. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    хочу пустить на сайт из ботов только гугл и яндекс, другие поисковые системы мне не нужны
    а так же вообще нужно блокировать всех чей useragent не человеческий.
    как это всё реализовать правильно ?
    можно искать списки ботов, но ботов всё больше становится и всех так не внесёшь
    можно ли прописать в .htaccess правило которое выполнит такие действия ?
     
  2. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Нет, это делается в robots.txt, вот так:
    Code:
    User-agent: MSNBot
    Disallow: /
    Тут , вроде полный список имен, хотя лучше погугли сам.
     
    #2 Sum.cogitans, 11 Feb 2014
    Last edited: 11 Feb 2014
  3. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    robots txt игнорируется многими собиралками контента и ботами, нужно блокировать на уровне хостинга
     
  4. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Звучит, как всемирный заговор банков. Хотя конечно - хозяин барин, можешь и через mod_rewrite в .htaccess:

    Code:
    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	RewriteCond %{HTTP_USER_AGENT} "MSNBot|BingPreview|..." [NC]
    	RewriteRule ^$ http://site.ru/hull.php [L,R=302]
    </IfModule>
     
    #4 Sum.cogitans, 11 Feb 2014
    Last edited: 11 Feb 2014
    2 people like this.
  5. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    я сделал вот так
    PHP:
    <ifmodule mod_rewrite.c>
    RewriteEngine on
    RewriteCond 
    %{HTTP_USER_AGENT"Mozilla/[1-9]\." [NC,OR]
    RewriteCond %{HTTP_USER_AGENT"Firefox/[1-3]\." [NC,OR]
    RewriteCond %{HTTP_USER_AGENTOpera/9\..*Version/(1[10]|[1-9])\. [NC,OR]
    RewriteCond %{HTTP_USER_AGENT"Opera/[1-8]\." [NC,OR]
    RewriteCond %{HTTP_USER_AGENT"MSIE [1-7]\." [NC]
    RewriteCond %{HTTP_USER_AGENT"Google/[1-9]\." [NC,OR]
    RewriteCond %{HTTP_USER_AGENT"Yandex/[1-9]\." [NC,OR]
    RewriteRule http://localhost/page.php [L]
    </ifmodule>
    ещё не на всех браузерах проверил но работает редирект

    можно ли сделать только что бы не выше указанные мною браузеры редиректились а те которые не соответствуют правилам - то есть не прописаны выше - должны отправляться по ссылке - а прописанные заходить на сайт как обычно?



    проверил, гугл и яндекс бот не фильтровались по
    таким правилам
    PHP:
    RewriteCond %{HTTP_USER_AGENT"Google/[1-9]\." [NC,OR] 
    RewriteCond %{HTTP_USER_AGENT"Yandex/[1-9]\." [NC,OR]

    под этим правилом прописал:
    PHP:
    SetEnvIfNoCase User-Agent "^Yandex" search_bot
    SetEnvIfNoCase User
    -Agent "^Googlebot" search_bot
    <Limit GET POST HEAD
    Order Allow,Deny
    Allow from all 
    Allow from env
    =search_bot 
    </Limit
    как фильтровать useragent по маске ?
    вот такой например что бы не проскочил
    Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
    yahoo слово по маске задать, где оно содержится то блокировать
     
  6. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Писать исключение для "всех кроме", практика сомнительная. Потом будешь мониторить выход новых версий браузеров и вечно править .htaccess? Я бы не советовал.

    А вот маску для ботов, действительно можно задать:

    Code:
    <IfModule mod_rewrite.c>
    	RewriteEngine on
    	RewriteBase /
    	RewriteCond %{HTTP_USER_AGENT} Yahoo [OR]
    	RewriteCond %{HTTP_USER_AGENT} Igde
    	[COLOR=Green]...etc[/COLOR]
    	RewriteRule (.*) - [F,L]
    </IfModule>
    
    Еще есть интересный ман в энциклопедии htaccess, да и вообще там много интересного: тык
     
    #6 Sum.cogitans, 12 Feb 2014
    Last edited: 12 Feb 2014
  7. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    я бы рискнул по браузерам фильтровать, есть где проверить эту теорию, только как сделать такой белый список, в котором всё что не в списке - то блокируется или редиректится?


    вообщем вопрос решён, всё получилось, испытание прошли отлично белый список работает
     
    #7 GAiN, 13 Feb 2014
    Last edited: 13 Feb 2014