JavaScript защита и HumanEmulator

Тема в разделе "PHP", создана пользователем Super_BOT, 23 сен 2010.

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

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Народ, кто-нибудь сталкивался с таким, и каким образом можно обойти яваскрипт защиту?
    Так же интересует по какому принципу она работает, и на какие элементы ставится?
    Выяснил что если допустим при регистрации заполнять поля формы на автомате, то защита срабатывает, если же ставить посимвольное заполнение,то срабатывает через раз. Пробовал вводить мышкой по странице, не помогает, кто что может подсказать?
     
  2. mc-alkin

    mc-alkin

    Регистр.:
    17 июл 2009
    Сообщения:
    164
    Симпатии:
    100
    а отключать яву вообще пробовал?
     
  3. Kewin

    Kewin Постоялец

    Регистр.:
    15 сен 2010
    Сообщения:
    73
    Симпатии:
    8
    Какая именно защита, если можно, пример в студию
     
  4. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Вот пример

    http://unicorns.5bb.ru/register.php

    С отключенной явой запрещена регистрация
     
  5. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    там вообще жабозащиты нет, может куки не почистил? :) с кодом ниже, получил сообщение в цитате, меил пришел

    PHP:
    $input->set_value_by_name('req_username','asdasdpoiu');
    $input->set_value_by_name('req_email1','satih82@gmail.com');
    $input->set_value_by_name('req_email2','satih82@gmail.com');
    $button->click_by_number(0);
    пс: mc-alkin, отключать js при реге почти нигде не работает, во всех сайтах с которыми имел дело в последнее время, пишут "включи js", более или менее вежливо :)
     
    Super_BOT нравится это.
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Хз почему XHE не работает, глючит наверно, при отправке формы формируется 2 значения form_etc = b8891285b1d0e0be199220de1b851c32ac540d59 и form_etc= Netscape.::.5.0 (Windows; ru)
    которые нужно либо генерироватьс помощью пхп работу js либо вытащить уже выполненный код из html-
    HTML:
    
    <input type="hidden" value="da601285b1d0e0be199220de1b851c321ac4c15f" name="form_key">
    <input type="hidden" value="Netscape.::.5.0 (Windows; ru)" name="form_etc">
    
     
  7. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Странно, у меня таким образом срабатывает защита. Точнее так, если запустить скрипт, и ничего не нажимать на клавиатуре, и мышкой не юлозить по браузеру, то срабатывает ява защита. Дальше пробовал сет фокусом устанавливать фокус на элементы ввода, стало получше, но все равно срабатывает через раз, еще пробывал вводить через клавиатуру посимвольно, вроде бы это самый верный способ, полностью эмуляция действий человека, разве что мышки не хватает, и опять переодически вылазиет яваскрипт защита, чет не пойму на какие элементы она у них повешана :(

    P.S. как вариант, я так понимаю на яндексе при регистрации так же используется яваскрипт защита
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    На отправку формы регистрации срабатывает событие onSumbit которое прописывает 2 скрытые формы, затем данные отправляются. Есть вариант что данные что ты вводишь неккоректные- там стоит простая валидация, возможно из-за неё ничего не пашет. Ещё есть вариант после зполнения формы принудительно вызвать
    process_form(document.getElementById('register'))
     
    Super_BOT нравится это.
  9. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    Данные вводятся корректный, а на счет принудительного вызыва функции process_form(document.getElementById('register'))

    Код:
    <form id="register" class="container" method="post"
     action="http://unicorns.5bb.ru/register.php?action=register" 
    onsubmit="this.register.disabled=true;if(process_form(this))
    {return true;}else{this.register.disabled=false;return false;}">
    В саммой форме, при событии onsubmit, получается еще определяется переменная this.register, так что наверно принудительно ее будет бессмысленно вызывать


    В самом теле страницы таких полей нету, они вроде как генерируются яваскриптом, как в них тогда можнго записать данные?
     
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    просто попробуй вызвать его после заполнения форм
    PHP:
    $browser->navigate("javascript: process_form(document.getElementById('register'));");
    PHP:
    $browser->call_java_script("process_form","document.getElementById('register')");
    хз как там правильно, и отписаться о результате
     
    Super_BOT нравится это.
Статус темы:
Закрыта.