Поступил вопрос от клиента, как вводить 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
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// скрипт работает в режим отладки $dbg = true; // паузы ожидания $wt = 5; $wt_long = 10; // путь к файлу с почтовыми ящиками $path_to_mails = "data\\mails.txt"; // обратный адрес $from = "tatyanka.noskova@inbox.ru"; // тема сообщения $subject = "приветствие"; // само сообщение $message = "Привет. Давай знакомится"; // ключ антигейта - необходимо ввести свой $apikey = ""; |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
<?php /* производитель: x-scripts ** тип продукта: скрипт под Xweb Human Emulator ** сайт программы: humanemulator.info ** наш сайт: x-scripts.com ** по всем вопросам обращайтесь: ** email: order@x-scripts.com ** icq: 625657402 ** skype: igor_sev2 */ $xhe_host = "127.0.0.1:8351"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // //////////////////////// настройки скрипта ///////////////////////// // скрипт работает в режим отладки $dbg = true; // паузы ожидания $wt = 5; $wt_long = 10; // путь к файлу с почтовыми ящиками $path_to_mails = "data\\mails.txt"; // обратный адрес $from = "tatyanka.noskova@inbox.ru"; // тема сообщения $subject = "приветствие"; // само сообщение $message = "Привет. Давай знакомится"; // ключ антигейта - необходимо ввести свой $apikey = ""; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess("скрипт запустили"); // чистим все $browser->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<br>"; $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 и для работы скрипта вам понадобится ключ с этого сервиса. Так же для работы скрипта понадобятся прокси. Прокси можно купить тут. При покупке проксей будьте внимательны, некоторые прокси запрещены для массовых регистраций.
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ключ антикаптчи $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"; |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
<?php /* производитель: x-scripts ** тип продукта: скрипт под Xweb Human Emulator ** сайт программы: humanemulator.info ** наш сайт: x-scripts.com ** по всем вопросам обращайтесь: ** email: order@x-scripts.com ** icq: 625657402 ** skype: igor_sev2 */ $xhe_host = "127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // //////////////////////// настройки скрипта ///////////////////////// // ключ антикаптчи $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"; // текущая позиция прокси $i_cur_proxy = ""; // ожидание $wt = 5; $wt_long = 10; // включить (true) или выключить регистрацию только @hotmail.com ящика $hotmail = false; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // accept fucntions require_once("tools/accept_functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess(" скрипт запустили"); // установка прокси $i_cur_proxy = set_proxy($i_cur_proxy, $str_proxy_path); if (!$i_cur_proxy) { // выход из скрипта $app->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("Битый прокси<br>"); sleep($wt); // удаляем строку с битым прокси из файла rewrite($i_cur_proxy, $str_proxy_path); // перезапускаем приложение clear_and_restart(); } $ii++; } echo "Кликаем по ссылке зарегистрироваться<br>"; // кликаем по ссылке зарегистрировать аккаунт $anchor->click_by_inner_text("Sign up now", true); sleep($wt); // зарегистрировать аккаунт $succ_reg = reg_mail_acc(); if ($succ_reg) { debug_mess("<b>Регистрация успешна!!!</b>"); } else { debug_mess("<b>Не удалось пройти регистрацию!!</b>"); } 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 и выше.
Итак, из предыдущей статьи у нас есть следующий скрипт, который регистрирует один аккаунт за один запуск скрипта:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
$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»); и сразу же создадим цикл, который будет основан на количестве проксей — то есть мы будем регистрировать столько же аккаунтов сколько у нас рабочих проксей в файле, для этого добавим следующий код:
1 2 3 4 5 6 7 8 9 10 |
// цикл пройтись по всем прокси в массиве for($i=0;$i<count($proxies);$i++) { // получить прокси из массива $proxy = $proxies[$i]; // задать прокси браузеру $browser->enable_proxy("all connections",$proxy); // тут будет наш скрипт } |
Примечание: как работать с файлами в XHE описано в статье работа с файлами. Как организовывать циклы описано в статье работа с циклами
В итоге наш скрипт будет выглядеть теперь так:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
$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;$i<count($proxies);$i++) { // получить прокси из массива $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(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
1 |
<SPAN id=portal-menu__user-email>rekib2855@mail.ru</SPAN> |
. Это нам даёт возможность использовать функцию объекта $element->get_element_innerText_by_id следующим образом:
1 |
$acc=$element->get_element_innerText_by_id("portal-menu__user-email"); |
Теперь осталась добавить проверку через оператор if. в Результате мы получили:
1 2 3 4 5 6 7 8 9 10 11 12 |
// получаем акк под которым зашли в почту $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 "не удачная регистрация <br>"; } |
Примечание: команда echo служит для вывода информации в панель отладки.
Теперь наш скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
$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;$i<count($proxies);$i++) { // получить прокси из массива $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 "не удачная регистрация <br>"; } } // Quit $app->quit(); |
Если запустить этот скрипт то у нас возникнут проблемы при регистрации второго и последующих аккаунтов так как прежде чем регистрировать новый аккаунт желательно выйти из последнего зареганного аккаунта. К тому же нам нужно ещё менять данные браузера, чистить кэш и менять user-agent строку, можно менять размер браузера и т.д..
Как показала практика работы с хуманом наилучший результат по анонимности и работы с памятью достигается при использовании закладок браузера и последующем их закрытии. Для этого в начало цикла добавим следующий код:
1 2 3 4 |
// задаём количество браузеров $browser->set_count(2); // делаем активный следующим $browser->set_active_browser(1,true); |
Так же до цикла делаем переход основного браузера на пустую страницу: $browser->navigate(‘about:blank’);
В конце цикла добавим следующий код, который будет чистить данные браузера, а потом закрывать открытый в начале скрипта браузер:
1 2 3 4 5 6 7 8 9 |
// чистим данные браузера $browser->clear_cache(); $browser->clear_history(); $browser->clear_cookies("",false); // сделаем активным главный браузер $browser->set_active_browser(0,true); // закрыть все браузеры $browser->close_all_tabs(); |
В итоге наш скрипт стал:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
$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;$i<count($proxies);$i++) { // задаём количество браузеров $browser->set_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 "не удачная регистрация <br>"; } // чистим данные браузера $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»);
Теперь наш скрипт имеет вид:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
$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;$i<count($proxies);$i++) { // задаём количество браузеров $browser->set_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 "не удачная регистрация <br>"; } // чистим данные браузера $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);. Нужная нам функция добавилась в скрипт и теперь наш скрипт выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$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 и затем выбираем нужные нам функции из правого поля.
Теперь наш скрипт выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$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’,»);». На практике лучше использовать функции, которые работают с элементом по его имени, так как при добавлении нового элемента такого же типа нумерация полей меняется и это может привести к неработоспособности скрипта, тогда как имя элемента остаётся постоянным. НО в данном случае, судя по именам элементов они скорее всего меняются чаще, чем добавляются новые поля на страницу, поэтому будет надёжнее работать по номерам элементов.
Теперь вставим генерацию имени и фамилии в поля с нужными для нас параметрами. Скрипт будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$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» говорят о том что нужно генерить только русские мужские имена и фамилии. Допустим что стоит задача случайным образом создавать в том числе и женские имена и фамилии. Тогда добавим следующий код в скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 |
// рандомно выставлять пол аккаунта $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; } |
После добавления этого кода скрипт будет выглядеть следующим образом:
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 |
$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.
Таким образом получим следующее:
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 35 36 37 |
$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);, но тогда наш код выбора пола имел бы такой вот вид:
1 2 3 4 5 6 7 8 9 10 11 12 |
// рандомно выставлять пол аккаунта $gnd=rand(0,1); switch($gnd) { case 0: $gender = "man"; break; case 1: $gender = "woman"; break; } |
В итоге имеем скрипт в следующем виде:
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 35 36 37 38 39 |
$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 и перепишем код следующим образом:
1 2 3 4 |
// создадим логин $mail_login = $submitter->generate_random_nick_name(rand(5,9)).rand(100,10000); // установим сгенерённый логин в поле $input->set_value_by_number("3",$mail_login); |
Примечание: Не ленитесь расставлять комментарии это поможет вам понять как работает скрипт, в том случае если вы его решите переделать через месяц другой.
После всех манипуляций получим:
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 35 36 37 38 39 40 41 42 43 44 |
$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. В итоге для пароля добавим такой вот код:
1 2 3 4 5 6 |
// сгенерить пароль для мыла $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);
Теперь наш скрипт будет выглядеть так вот:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
$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:
1 2 3 |
$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 следующим образом:
1 2 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); |
То есть в результате работы этого кода мы получаем, что вся каптча распределена в трёх частях. Заполним поле каптчей используя следующий код:
$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.
Теперь наш скрипт будет выглядеть следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
$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(кол-во секунд);, которая останавливает работу скрипта на заданное количество секунд.
Теперь закончим регистрацию используя контекстное меню, как это мы делали выше. В итоге наш скрипт стал вот таким вот:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
$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. После регистрации нового ящика скрипт заходит в него и отмечает все письма, которые там находятся на этот момент как прочитанные.Можно дописать в скрипте любые действия, которые Вам нужно будет делать в ящике. Например, Вы можете сразу же отправить с него письмо или изменить настройки переадресации или любые другие настройки в ящике. Количество регистрируемых ящиков задаётся в настройках скрипта.
Примечание: Этот скрипт использует прокси, поэтому для его работы нужны нормальные рабочие прокси.
Производительность скрипта зависит от качества прокси.
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// включить случайную форму почты (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"); |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php /* производитель: x-scripts ** тип продукта: скрипт под Xweb Human Emulator ** сайт программы: humanemulator.info ** наш сайт: x-scripts.com ** по всем вопросам обращайтесь: ** email: order@x-scripts.com ** icq: 625657402 ** skype: igor_sev2 */ $xhe_host = "127.0.0.1:7016"; // The following code is required to properly run XWeb Human Emulator require_once("..\..\Templates\xweb_human_emulator.php"); // /////////////////////// настройки скрипта //////////////////////// // включить случайную форму почты (true/false) $mix = false; // количество регистрируемых аккаунтов $acc_count = 10; // пауза между регистрациями $wt = 10; // длинная пауза $lp = 5; // текущий номер аккаунта $i_cur_acc = 1; // путь сохранения данных аккаунтов $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"); // скрипт работает в режим отладки $dbg = true; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // accept fucntions require_once("tools/accept_functions.php"); // ////////////////////// скрипт /////////////////////////////////// debug_mess("старт скрипта"); // установка прокси $i_cur_proxy = set_proxy($i_cur_proxy, $str_proxy_path); if (!$i_cur_proxy) { // выход из скрипта $app->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("Битый прокси<br>"); // удаляем строку с битым прокси из файла 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("<b>Регистрация успешна!!!</b>"); } else { debug_mess("<b>Не удалось пройти регистрацию!!</b>"); } 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 мыл и т.д. Если же вам нужны почтовые ящики в больших количествах, то вы можете прикрутить работу с прокси. На нашем сайте есть много примеров как это делается.
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ключ антикаптчи $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; |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
<?php /* производитель: x-scripts ** тип продукта: скрипт под Xweb Human Emulator ** сайт программы: humanemulator.info ** наш сайт: x-scripts.com ** по всем вопросам обращайтесь: ** email: order@x-scripts.com ** icq: 625657402 ** skype: igor_sev2 */ $xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // //////////////////////// настройки скрипта ///////////////////////// // ключ антикаптчи $my_key ="ваш ключ сервиса antigate.com"; // показывать через диалог $b_show_dlg=false; // путь куда сохранить картинку $img_path="C:\\Temp\\tmp.jpg"; // путь к файлу с результатами $res_path="res/accs.csv"; // user agent строки $useragents = file("data/useragent.txt"); // язык данных аккаунта $lang="RU"; // количество зареганых аккаунтов $accs_count=10; // текущий аккаунт $i_cur_accs=0; // скрипт работает в режим отладки $dbg = true; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // accept fucntions require_once("tools/accept_functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess(" скрипт запустили"); // бесконечный цикл регистрации аккаунтов while(true) { // перейти на mail.ru $browser->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. Так же для работы скрипта вам понадобятся прокси.
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// список мыл с которых отправлять $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; |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
<?php // скрипт осуществляет рассылку сообщений на различные email /* производитель: x-scripts ** тип продукта: скрипт под Xweb Human Emulator ** сайт программы: humanemulator.info ** наш сайт: x-scripts.com ** по всем вопросам обращайтесь: ** email: order@x-scripts.com ** icq: 625657402 ** skype: igor_sev2 */ $xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // //////////////////////// настройки скрипта ///////////////////////// // мыла с которых отправлять $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; // скрипт работает в режим отладки $dbg = true; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // accept fucntions require_once("tools/accept_functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess(" скрипт запустили"); // устанавливаем прокси set_proxy(); if (!$i_cur_proxy) { // выходим из скрипта $app->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("<b>Закончились все мыла куда отправлять!</b>"); $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<br>"; if ($body->get_name_by_number(0, $ifr) == "") { $ifr = get_frame_number(); //echo "изменили на $ifr<br>"; } // задать тело письма $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("<b>Закончили отправлять письма с" . $a_mail[0] . "</b><br>"); } debug_mess(" скрипт закончил работу<br>"); // 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. и использовать для сбора прокси наш скрипт сборщик проксей
Настройки скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ключ антикаптчи $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; |
Сам скрипт выглядит следующим образом:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?php $xhe_host ="127.0.0.1:7011"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // //////////////////////// настройки скрипта ///////////////////////// // ключ антикаптчи $api_key_antg ="3db8af5d080608c34f7b42208cd1ea5d"; // показывать через диалог $b_show_dlg=false; // путь куда сохранить картинку $img_path="C:\\Temp\\tmp.jpg"; // путь к файлу с результатами $res_path="res/accs.csv"; // user agent строки $useragents = file("data/useragent.txt"); // язык данных аккаунта $lang="RU"; // количество зареганых аккаунтов $accs_count=10; // текущий аккаунт $i_cur_accs=0; // скрипт работает в режим отладки $dbg = true; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // accept fucntions require_once("tools/accept_functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт запустили"); // бесконечный цикл регистрации аккаунтов while(true) { // перейти на mail.ru $browser->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\] ")." скрипт закончил работу<br>"); // Quit $app->quit(); ?> |
Скрипт написан 15.11.2012 в Human Emulator 4.4.23 Advanced.
На момент публикации статьи 19.11.2012 скрипт был рабочий.