Как обойти каптчу на phpbb форумах CURL

[Удален]
883

Есть определенный сайт на котором я бы хотел зарегистрироваться средствами curl, но там есть одна большая (для меня) проблема - каптча. Я хочу выводить ее к себе на экран, но у меня это не получается, картинка имеет адрес вида:

profile.php?mode=confirm&id=31937156df87f1b276a94d86f6b820b2 &sid=62e23bd86dd483b8916885ba69b41d31

вот мой код:


//инициализируем curl сессию
$ch = curl_init();
//указываем url страницы регистрации
curl_setopt($ch, CURLOPT_URL, $referer);
//задаем прочие параметры сессии
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//выполняем запрос
$result = curl_exec($ch);


// регулярка,для парсинга cookie
preg_match_all("/nsuBB_sid="."[\w]{32}/", $result, $matches);
foreach($matches[0] as $value)
{
$value;
}

//записываем куки
curl_setopt($ch, CURLOPT_COOKIE, "$value;nsuBB_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D");
//выполняем запрос
$cookie= curl_exec($ch);


$html = new simple_html_dom(); // создаем объект
$html->load($cookie); //загружаем результат запроса

//ищем нужный img и его src
foreach($html->find('img[alt=""]') as $element) {
$img = $element->src;
}
//выводим картинку на экран
echo "<img src='http://www.nsu.ru/phpBB/$img'>";

Объясните пожалуйста может я чего не понимаю, в чем тут дело, почему картинка не выводится?! Может быть дело в выполнении запросов? Т.е. на форуме каптча меняется при каждом обновлении страницы, а curl_exec - не что иное как запрос...Если это так, то как тогда принять кукисы? Может быть у меня вообще ошибка в построении программы и где-нибудь что-то не дописал. Надеюсь на вашу помощь

IL
На сайте с 20.04.2007
Offline
435
#1

Картинку сохраняешь к себе, и линк даёшь на сохранённую картинку.

Куки в браузере и куки в CURL-е - 2 большие разницы (С)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
B1
На сайте с 13.12.2012
Offline
28
#2

через CURL надо капчу грузить, с тем-же коки в браузер.

[Удален]
#3

<?php


$referer = 'http://www.nsu.ru/phpBB/profile.php?mode=register&agreed=true';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $referer);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.txt");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8");

$fp = fopen(dirname(__FILE__).DIRECTORY_SEPARATOR.'cap.txt', 'wt');
curl_setopt($ch, CURLOPT_FILE, $fp);

$res = curl_exec($ch);
curl_close($ch);
fclose($fp);

$fp = file_get_contents(dirname(__FILE__).DIRECTORY_SEPARATOR.'cap.txt');
preg_match("/profile\.php\?mode=confirm&amp;id=[\w]{32}&amp;sid=[\w]{32}/i",$fp, $matches);
$profile = $matches[0];


$imgurl = "http://www.nsu.ru/phpBB/"."$profile";


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $imgurl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.txt");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8");

$fp = fopen(dirname(__FILE__).DIRECTORY_SEPARATOR.'cap.png', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);

$img = curl_exec($ch);

curl_close($ch);
fclose($fp);

?>

сейчас так и делаю, в чем косяк?

ST
На сайте с 31.03.2009
Offline
52
#4

Сейчас все сайты на phpbb и других форумах помимо капчи используют рандомный вопрос от спам-ботов, он кстати и без капчи хорошо помогает, на 99%.

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