Web Developer On1x.com Игры как увлечение Видео–игры как хобби и увлечение. Новости игровой индустрии. Блог про видео–игры.
PAX East 2013, отчетО повторении одних и тех же квестов в играхВопросы и ответы по анонсу PlayStation 4

php обход писем на почте и переход по ссылкам

Просматривал старые архивы и набрел на один из своих скриптов. Он подключается к 110 почтовому порту сервера, запрашивает письма, ищет там ссылки, и делает к ним запрос на скачивание. В целом скрипт использовался для автоматической активации аккаунтов после регистрации на форумах.


php pop3 mail reader
<?php
$mail_server
='host.com';
$mail_login='login@host.com';
$mail_pass='password';
function 
get_data($pop_conn){
    
$data="";
    while (!
feof($pop_conn)){
        
$buffer=chop(fgets($pop_conn,1024));
        
$data.="$buffer\r\n";
        if(
trim($buffer)==".")break;
    }
    return 
$data;
}
$pop_conn=fsockopen($mail_server,110,$errno,$errstr,10);
$text='';
$code=fgets($pop_conn,1024);
fputs($pop_conn,"USER ".$mail_login."\r\n");
$codefgets($pop_conn,1024);
fputs($pop_conn,"PASS ".$mail_pass."\r\n");
$codefgets($pop_conn,1024);
fputs($pop_conn,"STAT\r\n");
$stat=fgets($pop_conn,1024);
$stat_arr=explode(' ',$stat);
print_r($stat_arr);
$for=$stat_arr[1];
for (
$i=1;$i<=$for;$i++){
    
fputs($pop_conn,"RETR ".$i."\r\n");
    
$text=get_data($pop_conn);
    
//fputs($pop_conn,"DELE ".$i."\r\n");//для удаления письма
    //$buf=fgets($pop_conn);
    
print $text;
    
$first_link='';
    
preg_match_all("#http:\/\/(.*)\n#iUs",$text,$stock);
    
$first_link=$stock[1];
    foreach (
$first_link as $k => $v){
        if(
preg_match('#mailto\:#',$v)){
            
$v='';
        }
        else
        if(
preg_match('#\.(com|ru|org|su|net|ua|md|in|cm|info)/$#',$v)){
            
$v='';
        }
        else
        if(
preg_match('#\.(com|ru|org|su|net|ua|md|in|cm|info)/([_a-zA-Z0-9]*)/$#',$v)){
            
$v='';
        }
        else
        if(
preg_match('#\.(com|ru|org|su|net|ua|md|in|cm|info)/([_a-zA-Z0-9]*)/([_a-zA-Z0-9]*)/$#',$v)){
            
$v='';
        }
        else
        if(
preg_match('#\.(com|ru|org|su|net|ua|md|in|cm|info)$#',$v)){
            
$v='';
        }
        else
        if(
preg_match('#showthread\.php\?#',$v)){
            
$v='';
        }
        
$v=str_replace('http://','',$v);
        
$v=str_replace('https://','',$v);
        
$v=str_replace("\n",'',$v);
        
$v=str_replace("\r",'',$v);
        
$v=str_replace("\t",'',$v);
        if(
$v){
            
$temp=@file_get_contents('http://'.$v);
        }
    }
}
fputs($pop_conn,"QUIT\r\n");
fclose($pop_conn);

Возможно кому-то понадобится подобный исходник. preg_replace вроде использовал для фильтра ненужных ссылок.
Всем хороших выходных. :)
Дата записи: 03.02.2012 20:53
On1x blog
my ip