Скрипт сбора мыл по результатам гугла, по вашему ключевому слову. Приемущества: 1) Всегда складывает найденные мыла в файл с каждой страницы кеша гугла. 2) Стало возможным указывать сразу по несколько файлов. Как только файл заполняется, открывается следующий, и т.д. Если файлы кончаются, то скрипт останавливается. 3) Можно задать максимальный размер файла с мылами. Не задавайте более 500 кб. 4) можно задавать побольше слов для поиска, побольше имён файлов и оставлять скрипт работать сколько угодно Надеюсь будет вам полезен Code: <?php set_time_limit(0); /************************CONFIG************************/ $q= array('emailы','email'); //поисковые слова или фразы(пробел меняйте на %20) $start= array(0 ,1 ); //соответствующее значение, с какой страницы в гугле начинать просматривать результаты. $shend= array(2 ,3 ); //соответствующее значение, до какой страницы просматривать результаты. Если все хотите просмотреть, установите 0. $files= array('emails.txt','emails1.txt','emails2.txt','emails3.txt','emails4.txt','emails5.txt'); //файлы, в который следует сбрасывать мыла. Когда первый файл будет заполняться (~600кб), будут использоваться последующие $browser="Opera/9.02 (Windows NT 5.1; U; en)"; //браузер, которым якобы лазим $r="\r\n"; //разделитель мыл в файле. \r\n для windows, \n для *nix $log=1; //уровень вывода инфы о сборе. 0 - почти без вывода, 1 - средне, 2 - подробно. Рекомендуется 1, чтобы знать, на какой странице остановился поиск. $search_all=true; //если true, то гугл не будет опускать при поиске похожие, по его мнению, результаты $max_size=500000; //максимальный размер одного файла с мылами. /************************END************************/ $p="/[a-z]{1,1}[a-z._-]+@([a-z._-]+)\.[a-z]{2,6}/is"; function cnct($host,$q,$st,$type=0) { global $p; global $next; global $pages; global $browser; global $search_all; $ret=""; if($type==0) { if($search_all) $add='&filter=0'; else $add=''; $service_uri = "/search?hl=ru&q=$q&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&start=$st$add"; } else { $service_uri = "/search?q=cache:$q"; } $header="Host: $host\r\n"; $header.="User-Agent: $browser\r\n"; $header.="Content-Type: application/x-www-form-urlencoded\r\n"; $header.="Content-Length: 0\r\n"; $header.="Connection: close\r\n\r\n"; $fp = fsockopen("tcp://".$host,80,$errno,$errstr); if(!$fp) { print "<i>Socket error: $errstr ($errno)</i><br>"; } else { fputs($fp, "GET $service_uri HTTP/1.1\r\n"); fputs($fp, $header.$vars); fwrite($fp, $out); while(!feof($fp)) { $ret.=fgets($fp, 128); } fclose($fp); } if($type==0) preg_match_all("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/search\?q=cache:([^\"]+)/is",$ret,$links2); else preg_match_all($p,$ret,$links2); if($type==0) { $st=$st/10+2; if(strpos($ret,"<div class=nr></div>$st</a>")===false || ($st>$pages && $pages>0)) $next=0; else $next=1; } return $links2; } print 'Starting...<br><br>'; ob_flush(); flush(); $total=array(); $tmp=''; $file=''; $totalemails=0; $numfiles=0; $totalemail=0; reopen(); for($words=0,$wcnt=count($q);$words<$wcnt;$words++) { $pos=$start[$words]; $pages=$shend[$words]; $next=1; if($pages==0) $topos=100; else $topos=$pages; if($log>0) { print "searching <b>".htmlspecialchars($q[$words])."</b> from position <b>$pos</b> to <b>$topos</b>...<br>"; ob_flush(); flush(); } $pos*=10; while($next) { if($log>0) { print "viewing page ".($pos/10+1)."... "; ob_flush(); flush(); } $x=cnct('www.google.ru',$q[$words],$pos); for($i=0,$cnt=count($x[0]);$i<$cnt;$i++) { $x[2][$i]=str_replace("\n",'',$x[2][$i]); $x[1][$i]=str_replace("\n",'',$x[1][$i]); } if($log>0) { print count($x[1])." cache(s)...<br>"; ob_flush(); flush(); } $pcnt=0; for($i=0,$cnt=count($x[0]);$i<$cnt;$i++) { $y=cnct($x[1][$i],$x[2][$i],0,1); $pemails=count($y[0]); $pcnt+=$pemails; if($log>1) { print "cache $i: found $pemails email(s)<br>"; ob_flush(); flush(); } foreach($y[0] as $elem) { $total[]=strtolower($elem); } $total=array_unique($total); fseek($fpe,0,SEEK_SET); ftruncate($fpe,0); foreach($total as $eml) { $tmp.=$eml.$r; } fwrite($fpe,$tmp); fflush($fpe); $totalemail=count($total); if(strlen($tmp)>$max_size) { $totalemails+=$totalemail; $totalemail=0; reopen(); } $tmp=''; } if($log>0) { print "->found $pcnt non-unique e-mail(s)...<br>"; ob_flush(); flush(); } $pos+=10; } } print "<b>Finished.</b> TOTAL ".($totalemails+$totalemail)." email(s) in $numfiles last file(s)<br>"; function reopen() { global $fpe; global $total; global $files; global $file; global $max_size; global $numfiles; if($fpe) { print "<i>E-mail file size too big, creating/opening next file...</i><br>"; fclose($fpe); } $total=array(); $opened=false; foreach($files as $fl) { if($fl && (!file_exists($fl) || filesize($fl)<$max_size)) { if(file_exists($fl)) { print "Reading e-mails from file...<br><br>"; ob_flush(); flush(); } $fpe=fopen($fl,"a+"); if(!$fpe) die("Cannot create/open file!"); if(fseek($fpe,0,SEEK_SET)==-1) die("Cannot read from file!"); while(($str=fgets($fpe))!==false) { $total[]=strtolower(trim($str)); } $total=array_unique($total); $file=$fl; $opened=true; break; } } if(!$opened) die("Cannot create/open any file!"); $numfiles++; } ?>