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



 

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

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

3 страниц V   1 2 3 >
Открыть тему
Добавить ответ в эту тему
> Задача про Curl
sergsam1
sergsam1
Topic Starter сообщение 23.11.2009, 21:37; Ответить: sergsam1
Сообщение #1


Кто мне скажет как с помощью курла авторизироваться на любом ucoz сайте дам 10$.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
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 >
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Форум про уток - на новом домене
Форум про уток на новом домене - utkamir.ru
0 artmeteor 550 13.4.2024, 18:26
автор: artmeteor
Открытая тема (нет новых ответов) "Извините, что ожидание затянулось, но не думайте, пожалуйста, что мы про вас забыли. Мы заводим задачи по всем обращениям и контролируем работу над ними самым тщательным образом."
Вопрос
0 kuz999 1243 5.2.2024, 14:06
автор: kuz999
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы[ClipAI] - Рерайт больше не нужен, забудьте про биржи статей!
Улучшенный бот для написания статей при помощи ИИ, и не только
25 alexmrml 10098 9.1.2024, 18:25
автор: alexmrml
Открытая тема (нет новых ответов) Сайт дроп про авто посещаемость 15-20
3 tbr82 2759 14.9.2019, 21:16
автор: tbr82
Открытая тема (нет новых ответов) Медицинский сайт про псориаз дроп
0 tbr82 1386 13.9.2019, 17:03
автор: tbr82


 



RSS Текстовая версия Сейчас: 18.4.2024, 23:51
Дизайн