Мы решили раскрыть весь арсенал XHE для этой задачи. Причём, вопросы анонимности и возможности менять параметры браузера мы рассмотрим в отдельной статье, а тут расскажем что именно и как может эмулировать XWeb Human Emulator.
Что делает человек когда приходит на какой то сайт. Он его просматривает, перелистывая вверх вниз полосу прокрутки или колесо мыши, переходит по внутренним ссылкам. Всё это может делать Хуман.
Для работы с мышью в XHE есть объект $mouse, который может кликать правой и левой кнопкой мыши, передвигать мышь, прокручивать колесо мыши. При этом есть два режима, в которых работают функции этого объекта. Это в режиме отправки сообщений и в режиме реального использования курсора мыши. При работе с реальной мышью, вы не сможете пользоваться компом, и нужно будет что бы xhe был открыт на экране. Понятное дело, что этот режим не приемлем для работы в многопоточном режиме, та и вообще, хотелось бы иметь доступ к своему компу. Поэтому лучше работать через отправку сообщений. К режиму отправки сообщений относятся все функции, которые начинаются $mouse->send_*, например: $mouse->send_click или $mouse->send_wheel. Посмотреть описание объекта можно тут.
Для работы с клавиатурой в XHE используется объект $keyboard. Этот объект эмулирует нажатие кнопок клавиатуры. Он так же как объект $mouse может работать в двух режимах. В режиме отправки сообщений и нажатия реальных кнопок клавиатуры. И как в случае с мышью, к режиму отправки сообщений относятся все функции, которые начинаются $keyboard->send_*, например: $keyboard->send_key. Посмотреть описание объекта можно тут.
Для того что прокрутить скроллы в браузере можно использовать функции $browser->set_vertical_scroll_pos и $browser->set_horizontal_scroll_pos.
Для работы ссылками используется объект $anchor, с помощью него можно кликать по ссылкам получать по ним данные типа href и внутреннего текста, координаты и размеры, задавать на них фокус и многое многое другое. Посмотреть описание объекта можно тут.
Для ожидания на странице можно использовать функцию sleep(секунды);
Ниже приведу пример простой функции эмуляции действий пользователя на странице:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// функция эмуляции пользователя function emul_user() { // объявим глобальные объекты global $mouse,$browser,$textfile; // ожидаем - время паузы получим случайно от 1 до 3 секунд sleep(rand(1,3)); // покрутим колесо мыши вниз случайное количество раз $mouse->send_wheel(-rand(1,7),1200,300); // ожидаем - время паузы получим случайно от 1 до 5 секунд sleep(rand(1,5)); // получить размеры браузера $h = $browser->get_window_height(); // высота $w=$browser->get_window_width(); // ширина // пошлём движение мыши от 3 до 10 раз for($ii=0;$ii<rand(3,10);$ii++) { $mouse->send_move(rand(10,$w),rand(10,$h)); // сюда можно добавить случайную паузу $mouse->send_move(rand(10,$w),rand(10,$h)); $mouse->send_move(rand(10,$w),rand(10,$h)); $mouse->send_move(rand(10,$w),rand(10,$h)); } // ожидаем - время паузы получим случайно от 1 до 3 секунд sleep(rand(1,3)); // покрутим колесо мыши вверх $mouse->send_wheel(rand(1,5),1200,300); // ожидаем - время паузы получим случайно от 1 до 3 секунд sleep(rand(1,3)); } |