Авторизация на форуме

Статус
В этой теме нельзя размещать новые ответы.
PHP:
<? 
$login = 'try_or_die'; 
$password = 'nulled'; 
$query = array ( 
    'do' => 'login', 
    'url' => '/usercp.php', 
    'vb_login_md5password' => md5($password), 
    'vb_login_md5password_utf' => md5($password), 
    's' => '', 
    'securitytoken' => 'guest', 
    'vb_login_username' => $login, 
    'vb_login_password' => '',  //здесь наверно должна быть переменная $password
  ); 
  $query_str = http_build_query($query); 
  $url = 'http://forums.goha.ru/10gin.php'; 
  $agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7'; 
  $header[] = "Accept: text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5" ; 
  $header[] = "Accept_charset: windows-1251, utf-8, utf-16;q=0.6, *;q=0.1"; 
  $header[] = "Accept_encoding: identity"; 
  $header[] = "Accept_language: en-us,en;q=0.5"; 
  $header[] = "Connection: close"; 
  $header[] = "Cache-Control: no-store, no-cache, must-revalidate"; 
  $header[] = "Keep_alive: 300"; 
  $header[] = "Expires: Thu, 01 Jan 1970 00:00:01 GMT"; 
  $ch = curl_init();  
  curl_setopt($ch, CURLOPT_URL,$url);  
  curl_setopt($ch, CURLOPT_HEADER, 1); 
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
  curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
  curl_setopt($ch, CURLOPT_POST, 1); 
  curl_setopt($ch, CURLOPT_POSTFIELDS, $query_str); 
  curl_setopt ( $ch , CURLOPT_USERAGENT , $agent); 
  curl_setopt ( $ch , CURLOPT_HTTPHEADER , $header); 
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
  $text = curl_exec($ch); 
  curl_close($ch);         
  preg_match('|URL=(.*)"|', $text, $out); 
  $url = $out[1]; 
  $ch = curl_init();  
  curl_setopt($ch, CURLOPT_URL,$url); 
  curl_setopt($ch, CURLOPT_HEADER, 1); 
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
  curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
  curl_setopt ( $ch , CURLOPT_USERAGENT , $agent); 
  curl_setopt ( $ch , CURLOPT_HTTPHEADER , $header); 
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
  $result = curl_exec($ch); 
  curl_close($ch); 
  echo $result; 
?>
'vb_login_password' => '', //здесь должна быть переменная $password иначе скрипт у меня не работает, автор скрипта забыл вставить? или почему строка пустая?
и еще вопрос порядок размещения значений массивов $header и $query должен быть именной таким или без разницы?
А значений массива $header должно быть именно столько или можно убрать некоторые?
 
PHP:
'vb_login_password' => '', //здесь должна быть переменная $password
не должна быть. скачай для мозиллы расширение которое будет отслеживать передаваемые заголовки. там сразу увидишь что vb_login_password должна быть пустой

Добавлено через 2 минуты
помогите пожалуйста решить ту же самую задачу, только с помощью сокетов! накидал скрипт- нифига не выходит
PHP:
$login = 'try_or_die'; 
$password = 'nulled'; 
$query = array ( 
    'do' => 'login', 
    'url' => '/usercp.php', 
    'vb_login_md5password' => md5($password), 
    'vb_login_md5password_utf' => md5($password), 
    's' => '', 
    'securitytoken' => 'guest', 
    'vb_login_username' => $login, 
    'vb_login_password' => '', 

  ); 
$query_str = http_build_query($query);
GetPage2('http://forums.goha.ru/10gin.php', $query_str);
echo GetPage2('http://forums.goha.ru/');

function GetPage2($url, $data='', $timeout = 5) {
   $url_parsed = parse_url($url);
   $host = $url_parsed["host"];

   if ($url == '' || $host == '') return false;
   $hostName = gethostbyname($host);
   $ip = ip2long($hostName);
   if ($ip === -1 || $ip === false) return false;
   $port = ($url_parsed["port"] == 0 ? 80 : $url_parsed["port"]);
   $path = (empty($url_parsed["path"]) ? '/' : $url_parsed["path"]);
   $path.= (!empty($url_parsed["query"]) ? '?'.$url_parsed["query"] : '');
   $sending_headers = "POST $path HTTP/1.0\r\n";
   $sending_headers .= "Host: $host\r\n";
   $sending_headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)\r\n";
   $sending_headers .= "Keep_alive: 300\r\n";
   $sending_headers .= "Accept_charset: windows-1251, utf-8, utf-16;q=0.6, *;q=0.1\r\n";
   $sending_headers .= "Accept_encoding: identity\r\n";
   $sending_headers .= "Content-type: application/x-www-form-urlencoded\r\n";
   $sending_headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
   $sending_headers .= "Connection: Close\r\n\r\n";
   $fp = fsockopen($host, $port, $errno, $errstr, intval($timeout));
   if (!$fp) return false;
   stream_set_timeout($fp, intval($timeout));
   fwrite($fp, $sending_headers.$data);

   $headers = '';
   $content = '';
   $buf = '';
   $isBody = false;
   while (!feof($fp)) {
        $buf = fgets($fp, 1024);
        if ($isBody) {
            $content .= $buf;
        } else {
            $headers .= $buf;
        }
        if ($buf == "\r\n" ) {
            $isBody = true;
        }
   }
   preg_match('#HTTP/1.[0-9]{1}\s+([0-9]{3}).*#is', $headers, $match);
   fclose($fp);
   //if($match[1] != 200) return false;
   $content= iconv($charsets[detect_cyr_charset($result)],'UTF-8',$content);
   //return array('headers'=>$headers,'body'=>$content);
   return $content;
}
function detect_cyr_charset($str) {
    $charsets = Array('k'=>0,'w'=>0,'d'=>0,'i'=>0,'m'=>0);
    for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) {
        $char = ord($str[$i]);
        //non-russian characters
        if ($char < 128 || $char > 256) continue;
        //CP866
        if (($char > 159 && $char < 176) || ($char > 223 && $char < 242)) $charsets['d']+=LOWERCASE;
        if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE;
        //KOI8-R
        if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE;
        if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE;
        //WIN-1251
        if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE;
        if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE;
        //MAC
        if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE;
        if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE;
        //ISO-8859-5
        if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE;
        if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE;
    }
    arsort($charsets);
    return key($charsets);
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху