Поступил вопрос от клиента, как вводить e-mail в поле при отправке письма в почте Яндекс.
Наш видео ответ.
Поступил вопрос от клиента, как вводить e-mail в поле при отправке письма в почте Яндекс.
Наш видео ответ.
Иногда, при ведении инфобизнеса возникает задача рассылки информации (например про акции, скидки и т.д.) своим подписчикам. Таким образом можно существенно увеличить поток ваших клиентов и как результат увеличить прибыль при ведении инфобизнеса. Но к сожалению, многие почтовые сервисы рассматривают такую рассылку как спам и блокируют ваш почтовый ящик. Один из возможных путей решения данной проблемы — использовать сервис рассылки сообщений webmailer.ru.
Предлагаем вашему вниманию скрипт, который автоматически рассылает письма при помощи сервиса webmailer.ru.
Скрипт работает следующим образом: есть список почтовых ящиков по которым надо осуществить рассылку. Скрипт заходит на сервис webmailer.ru, последовательно вводит адрес получателя,адрес отправителя, обратный адрес, тему сообщения и само сообщение. Распознает картинку капчи при помощи сервиса Antigate.com и нажимает кнопку отправить. Такой алгоритм в цикле применяется ко всем адресатам.
Скрипт на вход принимает файл с ящиками на которые необходимо отправить письма с акциями в формате один e-mail — одна строка:
kshakmakova@inbox.ru
vilor.kochenkov@mail.ru
izabella.vazova@mail.ru
Настройки скрипта:
// скрипт работает в режим отладки $dbg = true; // паузы ожидания $wt = 5; $wt_long = 10; // путь к файлу с почтовыми ящиками $path_to_mails = "data\\mails.txt"; // обратный адрес $from = "tatyanka.noskova@inbox.ru"; // тема сообщения $subject = "приветствие"; // само сообщение $message = "Привет. Давай знакомится"; // ключ антигейта - необходимо ввести свой $apikey = "";
Сам скрипт выглядит следующим образом:
navigate("about:blank");
sleep($wt_long);
$browser->clear_address_bar_history();
$browser->clear_cache();
$browser->clear_cookies("");
$browser->clear_history();
$browser->recreate();
sleep($wt);
// считываем файл с почтовыми ящиками
$arr_of_mails = array();
$arr_of_mails = file($path_to_mails, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
sleep($wt);
// главный цикл скрипта
for ($i = 0; $i < count($arr_of_mails); $i++)
{
$browser->navigate("webmailer.ru");
sleep($wt_long);
// вводим данные
// кому
$input->set_focus_by_name("to");
$keyboard->send_input($arr_of_mails[$i], 10);
sleep($wt);
// обратный адрес
$input->set_value_by_name("from", $from);
sleep($wt);
// тема сообщения
$input->set_focus_by_name("subj");
$keyboard->send_input($subject, 10);
sleep($wt);
// вводим само сообщение
$textarea->set_focus_by_name("message");
$keyboard->send_input( $message, 10);
sleep($wt);
// распознаем и вводим капчу
$captcha = "";
$captcha = $image->recognize_by_anticaptcha("/captcha.gif?id", "C:\\Temp\\tmp.jpeg", $apikey, 'http://antigate.com', true, 5, 120, 0, 0, 0, 0, 0, -1, 0);
sleep(2);
echo "капча: $captcha
";
$input->set_value_by_name("captcha_code", $captcha);
sleep($wt);
// кнопка отправить
$image->click_by_attribute("title", "Отправить", true);
sleep($wt_long);
}
debug_mess("скрипт закончил работу");
// Quit
$app->quit();
?>
Скрипт написан 07.10.2014 в Human Emulator 4.6.50 Advanced.
Данный скрипт демонстрирует на примере регистрации почты hotmail.com, как с помощью программы Human Emulator можно делать регистрацию на буржуйских сайтах.
Как и во всех подобных наших скриптах результат сохраняется в заданный файл в формате: мыло;пароль
На нашем сайте уже есть примеры подобных скриптов регистрация mail.ru, регистрация почты yandex.ru и регистрация почты rambler.ru.
Файл с зарегистрированными ящиками выглядит следующим образом:
liwotodab@hotmail.com;govkjnwbd1970
gucorepuli@hotmail.com;tncijojqrn1971
tucomumas@hotmail.com;micddzun1980
sudicawi@outlook.com;bmdmlsucdu1975
nugapewoja@hotmail.com;csvlella1983
boximesig@live.com;ufpesxstu1982
gakuqamuko@outlook.com;jupcwtnhm1988
Вся работа над распознаем капчи реализована с помощью сервиса antigate.com и для работы скрипта вам понадобится ключ с этого сервиса. Так же для работы скрипта понадобятся прокси. Прокси можно купить тут. При покупке проксей будьте внимательны, некоторые прокси запрещены для массовых регистраций.
Настройки скрипта:
// ключ антикаптчи
$apikey = "ключ антикапчи";
// путь куда сохранить картинку
$img_path = "C:\Temp\tmp.jpg";
// путь к файлу с результатами
$res_path = "res/accs.txt";
// user agent строки
$useragents = file("data/useragent.txt");
// язык данных аккаунта
$lang = "EN";
// скрипт работает в режим отладки
$dbg = true;
// путь к файлу с проксями
$str_proxy_path = "data/proxy.txt";
Сам скрипт выглядит следующим образом:
quit();
}
// перейти на hotmail
$browser->navigate("https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1363256646&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1049&id=64855&mkt=en-us&cbcxt=mai&snsc=1");
sleep($wt);
// проверяем прокси
$ii = 0;
while (!$anchor->is_exist_by_inner_text("Sign up now", true))
{
sleep(1);
if ($ii > 25)
{
debug_mess("Битый прокси
");
sleep($wt);
// удаляем строку с битым прокси из файла
rewrite($i_cur_proxy, $str_proxy_path);
// перезапускаем приложение
clear_and_restart();
}
$ii++;
}
echo "Кликаем по ссылке зарегистрироваться
";
// кликаем по ссылке зарегистрировать аккаунт
$anchor->click_by_inner_text("Sign up now", true);
sleep($wt);
// зарегистрировать аккаунт
$succ_reg = reg_mail_acc();
if ($succ_reg)
{
debug_mess("Регистрация успешна!!!");
}
else
{
debug_mess("Не удалось пройти регистрацию!!");
}
sleep($wt_long);
// чистим всю информацию и перезагружаемся
clear_and_restart();
debug_mess("скрипт закончил работу");
// Quit
$app->quit();
?>
Скрипт написан 15.09.2013 в Human Emulator 4.6.26 Advanced.
Данный пакет состоит из 5 скриптов регистрации почтовых аккаунтов в системах: Яндекс, Рамблер, Mail.ru, Yahoo и Hotmail.
Скрипты запускаются и работают в программе Human Emulator. В результате работы скриптов мы получаем файлы с аккаунтами в следующем формате:
uvazova@bk.ru;uwhrqaa
kamola.shurupova@mail.ru;nnlggwhz
efrem.barsukov@mail.ru;pitoqkbaz
serafim.efimov@mail.ru;xpauewhx
dumanovskij@inbox.ru;oljtbof
tucomumas@hotmail.com;micddzun1980
sudicawi@outlook.com;bmdmlsucdu1975
nugapewoja@hotmail.com;csvlella1983
boximesig@live.com;ufpesxstu1982
miron.emelyano@yandex.ru;peizscd
alexander.konyashe@yandex.ru;hgfhiagak
lyagushov.veronicka@yandex.ru;vtwdtol
demeno.lyubov@yandex.ru;qonrzlh
adam.murato@yandex.ru;jesqwds
smirnova_vasilisa@rambler.ru;lsebaijppznwlkd
nikita-grachv@rambler.ru;plmqhgxdm
fdor-pereverzev@rambler.ru;dkaqwlnvhkio
budanov-jakov@rambler.ru;sqaagqfxgkio
ksenijasilivstrova@rambler.ru;qvnxeugv
halvarigoodwin@yahoo.com;KISprbe1145
kojonkoskiclark@yahoo.com;SWfjdoo1633
paasiobryant@yahoo.com;Xadvvu4900
peteliusfletcher@yahoo.com;Xcwadp9093
liisahuffman@yahoo.com;PMzwvm4305
Для работы скриптов требуется ключ на сервисе распознавания antigate.com и прокси. Скорость и количество аккаунтов зависит от качества загружаемых проксей.
В связи с изменениями в формах регистрации почтовых ящиков с использованием телефонов на данный момент скрипты могут использоваться в ознакомительных целей.
Скрипты написаны для работы с Human Emulator 4.4.23 Advanced и выше.
Итак, из предыдущей статьи у нас есть следующий скрипт, который регистрирует один аккаунт за один запуск скрипта:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number(0,$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number(1,$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number(3,$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number(4,$pwd);
// подтверждение пароля
$input->set_value_by_number(5,$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number(8,$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(1);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
sleep(1);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
// Quit
$app->quit();
Наша задача добавить в скрипт работу с прокси, различные проверки на удачную регистрацию и запись удачных логинов и паролей в файл.
Начнём с прокси. Допустим у нас есть какой то файл с прокси proxy.txt, который лежит в той же папке что и скрипт. Формат файла следующий:
175.145.221.223:3128
202.53.255.68:3128
196.214.70.60:80
180.242.62.150:8088
95.159.29.116:80
186.193.99.222:3128
Добавим в скрипт код для получения данных из файла с проксями в массив $proxies= file(«proxy.txt»); и сразу же создадим цикл, который будет основан на количестве проксей — то есть мы будем регистрировать столько же аккаунтов сколько у нас рабочих проксей в файле, для этого добавим следующий код:
// цикл пройтись по всем прокси в массиве for($i=0;$ienable_proxy("all connections",$proxy); // тут будет наш скрипт }
Примечание: как работать с файлами в XHE описано в статье работа с файлами. Как организовывать циклы описано в статье работа с циклами
В итоге наш скрипт будет выглядеть теперь так:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
// получаем прокси из файла в массив
$proxies= file("proxy.txt");
// организовываем цикл на основе массива с проксями
for($i=0;$ienable_proxy("all connections",$proxy);
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number(0,$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number(1,$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number(3,$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number(4,$pwd);
// подтверждение пароля
$input->set_value_by_number(5,$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number(8,$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(1);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
sleep(1);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
}
// Quit
$app->quit();
Теперь добавим проверку и запись удачно зарегистрированного аккаунта в файл. Для записи в файл будем использовать функцию объекта для работы c текстовыми
файлами $textfile->add_string_to_file. Код в скрипте будет $textfile->add_string_to_file($res_file,»$mail_login;$pwd\n»);, где $res_file переменная, которая настраивается в начале скрипта $res_file = «mail_accs.txt»;, а «$mail_login;$pwd\n» это записываемая строка с данными в файл.
Теперь нужно добавить проверку удачной регистрации нового аккаунта. Сразу после удачной регистрации открывается ящик и в верхнем правом углу отображается аккаунт под которым мы зашли. Вот на наличие его на странице мы и будем проверять. Если такая строка есть значит зашли в аккаунт, а значит мы его зарегистрировали. Простой анализ страницы показал, что это span элемент и к тому же с id
. Это нам даёт возможность использовать функцию объекта $element->get_element_innerText_by_id следующим образом:
$acc=$element->get_element_innerText_by_id("portal-menu__user-email");
Теперь осталась добавить проверку через оператор if. в Результате мы получили:
// получаем акк под которым зашли в почту
$acc=$element->get_element_innerText_by_id("portal-menu__user-email");
// проверяем на соответствие
if($acc==$mail_login."@mail.ru")
{
// запись в файл удачно зарегистрированного аккаунта
$textfile->add_string_to_file($res_file,"$mail_login@mail.ru;$pwd\n",60);
}
else
{
echo "не удачная регистрация
";
}
Примечание: команда echo служит для вывода информации в панель отладки.
Теперь наш скрипт выглядит следующим образом:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
// получаем прокси из файла в массив
$proxies= file("proxy.txt");
// путь к файлу с аккаунтами
$res_file = "mail_accs.txt";
// организовываем цикл на основе массива с проксями
for($i=0;$ienable_proxy("all connections",$proxy);
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number(0,$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number(1,$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number(3,$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number(4,$pwd);
// подтверждение пароля
$input->set_value_by_number(5,$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number(8,$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(3);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
sleep(3);
// получаем аккаунт под которым зашли в почту
$acc=$element->get_element_innerText_by_id("portal-menu__user-email");
// проверяем на соответствие
if($acc==$mail_login."@mail.ru")
{
// запись в файл удачно зарегистрированного аккаунта
$textfile->add_string_to_file($res_file,"$mail_login@mail.ru;$pwd\n",60);
}
else
{
echo "не удачная регистрация
";
}
}
// Quit
$app->quit();
Если запустить этот скрипт то у нас возникнут проблемы при регистрации второго и последующих аккаунтов так как прежде чем регистрировать новый аккаунт желательно выйти из последнего зареганного аккаунта. К тому же нам нужно ещё менять данные браузера, чистить кэш и менять user-agent строку, можно менять размер браузера и т.д..
Как показала практика работы с хуманом наилучший результат по анонимности и работы с памятью достигается при использовании закладок браузера и последующем их закрытии. Для этого в начало цикла добавим следующий код:
// задаём количество браузеров $browser->set_count(2); // делаем активный следующим $browser->set_active_browser(1,true);
Так же до цикла делаем переход основного браузера на пустую страницу: $browser->navigate(‘about:blank’);
В конце цикла добавим следующий код, который будет чистить данные браузера, а потом закрывать открытый в начале скрипта браузер:
// чистим данные браузера
$browser->clear_cache();
$browser->clear_history();
$browser->clear_cookies("",false);
// сделаем активным главный браузер
$browser->set_active_browser(0,true);
// закрыть все браузеры
$browser->close_all_tabs();
В итоге наш скрипт стал:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
// получаем прокси из файла в массив
$proxies= file("proxy.txt");
// путь к файлу с аккаунтами
$res_file = "mail_accs.txt";
// перейдём на пустую страницу
$browser->navigate("about:blank");
$browser->wait_for(60,1);
// организовываем цикл на основе массива с проксями
for($i=0;$iset_count(2);
// делаем активный следующим
$browser->set_active_browser(1,true);
// получить прокси из массива
$proxy = $proxies[$i];
// задать прокси браузеру
$browser->enable_proxy("all connections",$proxy);
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number(0,$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number(1,$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number(3,$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number(4,$pwd);
// подтверждение пароля
$input->set_value_by_number(5,$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number(8,$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(3);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
sleep(3);
// получаем акк под которым зашли в почту
$acc=$element->get_element_innerText_by_id("portal-menu__user-email");
// проверяем на соответствие
if($acc==$mail_login."@mail.ru")
{
// запись в файл удачно зарегистрированного аккаунта
$textfile->add_string_to_file($res_file,"$mail_login@mail.ru;$pwd\n",60);
}
else
{
echo "не удачная регистрация
";
}
// чистим данные браузера
$browser->clear_cache();
$browser->clear_history();
$browser->clear_cookies("",false);
// сделаем активным главный браузер
$browser->set_active_browser(0,true);
// закрыть все браузеры
$browser->close_all_tabs();
}
// Quit
$app->quit();
Теперь добавим работу с user-agent строкой. Для этого у нас есть файл user-agents.txt, который содержит данные в следующем формате:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; (R1 1.5); .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; Windows-Media-Player/10.00.00.3990)
По аналогии с прокси получим данные из файла в массив добавим в начало скрипта следующий код:
$useragents = file(«useragent.txt»); Задавать эти строки мы будем случайным образом сразу после того как делаем активным 1 браузер, используя следующий код: $browser->set_user_agent($useragents[rand(0,count($useragents)-1)]);, где ($useragents[rand(0,count($useragents)-1)] это случайный элемент массива от 0 до количества элементов в массиве-1.
В конце скрипта перед $app->quit(); добавим код отключения прокси: $browser->disable_proxy(«all connections»);
Теперь наш скрипт имеет вид:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
// получаем прокси из файла в массив
$proxies= file("proxy.txt");
// строки юзер агент
$useragents = file("useragent.txt");
// путь к файлу с аккаунтами
$res_file = "mail_accs.txt";
// перейдём на пустую страницу
$browser->navigate("about:blank");
$browser->wait_for(60,1);
// организовываем цикл на основе массива с проксями
for($i=0;$iset_count(2);
// делаем активный следующим
$browser->set_active_browser(1,true);
// задать user-agent строку
$browser->set_user_agent($useragents[rand(0,count($useragents)-1)]);
// получить прокси из массива
$proxy = $proxies[$i];
// задать прокси браузеру
$browser->enable_proxy("all connections",$proxy);
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number(0,$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number(1,$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number(3,$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number(4,$pwd);
// подтверждение пароля
$input->set_value_by_number(5,$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number(8,$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(3);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
sleep(3);
// получаем акк под которым зашли в почту
$acc=$element->get_element_innerText_by_id("portal-menu__user-email");
// проверяем на соответсвие
if($acc==$mail_login."@mail.ru")
{
// запись в файл удачно зарегистрированного аккаунта
$textfile->add_string_to_file($res_file,"$mail_login@mail.ru;$pwd\n",60);
}
else
{
echo "не удачная регистрация
";
}
// чистим данные браузера
$browser->clear_cache();
$browser->clear_history();
$browser->clear_cookies("",false);
// сделаем активным главный браузер
$browser->set_active_browser(0,true);
// закрыть все браузеры
$browser->close_all_tabs();
}
// отключение прокси
$browser->disable_proxy("all connections");
// Quit
$app->quit();
Производительность скрипта очень сильно зависит от скорости и качества используемых прокси.
Скрипт написан 18.01.2012 в Human Emulator 4.2 Advanced.
На момент публикации статьи 23.01.2012 скрипт был рабочий.
Пожалуй, самое распространённое требование при регистрации каких либо аккаунтов на сайтах это рабочий e-mail. На примере mail.ru напишем скрипт, который будет регать для нас email-ы, которые мы потом сможем использовать в других регистрациях.
Итак, первое что мы сделаем это создадим новый скрипт через меню Файл->Новый. Заменим в скрипте http://www.google.com на mail.ru. Запустим скрипт на выполнение и перейдём на сайт mail.ru. После находим на странице ссылку с текстом «Регистрация в почте», кликаем на ней правой кнопкой мыши и выбираем пункт меню $anchor в развернувшемся подменю кликаем на пункт меню $anchor->click_by_inner_text(‘Регистрация в почте ‘,true);. Нужная нам функция добавилась в скрипт и теперь наш скрипт выглядит следующим образом:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate(\'http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// Quit
$app->quit();
Примечание: После любых функций клика, которые делают переход на другую страницу или выполняют какие либо действия после которых браузер обновляется, нужно добавлять функцию $browser->wait_for();. Эта функция ожидает пока браузер выполнит необходимые действия, не давая скрипту идти дальше.
Запускаем скрипт на выполнение и переходим на страницу регистрации mail.ru. Перед нами страница с полями, которые нужно заполнить данными. Первые два поля это Имя и Фамилия. Для генерации данных в XHE используется объект submitter. У этого объекта есть функции для генерации имени и фамилии — generate_random_name и generate_random_second_name, соответственно. Вставляем эти функции в скрипт через диалог добавления кода. Этот диалог можно вызвать горячими клавишами Ctrl+Alt+Right(стрелка вправо). В диалоге выбираем объект submitter и затем выбираем нужные нам функции из правого поля.
Теперь наш скрипт выглядит следующим образом:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
$submitter->generate_random_name($lang="EN",$sex_for_RU="man");
$submitter->generate_random_second_name($lang="EN",$sex_for_RU="man");
// Quit
$app->quit();
Для работы с полями вставки текста в XHE служит объект input. Для вставки значений в поля Имя и Фамилия используем контекстное меню аналогично с тем как мы кликали на ссылку «Регистрация в почте». В открывшемся подменю меню $input выберем функцию «$input->set_value_by_number(‘0’,»);», а для второго поля «$input->set_value_by_number(‘1’,»);».
Примечание: Помимо функции работы по номеру поля в контекстном меню можно увидеть и функцию работы с полем по имени, типа: «$input->set_value_by_name(‘x_29f24908ee4918a4’,»);». На практике лучше использовать функции, которые работают с элементом по его имени, так как при добавлении нового элемента такого же типа нумерация полей меняется и это может привести к неработоспособности скрипта, тогда как имя элемента остаётся постоянным. НО в данном случае, судя по именам элементов они скорее всего меняются чаще, чем добавляются новые поля на страницу, поэтому будет надёжнее работать по номерам элементов.
Теперь вставим генерацию имени и фамилии в поля с нужными для нас параметрами. Скрипт будет выглядеть так:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
$input->set_value_by_number("0",$submitter->generate_random_name("RU","man"));
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU","man"));
// Quit
$app->quit();
Параметры «RU» и «man» говорят о том что нужно генерить только русские мужские имена и фамилии. Допустим что стоит задача случайным образом создавать в том числе и женские имена и фамилии. Тогда добавим следующий код в скрипт:
// рандомно выставлять пол аккаунта
$gnd=rand(1,2); // генерим случайным образом или 1 или 2.
switch($gnd) // оператор выбора
{
case 1: // при $gnd=1 переменной $gender будет присваиваться значение "man"
$gender = "man";
break;
case 2: // при $gnd=2 переменной $gender будет присваиваться значение "woman"
$gender = "woman";
break;
}
После добавления этого кода скрипт будет выглядеть следующим образом:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// Quit
$app->quit();
Теперь выберем дату рождения. Для работы с элементами выбора в XHE используется объект listbox. Значения даты будем выбирать случайным образом используя функцию select_random_value_by_number.
Таким образом получим следующее:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// Quit
$app->quit();
Теперь выберем пол. В скрипте уже пол выбран его содержит переменная $gnd. Теперь с помощью неё выберем нужный пол на странице. Для работы с так называемыми радиобоксами в XHE есть элемент radiobox. Используя контекстное меню для элемента выбираем функцию $radiobox->set_checked_by_value(‘1’,true); и меняем ‘1’ на $gnd.
Примечаение: Тут можно было использовать функции работы по номеру $radiobox->set_checked_by_number(0,true);, но тогда наш код выбора пола имел бы такой вот вид:
// рандомно выставлять пол аккаунта
$gnd=rand(0,1);
switch($gnd)
{
case 0:
$gender = "man";
break;
case 1:
$gender = "woman";
break;
}
В итоге имеем скрипт в следующем виде:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// Quit
$app->quit();
Примечание: Периодически можно запускать скрипт что бы проверять всё ли срабатывает так как надо.
Теперь нам нужно сгенерить логин для мыла и вставить его в поле логина. Для этого используем функцию $input->set_value_by_number(‘3’,»); вместе с функцией $submitter->generate_random_nick_name. Для того что бы сделать длину генерируемого пароля случайной используем оператор rand и тогда получем следующий код $input->set_value_by_number(‘3’,$submitter->generate_random_nick_name(rand(5,9));. Этот код будет вставлять случайный логин длиной от 5 до 9 символов. Для того что ещё больше сделать логин уникальным можно добавить опять таки оператор rand. Тогда вызов функции будет выглядеть так $input->set_value_by_number(‘3’,$submitter->generate_random_nick_name(rand(5,9)).rand(100,10000));
Так как при удачной регистрации нам понадобится записать получившийся логин мы введём переменную $mail_login и перепишем код следующим образом:
// создадим логин
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number("3",$mail_login);
Примечание: Не ленитесь расставлять комментарии это поможет вам понять как работает скрипт, в том случае если вы его решите переделать через месяц другой.
После всех манипуляций получим:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number("3",$mail_login);
// Quit
$app->quit();
По аналогии делаем тоже самое с заполнением паролем, только для генерации пароля используем функцию $submitter->generate_random_text. В итоге для пароля добавим такой вот код:
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(5,9),1);
// пароль
$input->set_value_by_number("4",$pwd);
// подтверждение пароля
$input->set_value_by_number("5",$pwd);
Дальше если надо, то добавляем в поле телефон, если делать регистрацию без телефона, то добавим для ссылки «У меня нет мобильного телефона» через контекстное меню вызов функции $anchor->click_by_inner_text(‘У меня нет мобильного телефона’,true);. Затем кликнем на ссылку что бы увидеть поля для заполнения. Выберем случайным образом из списка вопросов вопрос, используя уже известную нам функцию $listbox->select_random_value_by_number(5);. Для формирования ответа можно использовать функцию $submitter->generate_random_text либо задавать один и тот же ответ это по выбору. В нашем случае будем использовать $submitter->generate_random_text.
После заполнения всех нужных полей кликнем на кнопку для завершения регистрации. Для работы с кнопками типа INPUT в XHE используется объект button. Используя контекстное меню для элемента выберем функцию $button->click_by_number(1);
Теперь наш скрипт будет выглядеть так вот:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// зададим город
$input->set_value_by_number("2",$submitter->generate_random_city("RU"));
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number("3",$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(5,9),1);
// пароль
$input->set_value_by_number("4",$pwd);
// подтверждение пароля
$input->set_value_by_number("5",$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number("8",$ans);
// нажмём кнопку зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
// Quit
$app->quit();
После запуска этого скрипта в браузере откроется окно с каптчей. Для работы с распознанием каптчи можно использовать различные сервисы такие как captchabot.com или anti-captcha.com. Можно и другие просто для работы с этими двумя сервисами в XHE есть объекты $captchabot и $anticapcha. А так же можно использовать ручной ввод каптчи через функции объекта $app:
$app->dlg_captcha_from_image_number($number); $app->dlg_captcha_from_url($url); $app->dlg_captcha_from_url_exactly($url,$exactly);.
Мы будем использовать функцию $app->dlg_captcha_from_url_exactly($url,$exactly);. Для этого для начала посмотрим src картинки. Src можно посмотреть в исходникам html страницы, либо через Инспектор Элементов в XHE, либо через контекстное меню, добавив в скрипт любую функцию работы картинки через src, например:$image->click_by_src(‘http://e.mail.ru/cgi-bin/x_image?num=2&x_reg_id=5yJ3cvUd&r=1326713669663’,true); Src картинки будет http://e.mail.ru/cgi-bin/x_image?num=2&x_reg_id=5yJ3cvUd&r=1326713669663. Сразу становится ясно, что src постоянно разный и к тому же каптча состоит из трёх картинок, поэтому быдем вызывать $app->dlg_captcha_from_url_exactly следующим образом:
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
То есть в результате работы этого кода мы получаем, что вся каптча распределена в трёх частях. Заполним поле каптчей используя следующий код:
$input->set_value_by_name_by_form_number(«code»,$cap.$cap1.$cap2,11); — где cap.$cap1.$cap2 распознанная каптча.
Примечание: Иногда когда поля находятся в формах (тэг form) функции $input->set_value_by_name могут не срабатывать
в этом случае следует использовать функцию $input->set_value_by_name_by_form_number.
Теперь наш скрипт будет выглядеть следующим образом:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number("3",$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number("4",$pwd);
// подтверждение пароля
$input->set_value_by_number("5",$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number("8",$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(1);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
// Quit
$app->quit();
Примечание: Иногда появляется необходимость задержать скрипт несколько дольше, чем это делает функция $browser->wait_for();.
Например когда открываются всплывающие окна в этот момент браузер может освободиться раньше, чем появится всплывающее окно. В этих случаях используется функция sleep(кол-во секунд);, которая останавливает работу скрипта на заданное количество секунд.
Теперь закончим регистрацию используя контекстное меню, как это мы делали выше. В итоге наш скрипт стал вот таким вот:
$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");
$browser->navigate("http://mail.ru/");
$browser->wait_for(60,1);
// перейти на страницу регистрации
$anchor->click_by_inner_text("Регистрация в почте ",true);
$browser->wait_for();
// рандомно выставлять пол аккаунта
$gnd=rand(1,2);
switch($gnd)
{
case 1:
$gender = "man";
break;
case 2:
$gender = "woman";
break;
}
// задать имя
$input->set_value_by_number("0",$submitter->generate_random_name("RU",$gender));
// задать фамилию
$input->set_value_by_number("1",$submitter->generate_random_second_name("RU",$gender));
// день
$listbox->select_random_value_by_number(0);
// месяц
$listbox->select_random_value_by_number(1);
// год
$listbox->select_random_value_by_number(2);
// выберем пол
$radiobox->set_checked_by_value($gnd,true);
// логин для почты
$mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000);
// установим сгенерённый логин в поле
$input->set_value_by_number("3",$mail_login);
// сгенерить пароль для мыла
$pwd = $submitter->generate_random_text(rand(7,11),1);
// пароль
$input->set_value_by_number("4",$pwd);
// подтверждение пароля
$input->set_value_by_number("5",$pwd);
// перейти на заполнение полей без телефона
$anchor->click_by_inner_text("У меня нет мобильного телефона",true);
$browser->wait_for();
// выберем случайный вопрос
$listbox->select_random_value_by_number(5);
// заполним поле ответа
$ans= $submitter->generate_random_text(rand(5,9),1);
$input->set_value_by_number("8",$ans);
// зарегистрировать
$button->click_by_number(1);
$browser->wait_for();
sleep(1);
// распознать каптчу тройную каптчу
$cap = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=1",false);
$cap1 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=2",false);
$cap2 = $app->dlg_captcha_from_url_exactly("http://e.mail.ru/cgi-bin/x_image?num=3",false);
sleep(1);
// задать каптчу
$input->set_value_by_name_by_form_number("code",$cap.$cap1.$cap2,11);
sleep(1);
// закончить с каптчей
$button->click_by_number(20);
$browser->wait_for();
// Quit
$app->quit();
В следующей статье мы добавим использование прокси, завернём всё это в цикл, а так же добавим проверки на удачную регистрацию и запись удачных регистраций в файл.
Скрипт написан 16.01.12 в Human Emulator 4.2 Advanced. На момент публикации статьи скрипт был рабочий
Скрипт Human Emulator регистрации почты рамблер это скрипт, который регистрирует почтовые аккаунты в Рамблер.
Скрипт сохраняет результат в заданный файл в формате: мыло;пароль
На нашем сайте вы можете так же найти примеры подобных скриптов регистрация почты mail.ru и регистрация почты yandex.ru.
Как и в остальных скриптах регистрации почты на выходе скрипт получает email-ы максимально приближенные к реальным. Это сделано с помощью выбора имени ящика из тех которые предлагает нам сервис.
В результате мы получаем результаты в следующем виде:
smirnova_vasilisa@rambler.ru;lsebaijppznwlkd
nikita-grachv@rambler.ru;plmqhgxdm
fdor-pereverzev@rambler.ru;dkaqwlnvhkio
budanov-jakov@rambler.ru;sqaagqfxgkio
ksenijasilivstrova@rambler.ru;qvnxeugv
dostovalovaklara@rambler.ru;vajhcalpx
Как и всегда для распознавания капчи в скрипте мы работаем с сервисом распознавания antigate.com. После регистрации нового ящика скрипт заходит в него и отмечает все письма, которые там находятся на этот момент как прочитанные.Можно дописать в скрипте любые действия, которые Вам нужно будет делать в ящике. Например, Вы можете сразу же отправить с него письмо или изменить настройки переадресации или любые другие настройки в ящике. Количество регистрируемых ящиков задаётся в настройках скрипта.
Примечание: Этот скрипт использует прокси, поэтому для его работы нужны нормальные рабочие прокси.
Производительность скрипта зависит от качества прокси.
Настройки скрипта:
// включить случайную форму почты (true/false) - можно регистрировать только rambler или также сопутствующие ящики lenta.ru, ro.ru и т.д.
$mix = false;
// количество регистрируемых аккаунтов
$acc_count = 10;
// пауза между регистрациями
$wt = 10;
// длинная пауза
$lp = 5;
// путь сохранения данных аккаунтов
$str_res_path = "res\\accs.txt";
// ключ сервиса антикапчи
$apikey = "ваш ключ антикапчи";
// путь сохранения капчи
$str_img_path = "C:\\temp\\tmp.jpeg";
// текущая позиция прокси
$i_cur_proxy = "";
// путь к файлу проксями
$str_proxy_path = "data\\proxy.txt";
// user agent строки
$useragents = file("data\\useragent.txt");
Сам скрипт выглядит следующим образом:
quit();
}
// перейти на rambler.ru
$browser->navigate("http://www.rambler.ru");
$ii = 0;
while (!$input->is_exist_by_name("query"))
{
sleep(1);
if ($ii > 20)
{
debug_mess("Битый прокси
");
// удаляем строку с битым прокси из файла
rewrite($i_cur_proxy, $str_proxy_path);
sleep($wt);
// перезапускаем приложение
clear_and_restart();
}
$ii++;
}
sleep($wt);
// основной цикл скрипта
while (true)
{
// зарегистриурем аккаунт
$succ_reg = reg_acc();
if ($succ_reg)
{
debug_mess("Регистрация успешна!!!");
}
else
{
debug_mess("Не удалось пройти регистрацию!!");
}
sleep($wt);
// чистим всю информацию и перезагружаемся
clear_and_restart();
}
debug_mess("скрипт отработал");
// Quit
$app->quit();
?>
Скрипт написан 02.09.2013 в Human Emulator 4.6.24 Advanced.
Скрипт регистрации почты на примере почтового сервиса yandex.ru это скрипт, который регистрирует почтовые аккаунты на Яндексе. Скрипт сохраняет результат в заданный файл в формате: мыло;пароль
На нашем сайте уже есть пример подобного скрипта, который регистрирует почтовые аккаунты на сайте mail.ru.
Как и в скрипте регистрации почты mail.ru на выходе мы имеем email-ы максимально приближенные к реальным. Это сделано с помощью выбора первого почтового ящика из предлагаемых самим сервисом.
В результате мы имеем файл следующего вида:
miron.emelyano@yandex.ru;peizscd
alexander.konyashe@yandex.ru;hgfhiagak
lyagushov.veronicka@yandex.ru;vtwdtol
demeno.lyubov@yandex.ru;qonrzlh
adam.murato@yandex.ru;jesqwds
eshevski.harlamp@yandex.ru;jenetcc
konsuelo.manin@yandex.ru;wekrjzmh
Для распознавания капчи используется сервис antigate.com. После регистрации скрипт заходит в только что созданный ящик и отмечает полученные письма как прочитанные. При необходимости можно добавить выполнение и других действий внутри ящика. Например, изменение любых его настроек.Так же в скрипте есть возможность задавать количество почтовых ящиков, которое скрипт должен зарегистрировать.
Примечание: Скрипт не использует прокси, поэтому с помощью него можно зарегать 7-10 аккаунт за один запуск. Через какой-то промежуток времени вы запускаете скрипт опять и у вас ещё 7-10 мыл и т.д. Если же вам нужны почтовые ящики в больших количествах, то вы можете прикрутить работу с прокси. На нашем сайте есть много примеров как это делается.
Настройки скрипта:
// ключ антикаптчи $my_key ="ваш ключ сервиса antigate.com"; - тут вы указываете ваш ключ с сервиса antigate.com // показывать капчу через диалог или использовать сервис распознавания antigate.com $b_show_dlg=false; // если значение false значит использовать сервис antigate.com // путь куда сохранить картинку капчи $img_path="C:\\Temp\\tmp.jpg"; // путь к файлу с результатами $res_path="res/accs.csv"; // язык данных аккаунта. // С помощью этой настройки вы выбираете на каком языке генерить данные для аккаунат. $lang="RU"; // если поставить EN будут генериться английские данные. // количество зареганых аккаунтов - тут вы задаёте необходимое вам кол-во зареганных аккаунтов $accs_count=10;
Сам скрипт выглядит следующим образом:
navigate("http://yandex.ru/");
// переходим на нужную нам форму регистрации
if($anchor->is_exist_by_href("mail.yandex.",false))
$anchor->set_attribute_by_attribute("href","mail.yandex.",false,"href","https://passport.yandex.ru/passport?mode=register");
// переход на регистрацию
$anchor->click_by_href("https://passport.yandex.ru/passport?mode=register",false);
// зарегистрировать аккаунт
if(reg_mail_acc()===false)
{
debug_mess("закончилась возможно регистрировать аккаунты с этого ip");
break;
}
// проверить кол-во аккаунтов
if($i_cur_accs>=$accs_count)
break;
// переходим на пустую строку
$browser->navigate("about:blank");
// изменить информацию о браузере
set_browser_info();
}
// переходим на пустую строку
$browser->navigate("about:blank");
// изменить информацию о браузере
set_browser_info();
debug_mess("скрипт закончил работу");
// Quit
$app->quit();
?>
Скрипт написан 07.14.2013 в Human Emulator 4.6.5 Advanced.
Скрипт обновили 09.09.2013 года.
Одним из способом эффективной рекламы является рассылка писем с информацией про ваши акции и скидки вашим подписчикам. Таким образом можно существенно увеличить поток ваших клиентов и как результат увеличить прибыль. Но к сожалению, многие почтовые сервисы рассматривают такую рассылку как спам и временно или на постоянно блокируют ваш ящик.Выход отправлять письма с нескольких почтовых ящиков. Но если делать это в ручную, то на это уйдёт огромное количество времени. Предлагаем вашему вниманию скрипт, который автоматически рассылает письма с нескольких ящиков.
Скрипт работает следующим образом: есть список мыл с которых нужно отправлять письма и есть список мыл кому отправлять. Так же есть несколько вариантов писем для отправки. Скрипт берёт ящик, с которого нужно отправлять, заходит в него, берёт случайным образом текст письма, создаёт сообщение и отправляет его заданному в настройках количеству подписчиков.
Скрипт на вход принимает файл с ящиками с которых отправлять в формате:
frol.gorbunov@mail.ru;dfinrzdqj
afanasev.ilarion@mail.ru;gcmixsglr
nonna.emelyanenko@mail.ru;ioharbf
и т.д.
Файл с ящиками куда отправлять в формате:
frol.gorbunov@mail.ru
afanasev.ilarion@mail.ru
nonna.emelyanenko@mail.ru
и т.д.
Сообщения для отправки в виде текстовых файлов складываются в отдельную папку. Название файла это тема отправляемого сообщения, а содержимое файла это тело сообщения. Причём содержимое может быть как просто в виде текста, так и в виде html. Так же для работы скрипта вам понадобятся прокси.
Настройки скрипта:
// список мыл с которых отправлять
$path_from = "data/from_mails.txt";
// список мыл на которые отправлять
$path_to = "data/to_mails.txt";
// обработанные мыла
$path_res_from = "res/from_mails.txt";
$path_res_to = "res/to_mails.txt";
// путь к папке с письмами
$path_messages = "data/messages/";
// прокси
$str_proxy_path = "data/proxy.txt";
// user agent строки
$useragents = file("data/useragent.txt");
// путь к файлу с использованными проксями - если прокси не рабочие
// они складываются в отдельный файл и удаляются из основного списка
$path_to_use_proxy = "res/use_proxy.txt";
// количество ящиков на которые отправлять с одного мыла
$to_mails_count = 3;
Сам скрипт выглядит следующим образом:
quit();
}
// получить в массив все данные
$a_mails_from = file($path_from,FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
$a_mails_to = file($path_to,FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
// получить все файлы в папке
$str_files = $folder->get_all_items($path_messages);
// получить массив путей
$arr_files = explode("\n", $str_files);
$a = 0;
// пройтись по всем аккаунтам
foreach($a_mails_from as $str_mail)
{
// перейти на mail.ru
$browser->navigate("http://mail.ru/");
// войти в аккаунт
$a_mail = explode(";" ,$str_mail);
$a_mail_lg = explode("@",$a_mail[0]);
$input->set_value_by_name("Login",$a_mail_lg[0]);
$listbox->select_text_by_name("Domain",$a_mail_lg[1], false);
$input->set_value_by_name("Password",$a_mail[1]);
$button->click_by_name("mailbox__auth__button");
// отправка сообщений на k разных почтовых ящиков
for ($k = 0; $k < $to_mails_count; $k++)
{
// выбираем рандомно одно из сообщений
$mes_name = trim($arr_files[rand(0,count($arr_files)-1)]);
// получаем название письма - это будет тема сообщения
$mes_subj = str_replace(".txt", "", $file_os->get_name($mes_name));
// получаем сам текст сообщения
$mes_content = $textfile->read_file($mes_name);
sleep(2);
// переходим в написать письмо
$anchor->click_by_inner_text("Написать ");
sleep(3);
// проверить отправили мы на все мыла или нет
if ($a >= count($a_mails_to))
{
debug_mess("Закончились все мыла куда отправлять!");
$app->quit();
}
// задать мыло получателя
$textarea->set_focus_by_attribute("id","sentmsgab_compose_to",true);
$textarea->set_value_by_name_by_form_name("To", trim($a_mails_to[0]), "Compose");
debug_mess("отправляем с ".$a_mail[0]." на ".trim($a_mails_to[$a]));
sleep(3);
// тема
$input->set_focus_by_attribute("id","sentmsgab_compose_subj",true);
$input->set_value_by_name_by_form_name("Subject", $mes_subj,"Compose");
sleep(3);
// получить номер фрейма
$ifr = get_frame_number();
// отчистить от лишнего текста
$body->set_inner_html_by_number(0, "", $ifr);
// само сообщение
while($body->get_inner_html_by_number(0, $ifr) == "")
{
//echo "на входе : $ifr
";
if ($body->get_name_by_number(0, $ifr) == "")
{
$ifr = get_frame_number();
//echo "изменили на $ifr
";
}
// задать тело письма
$body->set_inner_html_by_number(0,$mes_content,$ifr);
$frame->set_body_by_number($ifr,$mes_content);
sleep(5);
}
// отправить
$anchor->click_by_inner_text("Отправить");
sleep(5);
// перепишем файл и перенесем в папку res использованный email
rewrite($a_mails_to[$a], $path_to, $path_res_to);
$a++;
}
// нажимаем кнопку выход
$anchor->click_by_attribute("id","PH_logoutLink", true);
sleep(3);
// меняем прокси
//удаляем прокси из файла
$proxies = file_get_contents($str_proxy_path);
$proxies = str_replace($i_cur_proxy."\r\n", "", $proxies);
$textfile->write_file($str_proxy_path, $proxies, 60);
// записываем прокси в файл с использованными проксями
$textfile->add_string_to_file($path_to_use_proxy, $i_cur_proxy."\r\n");
// закроем все вкладки браузера
$browser->stop();
sleep(1);
$browser->close_all_tabs();
sleep(1);
$browser->navigate("about:blank");
sleep(1);
// удаляем прокси
$browser->disable_proxy("");
$i_cur_proxy = "";
sleep(5);
// устанавливаем прокси
set_proxy();
if (!$i_cur_proxy)
{
// выходим из скрипта
$app->quit();
}
// перенёс мыло с которого отправляли в отработанные
rewrite($str_mail,$path_from, $path_res_from);
debug_mess("Закончили отправлять письма с" . $a_mail[0] . "
");
}
debug_mess(" скрипт закончил работу
");
// Quit
$app->quit();
?>
Скрипт написан 7.03.2013 в Human Emulator 4.6.5 Advanced.
Скрипт регистрации почты на примере почтового сервиса mail.ru это скрипт, который регистрирует email-ы на mail.ru
и сохраняет результат в файл в формате мыло;пароль
На нашем сайте уже есть статьи как написать такой скрипт Скрипт регистратор мыла на примере mail.ru. Часть 1. и Скрипт регистратор мыла на примере mail.ru. Часть 2., где подробно, пошагово расписывается что и как делать. Но мы решили улучшить существующий скрипт и выложить его отдельной статьёй.
Основное отличие от предыдущего скрипта это то что на выходе мы имеем email-ы максимально приближенные к реальным. Это сделано за счёт выбора первого почтового ящика из предлагаемых самим mail.ru. Таким образом в результате работы скрипта мы имеем почтовые ящики следующего вида:
uvazova@bk.ru;uwhrqaa
kamola.shurupova@mail.ru;nnlggwhz
efrem.barsukov@mail.ru;pitoqkbaz
serafim.efimov@mail.ru;xpauewhx
dumanovskij@inbox.ru;oljtbof
cherenchikova@bk.ru;sdqiumwjj
dumanovskij@list.ru;kuvxplscg
agrafena.skorobogatova@mail.ru;vhkczin
gavriil.fomin@mail.ru;hjxldzlq
akropanin@inbox.ru;lzoqiutta
oleg-dmitriev-70@mail.ru;irvkirpua
tkrutin@bk.ru;spxjbbha
Для распознавания капчи в скрипте добавлены работа с сервисом antigate.com и с встроенным в Human Emulator диалогом ввода капчи. После удачной регистрации скрипт заходит в только что созданный ящик и отмечает полученные от mail.ru письма как прочитанное. При необходимости можно добавить выполнение и других действий внутри ящика, например, изменение любых его настроек.Так же в скрипте есть возможность задавать количество почтовых ящиков, которое скрипт должен зарегистрировать.
Примечание: Скрипт не использует прокси, поэтому с помощью него можно зарегать 7-10 аккаунт за один запуск.
Через какой-то промежуток времени вы запускаете скрипт опять и у вас ещё 7-10 мыл и т.д. Если же вам нужны почтовые ящики в промышленных масштабах, то вы можете прикрутить к скрипту прокси по аналогии как это описано в статье скрипт регистратор мыла на примере mail.ru. Часть 2. и использовать для сбора прокси наш скрипт сборщик проксей
Настройки скрипта:
// ключ антикаптчи $api_key_antg ="ключ антикаптчи"; - тут вы указываете ваш ключ с сервиса antigate.com // показывать капчу через диалог или использовать сервис распознавания antigate.com $b_show_dlg=false; // если значение false значит использовать сервис antigate.com // путь куда сохранить картинку капчи $img_path="C:\\Temp\\tmp.jpg"; // путь к файлу с результатами $res_path="res/accs.csv"; // язык данных аккаунта. // С помощью этой настройки вы выбираете на каком языке генерить данные для аккаунат. $lang="RU"; // если поставить EN будут генерируется английские данные. // количество зареганых аккаунтов - тут вы задаёте необходимое вам кол-во зареганных аккаунтов $accs_count=10;
Сам скрипт выглядит следующим образом:
navigate("http://mail.ru/");
// перейти в почту
$anchor->click_by_inner_text("Регистрация в почте");
// зарегать аккаунт
reg_mail_acc();
if($i_cur_accs>=$accs_count)
break;
// переходим на пустую строку
$browser->navigate("about:blank");
// изменить информацию о браузере
set_browser_info();
}
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
");
// Quit
$app->quit();
?>
Скрипт написан 15.11.2012 в Human Emulator 4.4.23 Advanced.
На момент публикации статьи 19.11.2012 скрипт был рабочий.