PHP SMTP i Socks

Тема в разделе "PHP", создана пользователем bobo85, 28 окт 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bobo85

    bobo85 Постоялец

    Регистр.:
    29 окт 2006
    Сообщения:
    124
    Симпатии:
    1
    U kogo nibud est klass ili prosto kod kotorij otpravljal bi pisma po SMTP cherez Socks??
    U menja tut est kod , eslib vi pomogli chtob on eshe i s Socks4 rabotal bilo bi chudo. Ja ne znaju kak eto sdelat

    Код:
    <?php
    
    set_time_limit(0);
    
    $proxies = explode(PHP_EOL, file_get_contents("proxy.lst"));
    
    function hex2bin($dump) {
      $dump = str_replace(' ', '', $dump); // вырезаем пробелы
      $res='';
      for ($i=0, $c=strlen($dump); $i<=$c; $i+=2) {
           $bt = (isset($dump[$i]) ? $dump[$i] : '0') . (isset($dump[$i+1]) ? $dump[$i+1] : '0');
         $res = $res.chr(hexdec($bt)); // переводим в dec и возвращаем символ по ascii коду
      }
      return $res;
    }
    
    function hex($dump) {
      $res='';
      for($i = 0, $c = strlen($dump); $i<$c; $i++)
      {
       if($i+1==strlen($dump)){$res=$res.dechex(ord($dump[$i]));} else {$res=$res . dechex(ord($dump[$i]))." ";}
      }
      return $res;
    }
    
    function len_test($dump) {
       if(strlen($dump)==1) {$dump="0".$dump;}
       return $dump;
    }
    
    $host = 'smtp.yandex.ru';
    $port = 25;
    
    class socks5 {
            var $socket;
            var $connected;
            var $debug;
    
            function socks5($ip, $port) {
                if ($this->socket = pfsockopen($ip, (int)$port, $errno, $errstr)) {
                    $buf["send"] = pack("C3", 0x05, 0x01, 0x00);
                    fwrite($this->socket, $buf["send"]);
                    $buf["recv"] =  fread($this->socket, 1024);
                    $responce = unpack("Cversion/Cmethod", $buf["recv"]);
                    if ($responce["version"] == 0x05 and $responce["method"] == 0x00) {
                        return true;
                    }
                    fclose($this->socket);
                }
                return false;
            }
    
            function connect($host, $port) {
                if ($this->socket) {
                    if (ip2long($host) == -1) {
                        $buf["send"] = pack("C5", 0x05, 0x01, 0x00, 0x03, strlen($host)).$host.pack("n", $port);
                    } else {
                        $buf["send"] = pack("C4Nn", 0x05, 0x01, 0x00, 0x01, ip2long(gethostbyname($host)), $port);
                    }
                    fwrite($this->socket, $buf["send"]);
                    $buf["recv"] =  fread($this->socket, 1024);
                    $responce = unpack("Cversion/Cresult/Creg/Ctype/Lip/Sport", $buf["recv"]);
                    if ($responce["version"] == 0x05 && $responce["result"] == 0x00) {
                        $this->connected = true;
                        return true;
                    }
                }
                $this->connected = false;
                return false;
            }
    
            function send($buffer, $length = 0) {
                if ($length = 0) {
                    $length = strlen($buffer);
                }
                if ($this->socket && $this->connected) {
                    fwrite($this->socket, $buffer, $length);
              $output = fread($this->socket, 1024);
                    return $output;
                }
                return false;
            }
    }
    
    foreach($proxies as $proxy) {
    
         $bad = true;
    
         if (!empty($proxy)) {
              list($socks_host, $socks_port) = explode(':', $proxy);
    
              $socks = new socks5($socks_host, $socks_port);
              $socks->connect($host, $port);
    
               $msg =  "HELO mail.ru\r\n".
                   "FROM: support@yandex.ru\r\n".
                   "TO: abuse@yandex.ru\r\n";
                   "\r\n".
                   "TEST\r\n".
                   ".";
              $result = $socks->send($msg);
    
    
              echo $result;
    
              $bad = false;
         }
         $fp = fopen( ( $bad ? 'bad' : 'good') . '.txt', 'a+');
         fwrite($fp, $proxy . PHP_EOL);
         fclose($fp);
    
    }
    
    
    
    
    ?>


    Добавлено через 13 минут
    plachu 10WMZ za pomosh
     
Статус темы:
Закрыта.