СКРИПТ: Парсер email.

Сбор и анализ всего что можно собрать из сети.
Ответить
Аватара пользователя
XwebDeveloper
Сообщения: 51
Зарегистрирован: 13 ноя 2017, 12:53

СКРИПТ: Парсер email.

Сообщение XwebDeveloper » 12 мар 2020, 15:52

Версия программы: 7.0.45

Сборщик электронной почты с сайтов из выдачи Google.

Браузер: Chromium.

Логика: Есть файл с ключевыми запросами. Вбиваем запросы из файла в поисковик Google, получаем из выдачи все ссылки на сайты и делам проход по всем сайтам, находим страницу контактов и собираем с этих страниц все email адреса, сохраняем собранные email в файл и в конце удаляем все дубликаты из файла.

Скрипт состоит:
Запускаем get_mails.php.
В папке data лежит файл keys.txt, в котором записаны ключевые запросы для поиска сайтов.
В процессе работы скрипта в папке res создаётся файл email.txt с результатами сбора.

Скачать скрипт:
get_mails.zip
(3.5 КБ) 98 скачиваний
Для работы скрипта задаём настройки программы следующим образом:
settings.jpg
settings.jpg (140.61 КБ) 766 просмотров
Выдача Гугл с таким настройками будет в таком виде:
se.jpg
se.jpg (113.05 КБ) 766 просмотров
Скрипт:
<?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) ;
}
В этом же месте в скрипте по аналогии можно добавить сбор телефонов или другой интересующей контактной информации.
Запрос на создание скриптов viewforum.php?f=61

Ответить