Подскажите по recaptcha.net

Тема в разделе "PHP", создана пользователем bikuri, 6 дек 2009.

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

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Ребята, необходимо вытащить капчу (собсно само изображение).
    Вытаскивание ключа капчи (на 200 с хером символов) почему-то не помогает... есть подозрение, что там расставлены какие-то разделители (типа пробельных:(ah: Или нет?

    Вобщем, кто сталкивался, подскажите где собака порылась.
    Спасибо!
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    по публичному ключу необходимо получить ключ для картинки, потом уже можно получить и саму картинку :)
     
  3. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Логика то как раз и понятна. Всё дело в том, что в итоге я получаю картинку... но ошибочную.. хотя ключи выдираю 100% правильные. Устал уже проверять ключи.
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    почему вы считаете, что картинка ошибочная?
     
  5. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Вот опции курла, которым вытаскиваю картинку:
    PHP:
    curl_setopt($ch,CURLOPT_URL,$url);
        
    curl_setopt($ch,CURLOPT_COOKIEFILE,'/cook.coo');
        
    curl_setopt($ch,CURLOPT_COOKIEJAR,'/сook.coo');
        
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322');
        
    curl_setopt($chCURLOPT_HEADER0);
        
    curl_setopt ($chCURLOPT_SSL_VERIFYPEER0);
        
    curl_setopt ($chCURLOPT_SSL_VERIFYHOST0);
    А картинка вот такая:
     

    Вложения:

    • cap.jpg
      cap.jpg
      Размер файла:
      5,9 КБ
      Просмотров:
      3
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    подобное я наблюдаю при запросе изображения с помощью публичного ключа, вместо так называемого ключа задачи(challenge).
     
  7. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Капец!
    Я с ума сойду!
    Значит получается следующее:
    https://api-secure.recaptcha.net/im...pu7yJT1Qgxo3yEq0YW5TVuMA7co8g5JGrcezumpeqk9gB

    отсюда берется картинка..

    значит если просто в командную строку браузера вставить - показывает капчу без проблем (Файрфокс, опера, ИЕ)

    Если работает со скрипта - отображается картинка ТОЛЬКО в опере!! Но при этом - не записывается в файл (файл пустой остаётся).
    В фоксе и ИЕ - отображается "картинка с ошибкой" и в файл она же и сохраняется.:eek:

    Меня может уже не в ту степь понесло? Занесите меня обратно :thenks:
     
  8. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    можете показать ресурс, с которым вы работаете?
     
    bikuri нравится это.
  9. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Да, тяжеловато, не видя ресурса и более-менее полного куска кода, определить в чем ошибка. Могли бы взять снифер, да посмотреть в чем разница между запросами вашего скрипта и браузера.

    Вот код для выдерания ссылки и скачки картинки:

    PHP:
            preg_match('|src="(http://api.recaptcha.net/noscript\?k=.*?)"|is'$html$out);
            
    $captcha_url $out[1];
            
    $html $curl->get($captcha_url);
            
    preg_match('|src="/image\?c=(.*?)"|is'$html$out);
            
    $captcha_url "http://api.recaptcha.net/image?c=".$out[1];
            
    $secure_id $out[1];

            
    $captcha $curl->get($captcha_url);

            
    file_put_contents($this->path."captcha.jpg"$captcha);
    Соответственно, поствьте права на captcha.jpg для записи, а в переменную $html перед этим скриптом кладёте код страницы с каптчей.

    PS: $curl - это класс обертка для POST и GET запросов. Их заменяете своими
     
    bikuri нравится это.
Статус темы:
Закрыта.