Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: разгадывание каптчи

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kir55rus
Отправлено: 17 Марта, 2012 - 12:17:39
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




Здравствуйте, требуется разгадать каптчу на http://audance[dot]ru/register
хотел сделать так, чтобы скрипт вытягивал url картинки и предлагал рядом ввести ответ.
Но оказалось, что url не меняется. Как я понял, картинка генерируется через javascript.

Как можно узнать ответ для этой каптчи, либо как вывести на экран картинку, которая будет идентична той, что выдал сайт?

Заранее благодарен за ответ
 
 Top
Okula
Отправлено: 17 Марта, 2012 - 12:24:59
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




kir55rus, капча генерируется там не через JS а через PHP.
Вот ссылка на генерируемую картинку: http://audance[dot]ru/captcha
А если хочешь разгадывать её то разбивай по маске и сравнивай цвета.
 
 Top
kir55rus
Отправлено: 17 Марта, 2012 - 15:08:12
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Янв. 2012  
Откуда: Омск, Россия


Помог: 0 раз(а)




попробовал сделать так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. include 's_http.php';
  4.  
  5. $curl = new s_http();
  6. $curl -> init();
  7.  
  8. //отправляем запрос
  9. if(isset($_POST['code']))
  10. {
  11.         if($curl -> post('http://audance.ru/register', 'mod=register&sconfirm=0&user=ЛОГИНemail=МЫЛО&fuser=ЛОГИН&gender=male&birthday_day=28&birthday_mounth=7&birthday_year=1986&pwd1=ПАРОЛЬ&pwd2=ПАРОЛЬ&code='. $_POST['code'] .'&agb=1'))
  12.         {
  13.                 echo $curl -> data();
  14.         }else echo $curl -> error();
  15.        
  16. }
  17.  
  18.  
  19. //выводим картинку
  20. echo '<img src="http://audance.ru/captcha" />
  21. <form action="" method="post">
  22. <input type="text" name="code" />
  23. <input type="submit" value="Submit" />
  24. </form>
  25. ';
  26.  
  27.  
  28. ?>


Содержимое s_http.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         /************************************************
  4.          * s_http - samborsky_http
  5.          *
  6.          * Упрощенный класс для работы с http протоколом на базе
  7.          * библиотеки curl
  8.          *  
  9.          * Версия: 1.02
  10.          * Начало работ: 06.05.2008
  11.          *
  12.          *************************************************/
  13.    
  14.         class s_http{
  15.                
  16.                 // Хендл
  17.                 private $curl = NULL;
  18.                
  19.                 // Последний урл
  20.                 var $url;
  21.                
  22.                 // Последняя POST DATA
  23.                 var $post_data;
  24.                
  25.                 // Скачанные данные
  26.                 var $data;
  27.                
  28.                 // User Agent
  29.                 var $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8';
  30.                
  31.                 // String: Последняя ошибка
  32.                 var $error;
  33.                
  34.                 var $referer;
  35.                
  36.                 /***
  37.                  * Инициализация
  38.                  */
  39.                 function init(){
  40.                        
  41.                         $this->curl = curl_init();
  42.                        
  43.                         if( !$this->curl ){
  44.                                 $this->error = curl_error($this->curl);
  45.                                 return;
  46.                         }
  47.                        
  48.                         $this->set_opt(CURLOPT_RETURNTRANSFER,true);
  49.                         $this->set_opt(CURLOPT_CONNECTTIMEOUT,30);
  50.                         $this->set_opt(CURLOPT_USERAGENT,$this->user_agent);
  51.                         $this->set_opt(CURLOPT_HEADER,false);
  52.                         $this->set_opt(CURLOPT_ENCODING,'gzip,deflate');
  53.                         $this->set_opt(CURLOPT_FOLLOWLOCATION,true);
  54.  
  55.                         // Кукисы
  56.                         $this->set_opt(CURLOPT_COOKIESESSION,true);
  57.                         $this->set_opt(CURLOPT_COOKIEFILE,'cookie.txt');
  58.                        
  59.                         // Если Referer не задан, включаем автореферер. Как в браузерах
  60.                         if( !empty($this->referer) ){
  61.                                 $this->set_opt(CURLOPT_REFERER,$this->referer);
  62.                         }
  63.                 }
  64.                
  65.                 /***
  66.                  * Деструктор
  67.                  */
  68.             function __destruct() {
  69.                 if( $this->curl ){
  70.                                 curl_close($this->curl);
  71.                                 $this->curl = NULL;
  72.                         }
  73.             }
  74.  
  75.             /***
  76.              * Последняя ошибка
  77.              */
  78.             function error(){
  79.                 return $this->error;
  80.             }
  81.            
  82.             /***
  83.              * Скачанные данные в виде строки
  84.              */
  85.             function data(){
  86.                 return $this->data;
  87.             }
  88.                
  89.             /***
  90.              * Внутренняя функция. Устанавливаем опцию
  91.              */
  92.                 private function set_opt($opt,$val){
  93.                         if( !curl_setopt($this->curl,$opt,$val) ){
  94.                                
  95.                                 $this->error = curl_error($this->curl);
  96.                                 return false;
  97.                         }
  98.                         return true;
  99.                 }
  100.                
  101.                 /***
  102.                  * Сохраняем скачанные данные в файл
  103.                  */
  104.                 function to_file($name){
  105.                        
  106.                         if( $f = fopen($name,'w') ){
  107.                                
  108.                                 fwrite($f,$this->data);
  109.                                 fclose($f);
  110.                                 return true;
  111.                         }
  112.                         else{
  113.                                 $this->error = 'Не удалось записать в файл. Проверьте правильность пути или права на файл.';
  114.                         }
  115.                        
  116.                         return false;
  117.                 }
  118.                
  119.                 /***
  120.                  * Обычный GET запрос
  121.                  */
  122.                 function get($url){
  123.                        
  124.                         $this->url = $url;
  125.                        
  126.                         if( empty($this->url) ){
  127.                                 $this->error = 'Не указан URL';
  128.                                 return false;
  129.                         }
  130.                        
  131.                         $this->set_opt(CURLOPT_URL,$this->url);
  132.                         $this->set_opt(CURLOPT_POST,false);
  133.  
  134.                         return $this->exec();                  
  135.                 }
  136.                
  137.                 /***
  138.                  * https GET запрос
  139.                  */
  140.                 function https_get($url){
  141.                        
  142.                         $this->url = $url;
  143.                        
  144.                         if( empty($this->url) ){
  145.                                 $this->error = 'Не указан URL';
  146.                                 return false;
  147.                         }
  148.                        
  149.                         $this->set_opt(CURLOPT_URL,$this->url);
  150.                         $this->set_opt(CURLOPT_SSL_VERIFYHOST,0);
  151.                         $this->set_opt(CURLOPT_SSL_VERIFYPEER,false);
  152.                        
  153.                         return $this->exec();                  
  154.                 }
  155.                
  156.                 /***
  157.                  * Внутренняя функция. Выполняет запрос
  158.                  */
  159.                 private function exec(){
  160.                        
  161.                         if( false == ($this->data = curl_exec($this->curl)) ){
  162.                                
  163.                                 $this->error = curl_error($this->curl);
  164.                                 return false;
  165.                         }
  166.                        
  167.                         return true;
  168.                 }
  169.                
  170.                 /***
  171.                  * Обычный POST запрос
  172.                  */
  173.                 function post($url,$post_data){
  174.                         $this->url = $url;
  175.                         $this->post_data = $post_data;
  176.                        
  177.                         if( empty($this->url) ){
  178.                                 $this->error = 'Не указан URL либо POST DATA';
  179.                                 return false;
  180.                         }
  181.                        
  182.                         $this->set_opt(CURLOPT_URL,$this->url);
  183.  
  184.                         // POST
  185.                         $this->set_opt(CURLOPT_POST,true);
  186.                         $this->set_opt(CURLOPT_POSTFIELDS,$this->post_data);
  187.                        
  188.                         return $this->exec();
  189.                 }
  190.         }      
  191.        
  192. ?>




Ничего не происходит. Регистрация не проходит. На странице, куда передаю post запрос, ничего не меняется. Как-будто я просто загружаю страницу регистрации.
Пробовал изменять url на http://audance.ru/ajax/register, не помогло.
Можете подсказать, где я ошибся? либо на словах объяснить алгоритм скрипта?


UPD.
Перехватывал данные через temper data. Из его показаний сделал следующий post запрос:
CODE (htmlphp):
скопировать код в буфер обмена
  1. email=МЫЛО&login=ЛОГИН&nick=ЛОГИН&gender=male&birthday_day=28&birthday_mounth=7&birthday_year=1986&passwd=ПАРОЛЬ&captcha='. $_POST['code'] .'&sconfirm=0

Но опять ничего не вышло

(Отредактировано автором: 17 Марта, 2012 - 15:20:27)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB