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



 

Здравствуйте, гость ( Вход | Регистрация )

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


Бывалый
****

Группа: User
Сообщений: 275
Регистрация: 18.10.2008
Поблагодарили: 20 раз
Репутация:   2  


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


Топовый постер
*******


Группа: Active User
Сообщений: 4737
Регистрация: 11.5.2008
Поблагодарили: 966 раз
Репутация:   153  


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


Бывалый
****

Группа: User
Сообщений: 275
Регистрация: 18.10.2008
Поблагодарили: 20 раз
Репутация:   2  


(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


Топовый постер
*******


Группа: Active User
Сообщений: 4737
Регистрация: 11.5.2008
Поблагодарили: 966 раз
Репутация:   153  


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


Бывалый
****

Группа: User
Сообщений: 275
Регистрация: 18.10.2008
Поблагодарили: 20 раз
Репутация:   2  


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


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


Топовый постер
*******


Группа: Active User
Сообщений: 4737
Регистрация: 11.5.2008
Поблагодарили: 966 раз
Репутация:   153  


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


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


Бывалый
****

Группа: User
Сообщений: 275
Регистрация: 18.10.2008
Поблагодарили: 20 раз
Репутация:   2  


(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


Новичок
*

Группа: User
Сообщений: 10
Регистрация: 29.8.2009
Поблагодарили: 3 раза
Репутация:   1  


Лучшим решением будет доставать из заголовков нужные куки, сохранять их где-то и после авторизации их всегда отправлять вместе с запросами. После отправки запроса на авторизацию, вернутся 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


Новичок
*


Группа: User
Сообщений: 19
Регистрация: 1.9.2009
Поблагодарили: 6 раз
Репутация:   2  


(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


Бывалый
****

Группа: User
Сообщений: 275
Регистрация: 18.10.2008
Поблагодарили: 20 раз
Репутация:   2  


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Что вы можете сказать про мегакассу?
16 DimaMyrzich 3559 7.12.2017, 16:13
автор: vds4you
Открытая тема (нет новых ответов) Вопрос про Телеграмм
18 syd2010 1111 28.11.2017, 14:25
автор: PostBrigada
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСоздание сайтов любой сложности (фреймворки, CMS), Верстка (адаптивная, простая, лендинг), шаблоны, скрипты, любая задача
14 ZaDrotom 3650 23.11.2017, 16:09
автор: iddqd
Открытая тема (нет новых ответов) Все про грамотное создание Блога на корпоративном сайте
seoandme.ru - SEO-блог Анны Ященко
1 AnnaYa 666 9.11.2017, 14:43
автор: tezoro
Открытая тема (нет новых ответов) [Требуется] Копирайтер для статей про музыку и мобильные приложения Apple
Копирайтер для статей про музыку
1 dtachkov 372 26.10.2017, 19:04
автор: Mikki


 



RSS Текстовая версия Сейчас: 12.12.2017, 9:11
Дизайн