Капча

Discussion in 'PHP' started by -JC-, 7 Jun 2009.

  1. -JC-

    -JC- Member

    Joined:
    10 Mar 2009
    Messages:
    54
    Likes Received:
    18
    Reputations:
    11
    Подскажите, как получить со страницы капчу? Мне надо её просто загрузить в свой php-скрипт.
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Сделать get запрос к ней)
     
    _________________________
  3. -JC-

    -JC- Member

    Joined:
    10 Mar 2009
    Messages:
    54
    Likes Received:
    18
    Reputations:
    11
    Не это, понятно. Но как найти на странице саму картинку?
     
  4. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    поиском виндовс!
     
    1 person likes this.
  5. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    регуляркой, либо, если капча не меняет ссылку, то просто используй саму ссылку
     
  6. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    В соседней теме Gifts выкладывал как обрабатывать капчу

    Пример для МирТесен.Ру (Запрос капчи + авторизация)
    PHP:
    <?php

        $login 
    'login'
        
    $pass 'pass'
        
    session_start(); 

        function 
    post($url='',$content=null,$referer=null,$follow=0  
        { 
            GLOBAL 
    $cookie

            
    $ch curl_init();   
            
    curl_setopt($chCURLOPT_URL,$url); 
            
    curl_setopt($chCURLOPT_HEADER1); 
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); 
            
    curl_setopt($chCURLOPT_TIMEOUT15); 
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208'); 
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION$follow);  
            if (!empty(
    $cookie)) curl_setopt($chCURLOPT_COOKIEimplode('; ',array_values($cookie))); 
            if (!empty(
    $content)) {curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$content);} else {curl_setopt($chCURLOPT_POST0);} 
            if (!empty(
    $referer)) curl_setopt($chCURLOPT_REFERER$referer); 

            
    $ss=curl_exec($ch); 
            
    curl_close($ch); 
             
            if (
    preg_match_all('#^Set-Cookie: (([^;=]+)=([^;=]+))#mi',$ss,$cook))  
            { 
                if (
    $tmpcookie=array_combine($cook[2],$cook[1])) 
                    
    $cookie=(array)$tmpcookie + (array)$cookie
            } 
            return 
    preg_replace('~[\s\S]+\r\n\r\n~U','',$ss,1); 
        } 
         
        if (!isset(
    $_POST['captcha'])) 
        { 
            
    // Удаляем сессионный файл, чтобы не путал 
            
    unset($_SESSION['mir']); 
            
    // Получаем начальные куки 
            
    $in post('http://mirtesen.ru/login'); 
            
    preg_match('#<img src="http://mirtesen.ru/captcha/login?(.*?)"#i'$in$match_capt);   
            
    // Делаем локальную копию куки ()ак надо) 
            
    file_put_contents('local.jpg',post('http://mirtesen.ru/captcha/login?'.$match_capt[1],null,'http://mirtesen.ru/login')); 
            
    // Выводим форму 
            
    echo '<img src="local.jpg" alt=""><p><form name="spam" method="POST"> 
            <input type="text" name="captcha"> 
            <input type="submit" value ="Ok"></form>'

            
    // Сохраняем куки полученные при данном запуске 
            
    $_SESSION['mir']=serialize($cookie); 
        } else 
        { 
            
    // Загружаем куки, полученные при первом запуске скрипта 
            
    $cookie $_SESSION['mir'] ? unserialize($_SESSION['mir']) : array(); 
            
    // Логинимся 
            
    post('http://mirtesen.ru/login','auth%5Bbackurl%5D=&auth%5Blogin%5D='.urlencode($login).'&auth%5Bpassword%5D='.urlencode($pass).'&auth%5Bcaptcha%5D='.trim($_POST['captcha']).'&auth%5Bremember%5D=on','http://mirtesen.ru/login'); 
            
    // Выводим страницу 
            
    $out post('http://mirtesen.ru/'); 
            
    $out iconv('UTF-8','Windows-1251',$out); 
            echo 
    $out
        } 

    ?>