Wednesday, May 5th, 2010
Часто встречаются ресурсы где текст вводится в яваскрипт боксе. Т.е. элемента к которому можно обратиться средствами Human Emulator’а как бы нет. Однако если использовать Firebug можно обнаружить, что набираемый текст появляется внутри каких либо тегов.
Т.е. фактически его можно просто туда вставить, делается это слудующим образом:
/* <div id="test1"><div id="test2"></div></div> */
function str_insert($insertstring, $intostring, $offset) {
$part1 = substr($intostring, 0, $offset);
$part2 = substr($intostring, $offset);
$part1 = $part1 . $insertstring;
$whole = $part1 . $part2;
return $whole;
}
$elem = "tst2"
$page = $webpage->get_body();
$pos = strpos($page, $elem);
$page = str_insert("Hello Kitty", $page, $pos + strlen($elem) + 1);
$webpage->set_body ($page);
$browser->wait_for(10,1);
подмена страницы =) Думаю идея понятна.
Posted in Human Emulator | 2 Comments »
Tuesday, April 20th, 2010
Речь пойдет о такой замечательно программе, как Human Emulator. Мне кажется это оптимальное сочетание простоты и скорости написания небольших скриптов с довольно мощьным функционалом. На нем даже можно написать полоноценную спамилку. Вообщем продукт безусловно хороший и полезный, свою стоимость он оправдывает на 100%.
Программировать на Human Emulator – легко, но как всегда есть типовые задачи для которых неплохо было бы иметь сниппеты. Итак сниппет первый – автоконфирмер регистрацый которые приходят на ящик gmail. Суть проста – любой кодер без проблем уловит идею и перепишет как ему нужно.
Вызывается примерно так
gmail_confirmer($gmail, $pass, 'http://............./validate/', "Welcome to site ....");
Как видно 3ий параметр это с чего начинается строчка на которую нужно кликнуть, чтобы подтвердить регистрацию, а 4ый – это заголовок приходящего e-mail.
function gmail_confirmer($usr_mail, $usr_pass, $site_url, $search_str) {
include("include_all.php");
init_browser();
$browser->wait(3);
sleep(rand(1,3));
$browser->navigate("gmail.com");
$browser->wait(2);
$input->set_focus_by_name("Email");
$input->set_value_by_name("Email", $usr_mail);
$browser->wait(2);
$input->set_focus_by_name("Passwd");
$input->set_value_by_name("Passwd", $usr_pass);
$browser->wait(2);
$button->click_by_name("signIn");
$browser->wait(rand(2,6));
$anchor->click_by_inner_text("basic HTML", false);
$browser->wait(rand(2,6));
$anchor->click_by_inner_text($search_str, false);
$browser->wait(rand(2,6));
$urls = $anchor->get_all_urls();
$urls = explode("", $urls);
$url = array_find($site_url, $urls);
//$debug->message_box($url);
$browser->wait(3);
$browser->navigate($url);
$browser->wait(3);
return true;
}
Несколько пояснений include(“include_all.php”); – для того чотбы без проблем использовать объекты Human Emulator внутри функций. Выглядит файл примерно так :
// Yo
global $browser;
global $anchor;
global $input;
global $listbox;
global $button;
global $radiobox;
global $checkbox;
global $debug;
global $textarea;
global $inputimage;
global $captcha;
global $webpage;
global $app;
global $init_browser;
global $textfile;
global $btn;
global $inputfile;
global $debug;
global $frame;
global $form;
init_browser(); – инициализирует браузер. тут можно делать что угодно, очищать куки, делать рефреш.
Posted in Code, Human Emulator | 3 Comments »