X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

> Задача про Curl
sergsam1
sergsam1
Topic Starter сообщение 23.11.2009, 21:37; Ответить: sergsam1
Сообщение #1


Кто мне скажет как с помощью курла авторизироваться на любом ucoz сайте дам 10$.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >  
Открыть тему
Ответов (1 - 9)
Lordie
Lordie
сообщение 23.11.2009, 21:49; Ответить: Lordie
Сообщение #2


sergsam1, отсылаем user & password по POST, получаем ID сессии - дальше топаем и делаем что хотим, подписываясь уже сессией.. 0о
Ps: сами просили сказать, а не написать кодом = )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sergsam1
sergsam1
Topic Starter сообщение 23.11.2009, 22:04; Ответить: sergsam1
Сообщение #3


(Lordie @ 23.11.2009, 20:49) *
sergsam1, отсылаем user & password по POST, получаем ID сессии - дальше топаем и делаем что хотим, подписываясь уже сессией.. 0о
Ps: сами просили сказать, а не написать кодом = )


Ну если вы напишите, я конечно не обижусь)
Там дело в том что в пост запросе нужна еще переменная rnd, случайное число.

Вот что надо отправлять user=$login&password=$pass&rem=1&a=2&ajax=1&rnd=123

Сообщение отредактировал sergsam1 - 23.11.2009, 22:10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lordie
Lordie
сообщение 23.11.2009, 22:10; Ответить: Lordie
Сообщение #4


sergsam1, тогда парсим саму форму логина, в которой по характерному имени идентификатора submfrmLgrnd запросто определяем сам rnd
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sergsam1
sergsam1
Topic Starter сообщение 23.11.2009, 22:16; Ответить: sergsam1
Сообщение #5


(Lordie @ 23.11.2009, 21:10) *
sergsam1, тогда парсим саму форму логина, в которой по характерному имени идентификатора submfrmLgrnd запросто определяем сам rnd


Вобщем я делаю так, сначала иду GET запросом на главную страницу, парсю rnd.
Следующим сеансом curl я пытаяюсь отослать post запрос, с логином, паролем и rnd, но похоже что rnd имеет уже другое значение.
Надеюсь понятно объяснил.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lordie
Lordie
сообщение 23.11.2009, 22:22; Ответить: Lordie
Сообщение #6


...aka, нужно сразу отпарсить и сразу же выслать запрос... что невозможно по определению.
На самом деле все куда реальнее - сразу получаем сессию, при отправке POST подписываемся той же сессией - и все работает с тем же rnd.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sergsam1
sergsam1
Topic Starter сообщение 23.11.2009, 22:28; Ответить: sergsam1
Сообщение #7


(Lordie @ 23.11.2009, 21:22) *
...aka, нужно сразу отпарсить и сразу же выслать запрос... что невозможно по определению.
На самом деле все куда реальнее - сразу получаем сессию, при отправке POST подписываемся той же сессией - и все работает с тем же rnd.


Щас буду пробовать.

Чо то я никак не врублюсь, сессию как получить, нужно парсить HTTP заголовки чтоли, я использую вот это CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE не помогает никак.

Сообщение отредактировал sergsam1 - 23.11.2009, 22:54
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ghost Bear
Ghost Bear
сообщение 24.11.2009, 5:44; Ответить: Ghost Bear
Сообщение #8


Лучшим решением будет доставать из заголовков нужные куки, сохранять их где-то и после авторизации их всегда отправлять вместе с запросами. После отправки запроса на авторизацию, вернутся Set-Cookie заголовки, в одном из которых будет сессия. Чтобы получать заголовки курлом, надо поставить CURLOPT_HEADER на 1. Заголовки от контента отделяются двумя переводами строки (\r\n\r\n)

Сообщение отредактировал Ghost Bear - 24.11.2009, 5:44
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Grand
Grand
сообщение 24.11.2009, 7:00; Ответить: Grand
Сообщение #9


(Ghost Bear @ 24.11.2009, 5:44) *
Лучшим решением будет доставать из заголовков нужные куки, сохранять их где-то и после авторизации их всегда отправлять вместе с запросами. После отправки запроса на авторизацию, вернутся Set-Cookie заголовки, в одном из которых будет сессия. Чтобы получать заголовки курлом, надо поставить CURLOPT_HEADER на 1. Заголовки от контента отделяются двумя переводами строки (\r\n\r\n)

wacko.gif
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);


а ваще вот

root@wonderland:~# cat /storage/content/tmp/t.php
<?
$ua="Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.15) Gecko/2009101601 MRA 5.5 (build 02842) Firefox/3.0.15";
$cookie="tmp.tmp";
#петтинг
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://victu.clan.su/");
curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, $ua);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
$page = curl_exec($ch);
curl_close($ch);
preg_match("!value=\"(.*?)\" name\=\"rnd\"!si",$page,$gg);
$rnd=$gg[1];
#проникновение
$postdata="user=ebatoriya%40grand.od.ua&password=1234567xz&rem=1&a=2&ajax=1&rnd=$rnd";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://victu.clan.su/index/sub/");
curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, $ua);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$page = curl_exec($ch);
curl_close($ch);

#тест
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://victu.clan.su/index/14");
curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, $ua);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
$page = curl_exec($ch);
curl_close($ch);
echo "$page";

?>

результаты http://grand.od.ua/share/tmp/t.php
конечно все это можно сделать красивее, но как показывает практика-главное результат ph34r.gif


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sergsam1
sergsam1
Topic Starter сообщение 24.11.2009, 15:13; Ответить: sergsam1
Сообщение #10


Grand, делал все примерно также:
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';

$reffer = "http://ya.ru/";
$uname = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.5) Gecko/20091102 AdCentriaIM/1.7 Firefox/3.5.5 (.NET CLR 3.5.30729)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://victu.clan.su/");
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
curl_setopt($ch, CURLOPT_USERAGENT, $uname);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);

if (preg_match("/name=\"rnd\" value=\"([0-9]{1,5})\"/", $result, $out))
$rnd = $out[1];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://victu.clan.su/index/sub/");
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
curl_setopt($ch, CURLOPT_USERAGENT, $uname);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=ebatoriya%40grand.od.ua&password=1234567xz&rem=1&a=2&ajax=1&rnd=$rnd");
$result = curl_exec($ch);
curl_close($ch);
echo $result;

Выходит почему то пустая страница.
А вот если потом:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://victu.clan.su/index/14");
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
curl_setopt($ch, CURLOPT_USERAGENT, $uname);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);

echo $result;

То все ок!

Сообщение отредактировал sergsam1 - 24.11.2009, 15:14
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) "Извините, что ожидание затянулось, но не думайте, пожалуйста, что мы про вас забыли. Мы заводим задачи по всем обращениям и контролируем работу над ними самым тщательным образом."
Вопрос
0 kuz999 1188 5.2.2024, 14:06
автор: kuz999
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы[ClipAI] - Рерайт больше не нужен, забудьте про биржи статей!
Улучшенный бот для написания статей при помощи ИИ, и не только
25 alexmrml 9866 9.1.2024, 18:25
автор: alexmrml
Открытая тема (нет новых ответов) Сайт дроп про авто посещаемость 15-20
3 tbr82 2729 14.9.2019, 21:16
автор: tbr82
Открытая тема (нет новых ответов) Медицинский сайт про псориаз дроп
0 tbr82 1366 13.9.2019, 17:03
автор: tbr82
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСоздание сайтов любой сложности (фреймворки, CMS), Верстка (адаптивная, простая, лендинг), шаблоны, скрипты, любая задача
21 ZaDrotom 15821 1.7.2019, 0:33
автор: stando82


 



RSS Текстовая версия Сейчас: 28.3.2024, 20:15
Дизайн