PDA

Просмотр полной версии : скрипт php sec question rambler


binarnik
13.11.2008, 00:49
укажите плз ошибку
пишу скрипт для автоматического перебирания ответов на секретный вопрос...
застрял на моменте отсылки ответа, что-то идет не так, ответ правильный, но скрипт возвращает опять ту же форму для ввода:

<?php
$match = array();
$target = "http://id.rambler.ru/script/reminder.cgi";
$postvars = "step=asklogin&login=menta955";
$c = curl_init($target);
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://id.rambler.ru/");
curl_setopt($c, CURLOPT_USERAGENT, 'Opera/9.27 (Windows NT 5.1; U; en)');
curl_setopt($c, CURLOPT_POST, 1); // set POST method
curl_setopt($c, CURLOPT_POSTFIELDS, $postvars);
$page=curl_exec($c);
preg_match_all("/captcha\/\w+.jpg/", $page, $match);
$match[0][0] = str_replace("captcha/", "", $match[0][0]);
$number = str_replace(".jpg", "", $match[0][0]);
curl_close($c);
$page = str_replace("/captcha/".$match[0][0], "http://id.rambler.ru/captcha/".$match[0][0], $page);
$form2 = "<img src='http://id.rambler.ru/captcha/".$match[0][0]."' alt='' border='0' vspace='2'>
<form id='form1' name='form2' method='post' action=''>
<p>Vvedite tekst s kartinki</p>
<p>
<label>
<input type='text' name='captcha' id='2' />
</label>
</p>
<p>
<label>
<input type='hidden' name='number' value='".$number."'>
<input type='submit' name='button' id='button' value='Pognali' />
</label>
</p>
</form>";
//echo($page);
if(isset($_POST['captcha']) && !empty($_POST['captcha'])) {
$postvars = "step=askanswer&login=menta955&domain=rambler.ru&question=Девичья фамилия матери&number=
".$_POST['number']."&hash=".$_POST['captcha']."&answer=menta955";
$c = curl_init($target);
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://id.rambler.ru/script/reminder.cgi");
curl_setopt($c, CURLOPT_USERAGENT, 'Opera/9.27 (Windows NT 5.1; U; en)');
curl_setopt($c, CURLOPT_POST, 1); // set POST method
curl_setopt($c, CURLOPT_POSTFIELDS, $postvars);
$page2=curl_exec($c);
echo($page2);
} else {
echo($form2);
}

?>

Doom123
13.11.2008, 01:57
Проверь заголовки ответа может там кукисы идут ид сессии и т.п =)

WMCASH
18.11.2008, 05:50
ТОже мучаюсь, помоему там ссесия вкл. и ее фиг знает как обойти. Вроде все правельно сделал.

1) вводим данные на первом шаге.
2) парсим number, сосавляем curl и все данные отправляем после ввода капчи, капчу выводим заранее с формочкой.

Вот сижу мучаюсь, может кто поможет?

.:nbd:.
18.11.2008, 10:14
Во первых передавай куки, во вторых
$postvars = "step=askanswer&login=menta955&domain=rambler.ru&question=Девичья фамилия матери&number=
".$_POST['number']."&hash=".$_POST['captcha']."&answer=menta955";
замени на:
$postvars = "step=askanswer&login=menta955&domain=rambler.ru&question=".urlencode('Девичья фамилия матери')."&number=
".$_POST['number']."&hash=".$_POST['captcha']."&answer=menta955";