Заиметь капчу яши

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

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

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Народ, сразу говорю, яшу и гошу уже мучаю третий день.. сил моих больше нет, решил спросить на форуме. В пхп - нуб, учусь. Задача: вытянуть капчу яши вот отсюда:

    https://passport.yandex.ru/digits?idkey=$idkey (это второй шаг регистрации)
    idkey - известен.
    Вобщем хочу картинку эту. Заранее всем благодарен!
     
  2. DIAgen

    DIAgen Постоялец

    Регистр.:
    30 окт 2006
    Сообщения:
    134
    Симпатии:
    72
    Вот держи, один из возможных вариантов :)


    PHP:
    $idkey '06N1251226363Jq4Bgmbl6';
    $img_capcha_yandex file_get_contents('http://passport.yandex.ru/digits?idkey='.$idkey);
    header ('Content-Type: image/gif');
    echo 
    $img_capcha_yandex;
    file_put_contents ($idkey '.gif'$img_capcha_yandex);
    :crazy:
     
    bikuri нравится это.
  3. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Вот говорит:
    Warning: file_get_contents(http://passport.yandex.ru/digits?idkey=14P12512287919CNeRf2Jy) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\home\localhost\www\yareg.php on line 52

    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\yareg.php:9) in Z:\home\localhost\www\yareg.php on line 53

    Мне это уже в кошмарных снах снится :mad:
     
  4. nsd_net

    nsd_net Создатель

    Регистр.:
    12 июл 2009
    Сообщения:
    26
    Симпатии:
    7
    HTML:
    header ('Content-Type: image/gif');
    это в самом начале файла напиши)
    все лишние хтмловские теги удали
     
    bikuri нравится это.
  5. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Тэги убрал... одной ошибкой меньше стало, но результата нет.

    Вот это мне говорит ExpertEditor:

    Warning: file_get_contents(http://passport.yandex.ru/digits?idkey=12E1251235580zdEDly4xZ) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\WebServers\home\localhost\www\yareg.php on line 45
    Error in my_thread_global_end(:( 1 threads didn't exit

    (допускаю, что он криво у меня настроен)

    Вот это Firefox:

    Изображение "http://localhost/yareg.php" не может быть показано, так как содержит ошибки.

    Не бросайте меня, вот-вот Кондрат хватит!:thenks:


    ЗЫ
    Создается пустой файл $idkey.gif
     
  6. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    А кукис сессии на первом шаге запоминаем?
     
  7. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Куки не трогал.. а надо? да и сессии как-то мимо прошли... ))
    объясни ламаку, плз.
     
  8. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    Попробуй
    PHP:
    <?

    $data "step=one&filled=yes&fresh&iname=Test&fname=TestTest&login=TestTestTest000&done=%C4%E0%EB%FC%F8%E5%A0%26%238594%3B";
    $ret request('POST''passport.yandex.ru''/passport?mode=register'$data0);
    preg_match('/idkey" value="(.+?)"/'$ret$d);
    $ret request('GET''passport.yandex.ru''/digits?idkey='.$d[1], 00);


    header ('Content-Type: image/gif');
    print 
    substr($ret,strpos($ret,"\r\n\r\n")+4);

    function 
    request($type$host$url$data$cook)
    {
     
    $fp fsockopen($host80$errno$errstr30);
     if (!
    $fp
        {
         echo 
    "$errstr ($errno)<br />\n";
         return 
    0;
        } 
     else 
        {
         if(
    $type === "GET")
            {
             
    $out "GET $url HTTP/1.0\r\n".
             
    "Host: $host\r\n".
             
    "Cookie: $cook\r\n".
             
    "Connection: close\r\n\r\n";
            }
         elseif(
    $type === "POST")
            {
             
    $out "POST $url HTTP/1.0\r\n".
             
    "Host: $host\r\n".
             
    "Cookie: $cook\r\n".
             
    "Content-Type: application/x-www-form-urlencoded\r\n".
             
    "Content-Length: ".strlen($data)."\r\n\r\n".$data;
            }

         
    fwrite($fp$out);
         
    $res '';
         while (!
    feof($fp)) $res .= fgets($fp128);
         
    fclose($fp);
         return 
    $res;
        }
    }
    ?>
     
    bikuri нравится это.
  9. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Всем ОГРОМНОЕ спасибо!
    Последний вариант подошел.
     
Статус темы:
Закрыта.