Kai
Профессор
- Регистрация
- 29 Июн 2007
- Сообщения
- 322
- Реакции
- 49
- Автор темы
- #1
Вот собсна и описалово:
В поле "Сайт, с которого собирать" вбейте "otvet.mail.ru", включите опцию "Собирать только с одного сайта". Дело в том, что на сайте otvet.mail.ru, мэйл адреса задавших вопрос, либо ответивших на вопрос, записаны в таком виде, в котором их видит данный скрипт.
[RESPECT=5]
[/RESPECT]
В поле "Сайт, с которого собирать" вбейте "otvet.mail.ru", включите опцию "Собирать только с одного сайта". Дело в том, что на сайте otvet.mail.ru, мэйл адреса задавших вопрос, либо ответивших на вопрос, записаны в таком виде, в котором их видит данный скрипт.
[RESPECT=5]
Код:
<?
// Mail Grabber [bot] v0.3 by Гвоздь
// Незабудте поставить chmod 777 на все файлы скрипта!
//
// Если скрипт нарушит работу хостинга, ко мне не обращаться ;)!
// Copyright © 2006-2008, Гвоздь
@ini_set("memory_limit", "1024M");
set_time_limit(0);
ignore_user_abort(true);
/* Не трогать! */
$config["FM"] = "emails.txt"; // Файл с найденными ящиками
$config["FU"] = "urls.txt"; // Файл с найденными УРЛами
$config["FUOK"] = "urls-ok.txt"; // Файл с пройденными УРЛами
/* Не трогать! */
if(isset($_GET["go"]))
{
$_POST["url"] = str_replace("http://", "", $_POST["url"]);
if($_POST["url"] == "") {$config["URL"] = "otvet.mail.ru";}
else {$config["URL"] = $_POST["url"];}
if($_POST["size"] == "") {$config["MAXSIZE"] = "5000000";}
else {$config["MAXSIZE"] = $_POST["size"];}
if(isset($_POST["onesite"])){$config["onesite"] = $_POST["onesite"];}
$config["domens"] = $_POST["domens"];
$config["unseturl"] = "0";
mailgrab($config);
}
elseif(isset($_GET["clear"]))
{
if($_GET["clear"] == "e") {clearfile($config["FM"]);}
if($_GET["clear"] == "u") {clearfile($config["FU"]);}
if($_GET["clear"] == "o") {clearfile($config["FUOK"]);}
}
else
{
$mails_array = file($config["FM"]);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");
print
"<style type=text/css>".
"body {font-family:georgia; font-size:11px}".
"input.text {width:100px; height:20px; font-family:georgia; font-size:11px}".
"</style>".
count($mails_array)." мылок<br><br>".
"<form action='?go' method=post>".
"<input class=text type=text name=url value=''> - Сайт, с которого собирать (или оставь пустым, чтобы начать с otvet.mail.ru ;))<br>".
"<input class=text type=text name=size value='100000'> - Максимальный размер файла с мейлами (в байтах)<br>".
"<input class=text type=text name=domens> - Мейл-домен который собирать (или оставь пустым, чтобы собирать все мейлы)<br>".
"<input type=checkbox name=onesite checked> Собирать только с одного сайта (который указан выше)<br>".
"<br><input class=text type=submit value='Go'>".
"</form>".
"<hr><br>".
$config["FM"]." (".filesize($config["FM"])." байт)<br>".
"<a href='".$config["FM"]."'>Open</a><br>".
"<a href='index.php?clear=e'>Clear</a><br>".
"<br>".
$config["FU"]." (".filesize($config["FU"])." байт)<br>".
"<a href='".$config["FU"]."'>Open</a><br>".
"<a href='index.php?clear=u'>Clear</a><br>".
"<br>".
$config["FUOK"]." (".filesize($config["FUOK"])." байт)<br>".
"<a href='".$config["FUOK"]."'>Open</a><br>".
"<a href='index.php?clear=o'>Clear</a><br>".
"";
}
# Functions...
Function mailgrab($config)
{
if(filesize($config["FM"]) > $config["MAXSIZE"]) {die("Файл с мейлами достиг максимального размера!");}
if($config["URL"] == "") {die("Ошибка! Неправильный формат УРЛ'а!");}
# Вырезаем из urls.txt всякую ***ню
$funstrs = file($config["FU"]);
for($i=0; $i<sizeof($funstrs); $i++)
{
if(strstr($funstrs[$i], ".zip") OR strstr($funstrs[$i], ".rar") OR strstr($funstrs[$i], ".exe") OR strstr($funstrs[$i], ".jpg") OR strstr($funstrs[$i], ".gif") OR strstr($funstrs[$i], ".jpeg") OR strstr($funstrs[$i], ".bmp") OR strstr($funstrs[$i], ".png") OR strstr($funstrs[$i], ".7z") OR strstr($funstrs[$i], ".avi") OR strstr($funstrs[$i], ".wmv") OR strstr($funstrs[$i], ".wma") OR strstr($funstrs[$i], ".mp3") OR strstr($funstrs[$i], ".bin"))
{
unset($funstrs[$i]);
}
}
$fuset = fopen($config["FU"], "w");
fputs($fuset, implode("", $funstrs));
fclose($fuset);
# Парсим полученный УРЛ
$parse_url = parse_url("http://".$config["URL"]);
$config["PATH"] = (isset($parse_url["path"]) ? $parse_url["path"] : "").(isset($parse_url["query"]) ? "?".$parse_url["query"] : "");
$config["URL"] = $parse_url["host"];
//print $config["URL"].$config["PATH"]."<br>";
$config["PATH"] = ($config["PATH"] == "") ? "/" : $config["PATH"];
# Коннектимся к сокету на 80 порт
$sock = @fsockopen($config["URL"], 80, $errno, $errstr, 30);
# В случае дизконнекта
if(!$sock)
{
//print "".$errstr." (".$errno.")<br>\n";
$urlff = file($config["FU"]);
if(!isset($urlff[0])) {die("В файле ".$config["FU"]." нету данных для дальнейшей работы скрипта!");}
$config["URL"] = $urlff[0];
$config["URL"] = str_replace("
", "", $config["URL"]);
if($config["unseturl"] == "1")
{
unset($urlff[0]);
$fuset = fopen($config["FU"], "w");
fputs($fuset, implode("", $urlff));
fclose($fuset);
}
# Делаем запись в файл urls-ok.txt
$urlsok = "";
$fuok = file($config["FUOK"]);
for($aok=0; $aok<sizeof($fuok); $aok++){$urlsok .= $fuok[$aok];}
if(!strstr($urlsok, "
".$config["URL"]."".$config["PATH"]."
"))
{
fwrite(fopen($config["FUOK"], "a+"), "".$config["URL"]."".$config["PATH"]."
");
}
$config["unseturl"] = "1";
mailgrab($config);
}
# При удачном коннекте
else
{
$s = "";
$out = "GET ".$config["PATH"]." HTTP/1.1\r\n".
"Host: ".$config["URL"]."\r\n".
"Connection: Close\r\n\r\n";
fwrite($sock, $out);
while(!feof($sock)) $s .= fgets($sock, 128);
fclose($sock);
# Делаем запись в файл urls-ok.txt
$urlsok = "";
$fuok = file($config["FUOK"]);
for($aok=0; $aok<sizeof($fuok); $aok++){$urlsok .= $fuok[$aok];}
if(!strstr($urlsok, "
".$config["URL"]."".$config["PATH"]."
"))
{
fwrite(fopen($config["FUOK"], "a+"), "".$config["URL"]."".$config["PATH"]."
");
}
# Избавляемся от лишнего мусора, для более корректной работы
/*$s = preg_replace("!<style.*?type=\"?'?([^ \"'>]+)\"?'?.*?>(.*)</style>!is","",$s);*/
$s = strip_tags($s, "<a><META>");
$s = str_replace(" ", "", $s);
$s = str_replace(" ", "", $s);
$s = str_replace(" ", " ", $s);
$s = str_replace(" ", " ", $s);
$s = str_replace("&", "&", $s);
/*$s = preg_replace("!<a.*?href=\"?'?([^ \"'>]+)\"?'?.*?>(.*)</a>!is","",$s);*/
# Парсим полученный код страницы для большего процента обнаружения мейлов
$s = str_replace(" собака ", "@", $s);
$s = str_replace(" точка ", ".", $s);
$s = str_replace(" Собака ", "@", $s);
$s = str_replace(" Точка ", ".", $s);
$s = str_replace("[at]", "@", $s);
$s = str_replace("[dog]", "@", $s);
$s = str_replace("[dot]", ".", $s);
$s = str_replace("(a)", "@", $s);
$s = str_replace("(@)", "@", $s);
# Ищем майл боксы
preg_match_all("!(([a-z0-9-_]+)|(([a-z0-9-_]+\.)+([a-z0-9-_]+)))(@)(([a-z0-9-_]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})!is", $s, $marray);
# Пишем найденные мейлы в emails.txt
for($i=0; $i<sizeof($marray[0]); $i++)
{
$mails = "";
$fm = file($config["FM"]);
for($a=0; $a<sizeof($fm); $a++) {$mails .= $fm[$a];}
if(!strstr($mails, "
".$marray[0][$i]))
{
if($config["domens"] !== "")
{
if(strstr($marray[0][$i], "@".$config["domens"]))
{
fwrite(fopen($config["FM"], "a+"), $marray[0][$i]."
");
}
}
else
{
fwrite(fopen($config["FM"], "a+"), $marray[0][$i]."
");
}
}
}
# Ищем УРЛ'ы
preg_match_all("!<a[^>]+href=\"?'?([^
\"'>]+)\"?'?[^>]*>(.*?)</a>!is", $s, $uarray);
# Пишем найденные УРЛ'ы в urls.txt
for($u=0; $u<sizeof($uarray[1]); $u++)
{
if(!strstr($uarray[1][$u], "http://"))
{
$uarray[1][$u] = "http://".$config["URL"]."/".$uarray[1][$u];
}
$urls = "";
$urlsok = "";
$fu = file($config["FU"]);
$fuok = file($config["FUOK"]);
$uarray[1][$u] = str_replace(array("http://", "ftp://", "https://"), array("", "", ""), $uarray[1][$u]);
for($a=0; $a<sizeof($fu); $a++) {$urls .= $fu[$a];}
for($aok=0; $aok<sizeof($fuok); $aok++) {$urlsok .= $fuok[$aok];}
if(!strstr($urls, "
".$uarray[1][$u]) && !strstr($urlsok, "
".$uarray[1][$u]))
{
if(filesize($config["FU"]) < "10000")
{
if(isset($config["onesite"]))
{
if(strstr("http://".$uarray[1][$u], "http://".$config["URL"]))
{
fwrite(fopen($config["FU"], "a+"), $uarray[1][$u]."
");
}
}
else
{
fwrite(fopen($config["FU"], "a+"), $uarray[1][$u]."
");
}
}
}
}
$urlff = file($config["FU"]);
if(!isset($urlff[0])) {die("В файле ".$config["FU"]." нету данных для дальнейшей работы скрипта!");}
$config["URL"] = $urlff[0];
$config["URL"] = str_replace("
", "", $config["URL"]);
if($config["unseturl"] == "1")
{
unset($urlff[0]);
$fuset = fopen($config["FU"], "w");
fputs($fuset, implode("", $urlff));
fclose($fuset);
}
$config["unseturl"] = "1";
mailgrab($config);
}
}
Function clearfile($name)
{
$f = fopen($name, "w");
fclose($f);
print "<a href='index.php'>Done!</a>";
}
// Mail Grabber [bot] v0.3 by Гвоздь
// Copyright © 2006-2008, Гвоздь
?>