Сборщик электронной почты с сайтов из выдачи Google.
Браузер: Chromium.
Логика: Есть файл с ключевыми запросами. Вбиваем запросы из файла в поисковик Google, получаем из выдачи все ссылки на сайты и делам проход по всем сайтам, находим страницу контактов и собираем с этих страниц все email адреса, сохраняем собранные email в файл и в конце удаляем все дубликаты из файла.
Скрипт состоит:
Запускаем get_mails.php.
В папке data лежит файл keys.txt, в котором записаны ключевые запросы для поиска сайтов.
В процессе работы скрипта в папке res создаётся файл email.txt с результатами сбора.
Скачать скрипт: Для работы скрипта задаём настройки программы следующим образом: Выдача Гугл с таким настройками будет в таком виде: Скрипт:
<?php /* ** // Наш сайт https://xn--80awbbeioodeq4h3a.xn--p1ai // Скрипт сборщик email. // сделать запрос на создание скрипта // viewtopic.php?f=61&t=2572 ** */ $xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); $bUTF8Ver=true; // //////////////////////// настройки скрипта ///////////////////////// // файл с данными для скрипта $keys = file("data/keys.txt"); // файл с результатами $file_res="res/email.txt"; // глубина прохода в поисковые результаты $cnt_pages = 10; // текущая страница $crnt_page =1; // скрипт работает в режим отладки $dbg = true; // ожидание между шагами $wt = 2; $wt_long = 4; // //////////////////////// дополнительные модули /////////////// // функции require_once("tools/functions.php"); // /////////////////////// скрипт /////////////////////////////////////////// debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт запустили"); // всё закрываем и чистим $browser->close_all_tabs(); $app->clear(); sleep(1); // открывам две закладки браузера $browser->set_count(2); sleep(1); $browser->set_active_browser(0,true); // пройдёмся по всем ключевым запроса foreach($keys as $key) { // перейти на гугл $browser->navigate("google.com"); // вводим ключ с нажатием кнопки enter $input->send_keyboard_input_by_name("q",$key."\n", "20:40"); // ждём sleep(3); // обнулим перед следующим проходом $crnt_page=1; while(true) { // получить все href ссылок на страницы $sites = $anchor->get_all_by_href("/url?q=")->get_href(); // удалить дубликаты $sites = array_unique($sites); //print_r($sites); // пройдёмся по всем полученным ссылкам foreach($sites as $site) { // получаем чистую ссылку на сайт $site=get_string($site, 'url?q=', '&'); if($site=="") continue; // открыть и сделать активным новый браузер $browser->set_active_browser(1,true); echo 'переходим на сайт '.$site.'<br>'; // переходим на сайт $browser->navigate($site); sleep($wt); // перейти на контакты $anchor->click_by_inner_text("контакты"); $anchor->click_by_inner_text("Контакты"); $anchor->click_by_inner_text("О нас"); $anchor->click_by_inner_text("о нас"); sleep($wt); // ищем все email на странице preg_match_all('/[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}/i', $webpage->get_source(), $matches); // пройдёмся по полученным результатам foreach ($matches[0] as $key=>$value) { // уберём лишнее $str_mail=str_replace(">","",$value); $str_mail=str_replace("<","",$str_mail); $str_mail=str_replace("mailto:","",$str_mail); $str_mail=str_replace("/","",$str_mail); $str_mail=str_replace("mail:","",$str_mail); // запишем в файл $textfile->add_string_to_file($file_res,trim($str_mail)."\r\n",60) ; } // убрать дубликаты из файла dedupe($file_res); } // закрываем и переходим обратно $browser->set_active_browser(0,true); //$browser->close_all_tabs(); sleep($wt); // не перешли на следующую страницу if(!next_page($crnt_page)) break; } } debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу<br>"); // Quit $app->quit(); ?>
Сам сбор адресов со страницы контактов выполняется с помощью регулярного выражения php для email:
// ищем все email на странице preg_match_all('/[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}/i', $webpage->get_source(), $matches); // пройдёмся по полученным результатам foreach ($matches[0] as $key=>$value) { // уберём лишнее $str_mail=str_replace(">","",$value); $str_mail=str_replace("<","",$str_mail); $str_mail=str_replace("mailto:","",$str_mail); $str_mail=str_replace("/","",$str_mail); $str_mail=str_replace("mail:","",$str_mail); // запишем в файл $textfile->add_string_to_file($file_res,trim($str_mail)."\r\n",60) ; }В этом же месте в скрипте по аналогии можно добавить сбор телефонов или другой интересующей контактной информации.