Показать сообщение отдельно

  #14692  
Старый 15.02.2010, 11:23
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

ntldr, если еще актуально, то вот
PHP код:
<?php
  $check_url 
'http://whatismyipaddress.com/';
  
$check_port 80;
  
$check_host str_replace (array ('http://''/'), ''$check_url);
  
$check_hostent inet_pton (gethostbyname ($check_host));

  function 
send_query ($sock$url) {
    global 
$check_host;
    global 
$check_url;
    
$query "GET $url HTTP/1.1\r\n"
           
"Host: $check_host\r\n"
           
"Referer: $check_url\r\n"
           
"Accept: *//**\r\n"
           
"User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1\r\n"
           
"Connection: close\r\n\r\n";
    
$sended fwrite ($sock$query);
    
$resp '';
    while (
$buf fread ($sock1024))
      
$resp .= $buf;
    return 
$resp;
  }

  function 
socks4 ($proxy_host$proxy_port$timeout) {
    global 
$check_port;
    global 
$check_hostent;
    
$sock fsockopen ($proxy_host$proxy_port$errno$errstr$timeout);
    if (!
$sock
      return array (
'code' => -1'message' => "Connection error: [$errno$errstr\n");

    
$sk4_conn "\x04"                  // Socks version
              
"\x01"                  // Connect
              
pack ('n'$check_port// Port
              
$check_hostent          // Remote address
              
"\x00";
    
fwrite ($sock$sk4_conn);
    
$resp unpack ('C*'fread ($sock8));
    if (!isset (
$resp))
      return array (
'code' => -3'message' => 'Empty response');
    if (
count ($resp) < 8
      return array (
'code' => -3'message' => 'Too short response from proxy');
    if (
$resp[1] != && $resp[1] != 4
      return array (
'code' => -2'message' => 'Not Socks4 proxy');
    if (
$resp[2] != 0x5a)
      return array (
'code' => -3'message' => 'Request rejected');
    unset (
$resp);
    
$resp send_query ($sock'/');
    if (!isset (
$resp))
      return array (
'code' => -6'message' => 'No response for query');
    
//my $ret = parse_content ($resp);
    
fclose ($sock);
    return array (
'code' => 0'message' => $resp);
  }
  
  function 
socks5 ($proxy_host$proxy_port$timeout) {
    global 
$check_port;
    global 
$check_hostent;
    
$sock fsockopen ($proxy_host$proxy_port$errno$errstr$timeout);
    if (!
$sock)
      return array (
'code' => -1'message' => "Connection error: [$errno$errstr\n");
  
    
$sk5_conn0 "\x05"  // Socks version
               
"\x02"  // Count of client authentication methods
               
"\x00"  // Method[0] = 0 No authentication
               
"\x02"// Method[1] = 2 Username/password
    /*$sk5_conn0 = "\x05"  // Socks version
               . "\x01"  // Count of client authentication methods
               . "\x00"; // Method[0] = 0 No authentication*/
    
$sk5_conn1 "\x05" // Socks version
               
"\x01" // Connect
               
"\x00" // Reserved, should = 0x00
               
"\x01" // Address type, 1 - IPv4
               
$check_hostent           // Remote address
               
pack ('n'$check_port); // Port
    
fwrite ($sock$sk5_conn0);
    
$resp  unpack ('C*'fread ($sock2));
    if (!isset (
$resp))
      return array (
'code' => '-2''message' => 'Empty response');
    if (
count ($resp) < 2
      return array (
'code' => -4'message' => 'Too short first response from server');
    if (
$resp[1] != 5)
      return array (
'code' => -2'message' => 'Not Socks5 proxy');
    
fwrite ($sock$sk5_conn1);
    
$resp unpack ('C*'fread ($sock10));
    if (!isset (
$resp) or count ($resp) == 0)
      return array (
'code' => -4'message' => 'Empty response');
    if (
count ($resp) < 10)
      return array (
'code' => -6'message' => 'Too short second response from proxy');
    if (
$resp[2] != 0)
      return array (
'code' => -5'message' => 'Connection rejected');
    if (
$resp[5] == && $resp[6] == && $resp[7] == && $resp[8])
      return array (
'code' => -6'message' => 'SOCKS5 error');
  
    unset (
$resp);
    
$resp send_query ($sock'/');
    if (!isset (
$resp))
      return array (
'code' => -8'message' => 'No response for query');
    
//$ret = parse_content ($resp);
    
fclose ($sock);
    return array (
'code' => 0'message' => $resp);
  }


  
//$proxy = '96.237.228.5:50549'; // socks4
  
$proxy '202.102.72.38:1080';

  list (
$host$port) = explode (':'$proxy);
  echo 
$proxy"\n";
  
$res socks5 ($host$port30);
  echo 
"Result\n";
  
print_r ($res);
?>
 
Ответить с цитированием