ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Google e-mail grabber
  #1  
Старый 12.06.2007, 18:36
Аватар для Solide Snake
Solide Snake
Moderator - Level 7
Регистрация: 28.04.2007
Сообщений: 547
Провел на форуме:
5516499

Репутация: 3702


Отправить сообщение для Solide Snake с помощью ICQ
По умолчанию Google e-mail grabber

Скрипт сбора мыл по результатам гугла, по вашему ключевому слову.
Приемущества:
1) Всегда складывает найденные мыла в файл с каждой страницы кеша гугла.
2) Стало возможным указывать сразу по несколько файлов. Как только файл заполняется, открывается следующий, и т.д. Если файлы кончаются, то скрипт останавливается.
3) Можно задать максимальный размер файла с мылами. Не задавайте более 500 кб.
4) можно задавать побольше слов для поиска, побольше имён файлов и оставлять скрипт работать сколько угодно

Надеюсь будет вам полезен

Код:
<?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 "-&gt;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++;
}


?>

Последний раз редактировалось Solide Snake; 12.06.2007 в 18:55..
 
Ответить с цитированием

  #2  
Старый 12.06.2007, 20:43
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

жесть --- четото мне подсказывает что это не очень продуктивно -- но ведь писал сам =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google FAQ lol2006 Статьи 1 17.05.2007 20:19
Кому не трудно помогите начинающему Pashtet Болталка 3 02.05.2007 03:33
ОС от google ? aka PSIH Мировые новости 11 28.03.2007 11:04



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ