Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Капча (https://forum.antichat.xyz/showthread.php?t=124030)

-JC- 07.06.2009 13:07

Капча
 
Подскажите, как получить со страницы капчу? Мне надо её просто загрузить в свой php-скрипт.

Kaimi 07.06.2009 13:09

Сделать get запрос к ней)

-JC- 07.06.2009 13:15

Не это, понятно. Но как найти на странице саму картинку?

GreenBear 07.06.2009 13:31

поиском виндовс!

Ru}{eeZ 07.06.2009 13:51

Цитата:

Сообщение от -JC-
Не это, понятно. Но как найти на странице саму картинку?

регуляркой, либо, если капча не меняет ссылку, то просто используй саму ссылку

FireFenix 07.06.2009 17:01

В соседней теме 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
    } 

?>



Время: 19:53