Отсеять ботов при клике по ссылке

Тема в разделе "PHP", создана пользователем verfaa, 6 апр 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    373
    Симпатии:
    41
    Приветствую!
    Необходимо при клике по ссылке определять кто кликнул по ссылке - бот или живой человек.
    И в зависимости от этого отправлять клик либо в уники либо в боты.
    В связи с этим, хочу спросить как определить на PHP следующие параметры:

    - включен ли js
    - имеется ли мышь (курсор мыши)
    - есть ли флеш
    - принимает ли бот куки (хотя этот параметр принимают многие боты и его легко подделать, насколько я слышал)

    Буду рад услышать другие возможные параметры отличия бота от реального посетителя и пример как эти параметры проверить на PHP
     
    Шумадан нравится это.
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.723
    Симпатии:
    2.098
    Во время первого запроса к серверу невозможно определить наличие включённого javascript и флеш, по крайней мере - я не помню, чтоб такое было возможно - на клиенте должен отработать пользовательский сценарий для начала, результаты которого можно использовать для передачи какого-то скрытого параметра, в котором будет закодировано.

    насчёт мыши, тоже скорее всего нету ничего, опять таки, на клиенте должно быть определено и передано на сервер.
     
    SilverGhost и verfaa нравится это.
  3. alffcpu

    alffcpu Создатель

    Регистр.:
    23 окт 2013
    Сообщения:
    22
    Симпатии:
    56
    Может странно прозвучит, но опираясь на мысль в посте выше. Если вы ссылку на своем сайте делаете, то можно написать что-то простенькое (или не очень) на jquery/javascript. Что после старта программы именно к этим ссылкам запишет дополнительный параметр в url. Таким образом вы сразу проверите включен ли javascript. В этом коде можете закодировать информацию о поддержке флеша. Насчет курсора мыши я вот лично не уверен возможно ли это вообще проверить. Ну и заодно установить проверочную куку у него и ее добавить в код в url.

    Вобщем при старте мы имеем что-то типa:
    Код:
    <a href="http://domain.com?track=0">LINK</a>
    
    После старта страницы смотрим есть ли flash (скорее всего тут поможет swfobject), тут же можно использовать что-то типо modernizr (ну или его вот собственно), чтобы определить параметры пользовательского агента (как вариант если агент пользователя представляется как известный браузер), проверить поддержку чего-нить из css3 и html5. Далее установить куку (как вариант установить наш информационный код в определенную куку в дополнении к параметру url). Дописать информационный код в url.

    После работы скрипта мы имеем:
    Код:
    <a href="http://domain.com?track=c29tZWRhdGEgZ29lcyBoZXJl">LINK</a>
    
    ну и уже когда запрос придет подобный на сервер, разбираем код (если он вообще пришел без кода, те == 0 то javascript выключен или бот) если таки код установлен то разбираем его и смотрим что есть и чего нет. В довершении если установили куку с кодом, сравниваем и узнаем пришел ли он со страницы прямо или нет, и как у него куки вообще работают.

    То что я предлагаю конечно достаточно ограниченный потенциал имеет. И извиняюсь за отсутствия конкретики, просто не совсем уверен что он по сути вопроса.
     
    Шумадан нравится это.
  4. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Точно такая же проблема и у меня сейчас.
    Только вопрос немного другой, боты же не юзают js? То есть если в ссылке написать onclick="javascript:setrate($id)" ну и функция setrate отправка запроса для сохранения ип адреса и так далее в бд. С человеком сработает, а вот с ботом как? Задействует он onclick?
     
  5. ishkval

    ishkval Постоялец

    Регистр.:
    2 окт 2013
    Сообщения:
    102
    Симпатии:
    35
    Насчет мыши - есть свойство хтмл OnMouseOver но вопрос как его использовать в данном случае
     
  6. _sergey_

    _sergey_ Писатель

    Регистр.:
    1 окт 2008
    Сообщения:
    1.744
    Симпатии:
    1.154
    Так есть же событие, редирект при наведении на ссылку курсора мыши с помощью onmouseover - по идее, раз мышь, то уже не бот. А прочие клики, куда-то отправлять в другое место или лучше вообще не отправлять, чтобы под клоакинг не попасть.
     
  7. ishkval

    ishkval Постоялец

    Регистр.:
    2 окт 2013
    Сообщения:
    102
    Симпатии:
    35
    В OnMouseOver всёравно в исходнике видно ссылку и бот может её скопировать вполне
     
  8. _sergey_

    _sergey_ Писатель

    Регистр.:
    1 окт 2008
    Сообщения:
    1.744
    Симпатии:
    1.154
    Так можно, ссылку подгружать откуда-то, чтобы её не было в коде страницы или шифровать. В общем, варианты разные есть.
     
  9. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.723
    Симпатии:
    2.098
    так по странице можно и без изспользования манипулятора ходить, строго по табам. хотя как быстрый вариант определения мыши подойдёт прототип скрипта
    Код:
    <script type="text/javascript">
    
    window.addEventListener("load",
        function()
        {
            document.body.addEventListener("mousemove",
                function()
                {
                    alert("Welcome real user.")
                },
                false);
        },
        false);
    
    </script>
    его можно грамотней оформить с использованием jquery
     
    SilverGhost и latteo нравится это.
  10. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Есть кседант, хрумер, фантомjs, selenium
    Знание о существование таких программ, отобьёт у Вас интерес к написанию подобного ПО.
    Если конечно результат нужен действительно качественный, то увы придётся заниматься статистическим анализом поведения пользователя.
    А не тупо проверить мышь.
     
    Sapral, Шумадан и latteo нравится это.
Статус темы:
Закрыта.