Подскажите, как получить со страницы капчу? Мне надо её просто загрузить в свой php-скрипт.
Сделать get запрос к ней)
Не это, понятно. Но как найти на странице саму картинку?
Не это, понятно. Но как найти на странице саму картинку?
регуляркой, либо, если капча не меняет ссылку, то просто используй саму ссылку
FireFenix
07.06.2009, 17:01
В соседней теме Gifts выкладывал как обрабатывать капчу
Пример для МирТесен.Ру (Запрос капчи + авторизация)
<?php
$login = 'login';
$pass = 'pass';
session_start();
function post($url='',$content=null,$referer=null,$follow=0 )
{
GLOBAL $cookie;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $follow);
if (!empty($cookie)) curl_setopt($ch, CURLOPT_COOKIE, implode('; ',array_values($cookie)));
if (!empty($content)) {curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $content);} else {curl_setopt($ch, CURLOPT_POST, 0);}
if (!empty($referer)) curl_setopt($ch, CURLOPT_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;
}
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot