Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: curl и авторитизация
 
 автор: tricket   (08.06.2007 в 11:38)   письмо автору
 
 

Ребят помогите пожалуйста! Просто умоляю!
В общем на одном хостинге стоит мой icq bot, на другом мой жж liveiournal.com нужно сделать так чтобы при приходе команды боту добавления статьи он брал текст статьи из сообщения, брал из конфига логин и пароль через curl делал авторитизацию на liveiournal.com, а потом уже с куками добавлял статью! из ранее полученного текста. Минус всего этого то, что я никогда не работал с curl и куками при открытие сессии... В общем буду рад кто подкинет хотя бы какой-нибудь код, который даст хотя бы представление как это сделать! Заранее благодарен любой помощи!!!

   
 
 автор: Proger   (08.06.2007 в 15:24)   письмо автору
 
   для: tricket   (08.06.2007 в 11:38)
 

Если интересует, пиши в аську 325459

   
 
 автор: tricket   (08.06.2007 в 15:56)   письмо автору
 
   для: Proger   (08.06.2007 в 15:24)
 

ну еслиб не интересовало - не писал бы)
блин аськой щас не пользуюсь... :( если не сложно скинь сюда код)

   
 
 автор: mihdan   (08.06.2007 в 17:53)   письмо автору
 
   для: tricket   (08.06.2007 в 11:38)
 

Прочтите документацию по курлу - там подробно про это написано сам читал

   
 
 автор: tricket   (08.06.2007 в 19:31)   письмо автору
 
   для: mihdan   (08.06.2007 в 17:53)
 

уфф с курлом разобрался... теперь мучаюсь с оформлением запроса!
Смотрите есть форма ввода пароля, так чтобы войти нужно считать куки

$ch=curl_init ("site.ru");
curl_setopt ($ch, CURLOPT_HEADER, 1); 
curl_setopt ($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $ua); 
ob_start(); 
curl_exec ($ch);
curl_close ($ch);
$headers = explode("\n", ob_get_contents()); 
ob_end_clean();
for ($i=0; $i<=count($headers); $i++)
{
if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
{
list($field, $cookie[]) = explode(' ', $headers[$i]);
}
}

но никак не могу составить ссылку которая пишет куки, как понимаю нужно составить ссылку вида
http://site.ru/?login=login&pass=pass но никак не могу ето сделать...
слышал про расширение firefox которое показывает заголовки, но не могу найти, кто знает о сием чуде?

   
 
 автор: tricket   (08.06.2007 в 19:33)   письмо автору
 
   для: tricket   (08.06.2007 в 19:31)
 

проверку делаю как составлена ссылка самим браузером.

   
 
 автор: Trianon   (08.06.2007 в 19:39)   письмо автору
 
   для: tricket   (08.06.2007 в 19:31)
 

Зачем Вы мучаете output buffer? Вам CURLOPT_RETURNTRANSFER не хватает?

И еще.
CURLOPT_COOKIEFILE: Имя файла, содержащего данные cookie. Данные могут быть либо в формате Netscape, либо просто HTTP-заголовки.

   
 
 автор: tricket   (08.06.2007 в 19:41)   письмо автору
 
   для: Trianon   (08.06.2007 в 19:39)
 

я с сурлом только сегодня столкнулся...поэтому естественно есть ошибки! если не сложно объясни пожалуйста объясни поподробней.
CURLOPT_RETURNTRANSFER: При установке этого параметра в ненулевое значение CURL будет возвращать результат, а не выводить его.

а про output buffer ничего не нашёл...

   
 
 автор: Disable   (08.06.2007 в 19:43)   письмо автору
 
   для: tricket   (08.06.2007 в 19:41)
 

о, я снова могу писать в эту тему о_О
после моего примера и теста доступ был закрыт...
Во вложении пример реги на форуме и загрузка этой темы. (советую не запускать)

На счет кукис и ретурнтрансфер: их можно не извлекать что-ли самому??

   
 
 автор: Trianon   (08.06.2007 в 19:45)   письмо автору
 
   для: tricket   (08.06.2007 в 19:41)
 

CURL может не только выводить данные в браузер, но и возвращать их в виде результата работы функции. И даже записывать их в файл.

Читайте http://ru2.php.net/curl_setopt
Непонятно будет - спрашивайте.

   
 
 автор: tricket   (08.06.2007 в 19:48)   письмо автору
 
   для: Trianon   (08.06.2007 в 19:45)
 

я понял! весь день с этой страницей сижу!
на данном этапе нужно получить данные с куками.
Как понял нужно вначале вручную составить ссылку типа http://site.ru/?login=login&pass=pass а потом в мой код её подставить. Но не могу ссылку составить... слишком много аргументов в ссылке. Может ли сайт делать проверку того что заполнял ли пользователь сам поля формы или это сделал при помощи ручного ввода в браузер ссылки вида http://site.ru/?login=login&pass=pass

   
 
 автор: Trianon   (08.06.2007 в 19:51)   письмо автору
 
   для: tricket   (08.06.2007 в 19:48)
 

>Как понял нужно вначале вручную составить ссылку типа http://site.ru/?login=login&pass=pass а потом в мой код её подставить.

Счего вы так подумали?
Форма у Вас есть, где эти значения вводятся? Как она выглядит?

   
 
 автор: tricket   (08.06.2007 в 19:53)   письмо автору
 
   для: Trianon   (08.06.2007 в 19:51)
 

конечно! есть html страница с ними...плюс в ней есть два скрытых поля... не могу показать ибо сайт только в сетке локальной работает.
на этой странице логин пароль кнопка сабмита и два скрытых поля
и нужно получить ввести туда предварительно выпарсив два скрытых поля, подставить логин и пасс и получить куки! в ручном режиме составляю ссылку и кидаю в браузер он её не ест!

   
 
 автор: Trianon   (08.06.2007 в 19:57)   письмо автору
 
   для: tricket   (08.06.2007 в 19:53)
 

Открыть исходный текст страницы и скопировать оттуда html-код формы-то вы можете?

   
 
 автор: tricket   (08.06.2007 в 20:07)   письмо автору
 
   для: Trianon   (08.06.2007 в 19:57)
 


<form action="site.ru/auth">
<input type="hidden" name="url" value="site.ru/user=sddd&pass=test">
<input type="hidden" name="urltwo" value="site.ru/user=sddd&pass=test&sdds=dssds">
Для захода в панель управления нужно авторитизироваться!<br>
<table border=0 cellpadding=0 cellspacing=0><tr>
<td class=t75><b>Имя</b>&nbsp;</td>
td width=60%><input type=text name="Login" value="" ></td>
</tr><tr>
<td><b>Пароль</b>&nbsp;&nbsp;&nbsp;</td>
<td colspan=2 valign=top><table width=100% cellpadding=0 cellspacing=0><tr>
<td width=100%><input type=password name="Password"></td>
<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;<a href="site.ru" target=_blank>Забыли пароль?</a></td>
</tr></table></td></tr><tr>
<td>&nbsp;</td>
<td ><input type=checkbox  name="groupe" value="1">
<label>Группа</label></td>
<td><input type=submit value=" Войти "></td>
</tr>
</table>
</td></tr>
</form>
</table>    

Да поверьте ссылку я по всем правилам нормально делал....

   
 
 автор: Trianon   (08.06.2007 в 20:24)   письмо автору
 
   для: tricket   (08.06.2007 в 20:07)
 

Бред у вас там в локалке какой-то .... пароли в прямо в параметрах uri летают...

   
 
 автор: tricket   (08.06.2007 в 20:25)   письмо автору
 
   для: Trianon   (08.06.2007 в 20:24)
 

cогласен!!!
но что поделаешь...
а теоретически если в одной части сайта даётся кука, а в другой смотрится есть ли эта кука и если да то даётся новая кука, то скрипту можно указать взять куку в первом месте, а во втором взять страницу с уже имеющимися куками то тогда мы будем иметь вторые куки?

   
 
 автор: Trianon   (08.06.2007 в 20:38)   письмо автору
 
   для: tricket   (08.06.2007 в 20:25)
 

куки могут иметь разные области видимости, и разные времена жизни.
Лучше честно разбирать и управлять ими независимо.

   
 
 автор: tricket   (08.06.2007 в 21:36)   письмо автору
 
   для: Trianon   (08.06.2007 в 20:38)
 

при помощи программы Naviscope составил ссылку!
осталось её раскодировать) есть ли программы которые могут делать действия противоположные urlencode?
нашёл)
в общем трабл в том что вначале грузится один скрипт а он пересылает ещё в одно место данные для проверки) работаю в поте сил) ещё немного и будет победа!!!!!

   
 
 автор: tricket   (08.06.2007 в 19:44)   письмо автору
 
   для: Trianon   (08.06.2007 в 19:39)
 


CURLOPT_COOKIEFILE: Имя файла, содержащего данные cookie. Данные могут быть либо в формате Netscape, либо просто HTTP-заголовки.

Это потом! вначале их нужно получить :)

   
 
 автор: Trianon   (08.06.2007 в 19:46)   письмо автору
 
   для: tricket   (08.06.2007 в 19:44)
 

нужно, конечно. Получить, разобрать, записать, вытереть.
Они прилетают среди заголовков.

   
 
 автор: tricket   (08.06.2007 в 21:58)   письмо автору
 
   для: tricket   (08.06.2007 в 11:38)
 

в общем получил куки первого скрипта, теперь нужно с этими куками получить куки с другого скрипта(и будет счастье!)

$ref = 'http://www.xxx.ru/'; // обычно адрес на котором сама форма
$ch=curl_init ("http://www.xxx.ru/");

curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);

for ($i=0; $i<=count($cookie); $i++)
{
curl_setopt($ch, CURLOPT_COOKIE, $cookie[$i]); // шлём куку (куки)
}

ob_start();
curl_exec ($ch);
curl_close ($ch);
$headers = explode("\n", ob_get_contents());
ob_end_clean();
for ($i=0; $i<=count($headers); $i++)
{
if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
{
list($field, $cookie[]) = explode(' ', $headers[$i]);
}
}

Но не получается... помогите ещё раз! наверное всех достал, но сам уже сижу с распухшей головой!

   
 
 автор: Disable   (08.06.2007 в 22:04)   письмо автору
 
   для: tricket   (08.06.2007 в 21:58)
 

почитайте мое вложение чуть выше )

   
 
 автор: tricket   (08.06.2007 в 22:27)   письмо автору
 
   для: Disable   (08.06.2007 в 22:04)
 

большое спасибо, посмотрел.
прошу пожалуйста можешь показать пример как уже имею куки зайти по ссылке и получить от нее новые куки

   
 
 автор: Disable   (08.06.2007 в 22:37)   письмо автору
 
   для: tricket   (08.06.2007 в 22:27)
 


<?php
//запрос без куков
$ch=curl_init('http://xxx.xx/xx.php');
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.21 (Windows NT 5.1; U; en)');
curl_setopt($ch,CURLOPT_HEADER,1); //показываем заголовки

$res=curl_exec($ch);
curl_close($ch);

$arr=array();
preg_match_all('|Set-Cookie: ([^\n]+)\n|',$res,$arr); //извлекаем кукисы

echo $res."\n\n"//печатаем результат первого запроса

//второй запрос со старыми куками
$ch=curl_init('http://xxx.xx/xx.php');
curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.21 (Windows NT 5.1; U; en)');
curl_setopt($ch,CURLOPT_HEADER,1);

//здесь установка "старых" кукис
foreach ($arr[1] as $cookie)
curl_setopt($ch,URLOPT_COOKIE,$cookie);

$res=curl_exec($ch);
curl_close($ch);

$arr=array();
preg_match_all('|Set-Cookie: ([^\n]+)\n|',$res,$arr); //извлекаем "новые" кукисы, они хранятся в массиве $arr[1]

echo $res//смотрим что вышло

//итд
?>

   
 
 автор: tricket   (08.06.2007 в 22:54)   письмо автору
 
   для: Disable   (08.06.2007 в 22:37)
 

ОГРОМНЕЙШЕЕ СПАСИБО!!!!

   
 
 автор: Trianon   (08.06.2007 в 22:57)   письмо автору
 
   для: Disable   (08.06.2007 в 22:37)
 

нельзя так с кукисами.
А если там команда "стереть"?

   
 
 автор: Disable   (08.06.2007 в 23:00)   письмо автору
 
   для: Trianon   (08.06.2007 в 22:57)
 

ну не знаю, на свой if всегда есть elseif :)

   
 
 автор: tricket   (09.06.2007 в 11:14)   письмо автору
 
   для: Disable   (08.06.2007 в 23:00)
 

ребят там среди заголовков есть надпись
http://site.ru/checkcookie?id=6c0702666b44524f19050219091d031b060 34f6c5150445e010707081b01060a1f5043 405442500201070c1658505d5b174345
таких надписи две! как раз две куки я получить и не могу!

   
 
 автор: Trianon   (09.06.2007 в 11:20)   письмо автору
 
   для: tricket   (09.06.2007 в 11:14)
 

Приводите полный текст отклика с заголовками.
среди заголовков есть надпись - это, извините, детский лепет.
Надписи на заборе бывают. А в заголовке есть поля. Вы же процитировали даже не поле, а некий URI.

http-протокол абсолютно детерминирован. В нем нет каких-либо разночтений, и попытки "примерить на что похоже и втиснуть как придется" здесь не уместны совершенно.

   
 
 автор: Trianon   (09.06.2007 в 11:30)   письмо автору
 
   для: Disable   (08.06.2007 в 23:00)
 

что Вы имели в виду, я не понял.
А на протокол обмена кукисами есть стандарт. RFC-2109

   
 
 автор: tricket   (09.06.2007 в 11:39)   письмо автору
3.3 Кб
 
   для: Trianon   (09.06.2007 в 11:30)
 

ща увлёкся курлом и пробую пройти авторитизацию на mail.ru, вот ответ сервера
во вложение

   
 
 автор: Trianon   (09.06.2007 в 11:48)   письмо автору
 
   для: tricket   (09.06.2007 в 11:39)
 

1. Это не могло быть ответом. В ответе поля заголовка идут каждое с новой строки.
Не путайте ответ сервера, и то, как он (будучи выведен голяком) выглядит в эксплорере.
Смотрите исх.текст html-страницы.

2. Не применяйте версию протокола, которую не знаете. Особенности протокола 1.1 Вы не знаете наверняка. Применяйте версию 1.0

   
 
 автор: tricket   (09.06.2007 в 11:52)   письмо автору
 
   для: Trianon   (09.06.2007 в 11:48)
 

HTTP/1.1 302 OK
Date: Sat, 09 Jun 2007 07:51:59 GMT
Server: Apache/1.3.27 (Unix) mru_xml/0.471 gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8 mod_mrim/0.17
Connection: close
Content-Type: text/html
Content-Length: 157
Set-Cookie: mrcu=18DF466A5C1F23683A8B2E3943C2; expires=Tue, 06 Jun 2017 07:51:59 GMT; path=/; domain=.mail.ru
Set-Cookie: t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAA AAAAAAAAAAABYGwgcA; expires=Thu, 06 Dec 2007 07:51:59 GMT; path=/; domain=.mail.ru
Set-Cookie: Mpop=1181375519:58517f4371637d5d19050219091d031b060 34f6c5150445e010707081b01060a1f5043 405442500201070c1658505d5b174345:grymza2009@mail.ru:; path=/; domain=.mail.ru
Location: http://win.mail.ru/cgi-bin/checkcookie?id=58517f4371637d5d19050219091d031b060 34f6c5150445e010707081b01060a1f5043 405442500201070c1658505d5b174345
Cache-Control: no-cache,no-store,must-revalidate
Pragma: no-cache
Expires: Fri, 09 Jun 2006 07:51:59 GMT
Last-Modified: Sat, 09 Jun 2007 07:51:59 GMT
вот

   
 
 автор: Trianon   (09.06.2007 в 11:56)   письмо автору
 
   для: tricket   (09.06.2007 в 11:52)
 

Статус 30X - это запрос редиректа.
Вы обязаны выполнить все инструкции Set-Cookie после чего исполнить GET-запрос к документу, URI котрого находится в поле location.

   
 
 автор: tricket   (09.06.2007 в 11:58)   письмо автору
 
   для: Trianon   (09.06.2007 в 11:56)
 

preg_match_all('|Set-Cookie: ([^\n]+)\n|',$res,$arr); //извлекаем кукисы (тут их 2)
preg_match_all('!http\://win\.mail\.ru/cgi\-bin/checkcookie\?id=[^\s]*!',$res,$url); //извлекаем кукисы (тут их 2)

print_r($res);
echo "<p>куки:<p>";
echo $cookie1=$arr[0][0];
echo $cookie2=$arr[0][1];
echo $cookie3=$arr[0][2];


$url=trim($url[0][0]);
echo "<p><p><p>юэрл".$url."<p><p>результат";;


//загрузим эту тему через скрипт
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.21 (Windows NT 5.1; U; en)');
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_REFERER,'http://www.mail.ru/'); //подделываем реферер
curl_setopt($ch,URLOPT_COOKIE,$cookie1); //здесь установка кукис
curl_setopt($ch,URLOPT_COOKIE,$cookie2); //здесь тоже установка кукис
curl_setopt($ch,URLOPT_COOKIE,$cookie3); //здесь тоже установка кукис
$res=curl_exec($ch);
curl_close($ch);


print_r($res);
вот что я сделал...но не правильно... в чём тут ошибка?

   
 
 автор: Trianon   (09.06.2007 в 12:03)   письмо автору
 
   для: tricket   (09.06.2007 в 11:58)
 

Это вопрос к Disable.... я так понимаю, что это его код, или код построенные на базе его прототипа.

   
 
 автор: tricket   (09.06.2007 в 12:11)   письмо автору
 
   для: Trianon   (09.06.2007 в 12:03)
 

да код его...а чисто теоретически ошибок в запросе нету?

   
 
 автор: Trianon   (09.06.2007 в 12:16)   письмо автору
 
   для: tricket   (09.06.2007 в 12:11)
 

Чисто теоретически - помимо того, что с кукисами так не работают - такой код будет работать только с конкретным сервисом, да и то лишь до тех пор, пока его не изменят.

   
 
 автор: tricket   (09.06.2007 в 12:24)   письмо автору
 
   для: tricket   (09.06.2007 в 12:11)
 

сделал запрос теперь получаю

HTTP/1.1 302 Found
Date: Sat, 09 Jun 2007 08:23:33 GMT
Server: Apache
Location: http://win.mail.ru/cgi-bin/start?back=1
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251

<html>
<head><title>Redirect to http://win.mail.ru/cgi-bin/start?back=1</title></head>
<body><a href="http://win.mail.ru/cgi-bin/start?back=1">http://win.mail.ru/cgi-bin/start?back=1</a></body>
</html>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>

</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://win.mail.ru/cgi-bin/start?back=1">here</A>.<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at win.mail.ru Port 80</ADDRESS>
</BODY></HTML>

теперь также следовать туда?

   
 
 автор: tricket   (09.06.2007 в 12:32)   письмо автору
 
   для: tricket   (09.06.2007 в 12:24)
 

проследовал!!!
и получил свою почту! супер! всем спасибо!!!

   
 
 автор: Disable   (09.06.2007 в 13:01)   письмо автору
 
   для: Trianon   (09.06.2007 в 11:30)
 

Не пойму, что конкретно я делаю не так? Вроде везде срабатывало :)


curl_setopt($ch,URLOPT_COOKIE,$cookie1); //здесь установка кукис
curl_setopt($ch,URLOPT_COOKIE,$cookie2); //здесь тоже установка кукис
curl_setopt($ch,URLOPT_COOKIE,$cookie3); //здесь тоже установка кукис

посылается последовательность сеткуков в запросе (естественно, надо предварительно смотреть и проверять что посылается).

   
 
 автор: Trianon   (09.06.2007 в 15:47)   письмо автору
 
   для: Disable   (09.06.2007 в 13:01)
 

Я ж уже привел пример. Допустим, сервер с помощью Set-cookie запрашивает удаление кукиса (устанавливая пройденное время устаревания). Ваш скрипт обязан удалить такой кукис из списка активных.
Или второй пример. сервер указывает область видимости для кукиса, ограниченную подкаталогом. Ваш скрипт обязан пересылать кукис лишь при обращении к документам из этого подкаталога.

   
 
 автор: Disable   (09.06.2007 в 15:59)   письмо автору
 
   для: Trianon   (09.06.2007 в 15:47)
 

а, ну это решается в индивидуальном порядке, после подробного анализа пришедших куков

foreach ($arr[1] as $cookie)
curl_setopt($ch,URLOPT_COOKIE,$cookie);

это просто для примера :)

   
 
 автор: Trianon   (09.06.2007 в 16:18)   письмо автору
 
   для: Disable   (09.06.2007 в 15:59)
 

>а, ну это решается в индивидуальном порядке, после подробного анализа пришедших куков

Вот этого анализа я и не увидел.
Если его не делает скрипт, человек с таким анализом может и опоздать.

Далее, конструкция preg_match_all('|Set-Cookie запросто может выдрать строку Set-Cookire из неподобающего контекста.
Например, я передам значение парамерта с такой строкой в поле Location или назову документ таким именем (Content-type) . Ваша конструкция банально загнется. А всё потому, что поля заголовка следует разбирать по стандарту а не абы как.

Собственно, это проблема всех, кто применяет регулярные выражения.
Регулярки хороши, когда нужно быстренько набросать отчет.
Детерминиррованный анализ исходных данных с помощью них обычно не менее сложен, чем прямыми методами....

   
 
 автор: Disable   (09.06.2007 в 16:29)   письмо автору
 
   для: Trianon   (09.06.2007 в 16:18)
 

Ну я думаю не все так печально, если в запрос к серверу попадет "нежданный" кукис-бред ничего плохого в общем-то не случится, сервер может даже не заметит, а в худшем случаи выдаст bad request..

Хотя и возразить я не могу, разбор что называется "на шару" :)

   
 
 автор: Trianon   (09.06.2007 в 16:32)   письмо автору
 
   для: Disable   (09.06.2007 в 16:29)
 

Если это намеренная подстава, чтобы отловить скриптом реализованный клиент, то результатом будет бан хостинга.

   
 
 автор: Disable   (09.06.2007 в 16:39)   письмо автору
 
   для: Trianon   (09.06.2007 в 16:32)
 

А если так:
1.посылаем пустой запрос (или пост с авторизацией) и получаем заголоки
2.анализируем заголовки в ответе (чтобы клиента не писать визуально)
3.если там нет ничего такого, то снова пункт1
4.извлекаем куки
5.посылаем запрос с куками

?

   
 
 автор: Trianon   (09.06.2007 в 16:43)   письмо автору
 
   для: Disable   (09.06.2007 в 16:39)
 

а если он пришлет еще один редирект?
:)

   
 
 автор: Disable   (09.06.2007 в 17:00)   письмо автору
 
   для: Trianon   (09.06.2007 в 16:43)
 

Ну также, пока не выйдет результата.
если не забанят (хотя все эти заголовки можно и обычным браузером с плагинами анализировать, чтобы не палиться).
Или клиента писать/искать сразу :)

   
 
 автор: tricket   (10.06.2007 в 09:49)   письмо автору
 
   для: Disable   (09.06.2007 в 17:00)
 

очень интересна ваша беседа и на руки попалось две программы Naviskope и Inetcrack нужные для этих вещей! ПРоги полный улёт!!!!!!!!!!!!

Теперь вопрос, есть строчки

 
$Cookie="Cookie: ".$goodcookie[3]."; ".$goodcookie[4]."; ".$goodcookie[0]."; ".$goodcookie[1]."; ".$goodcookie[2];
 $host = "site.ru";
  $path = "/"; 
  $fp = fsockopen($host,80,$errno,$errstr,30);
  if(!$fp) echo"$errstr ($errno)<br />\n";
  else{
 $headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-icq, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
    $headers .= "Referer: http://site.ru/\r\n";
    $headers .= "Accept-Language: ru\r\n";
    $headers .= "Proxy-Connection: Keep-Alive\r\n";
    $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) )\r\n";
    $headers  .= "Host: site.ru\r\n";
    $headers .= "If-Modified-Since: Tue, 09 Jun 1987 16:46:19 GMT; length=61062\r\n";
    $headers .= $Cookie."\r\n";
     $headers .= "Connection: Close\r\n\r\n";
 echo $headers;
    fwrite($fp,$headers);
    $head = "";
    while($text != "\r\n"){
      $text = fgets($fp,128);
      $head .= $text;
    }
    $text = "";
    while(!feof($fp)) $text .= fgets($fp,4096);
    fclose($fp);
  }
  echo $text;

Это код с которорым у меня работает авторитизация, тоже самое на курле не пашед!!!
Может ли это быть из-за строчек, которые в курле изменить нельзя?
Например:

 $headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-icq, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
    $headers .= "Accept-Language: ru\r\n";
    $headers .= "Proxy-Connection: Keep-Alive\r\n";

И если да, то есть ли решение проблемы? или отказаться от курла?
P.S. я тут наверное всех за***л тупыми вопросами...

   
 
 автор: Disable   (10.06.2007 в 13:28)   письмо автору
 
   для: tricket   (10.06.2007 в 09:49)
 

Тут видимо надо отправить вас за документацией (там на русском и понятно)
http://www.php.su/functions/?curl-setopt

вообще, можно посылалать заголовки, заключенные в масив


<?php
$ch 
curl_init('http://xxx.xx/xx.xx');

$headers = array("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-icq, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*",
"Accept-Language: ru",
"Proxy-Connection: Keep-Alive");

curl_setopt($chCURLOPT_HEADER1);
curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.21 (Windows NT 5.1; U; en)');
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);

$res=curl_exec($ch);
curl_close($res);

echo 
$res;
?>

   
 
 автор: tricket   (10.06.2007 в 16:15)   письмо автору
 
   для: Disable   (10.06.2007 в 13:28)
 

Разобрался! КУРЛ ОЧЕНЬ КРУТАЯ ВЕЩИЦА!
Кстати а что быстрее получится курл или открыть соединение по сокетам?

   
 
 автор: Unkind   (10.06.2007 в 16:26)   письмо автору
 
   для: tricket   (10.06.2007 в 16:15)
 

cURL тоже открывает сокеты.

   
 
 автор: tricket   (10.06.2007 в 16:31)   письмо автору
 
   для: Unkind   (10.06.2007 в 16:26)
 

я имею в виду если самому открывать или курл

   
 
 автор: Unkind   (10.06.2007 в 16:39)   письмо автору
 
   для: tricket   (10.06.2007 в 16:31)
 

По идее медленней будет cURL.

   
 
 автор: Trianon   (10.06.2007 в 21:44)   письмо автору
 
   для: Unkind   (10.06.2007 в 16:39)
 

по идее - наоборот.
Компилируемый язык всяко быстрее интерпретируемого.
Хотя в коммуникационных процессах скорость все равно каналом определяется.

   
 
 автор: Unkind   (10.06.2007 в 21:53)   письмо автору
 
   для: Trianon   (10.06.2007 в 21:44)
 

Компилируемый язык всяко быстрее интерпретируемого.
fsockopen - посылаешь текст - получаешь ответ. А cURL все заголовки (многие) формирует сам в зависимости от данных, введенных пользователем. А их надо еще обрабатывать, а в fsockopen - все ложится на программиста. Мне лень проверять, но я уверен, что прав.

   
 
 автор: Trianon   (10.06.2007 в 22:37)   письмо автору
 
   для: Unkind   (10.06.2007 в 21:53)
 

curl ничего сам не делает. Только то, что указал программист. Пользователь вообще не при делах.

   
 
 автор: Unkind   (10.06.2007 в 22:44)   письмо автору
 
   для: Trianon   (10.06.2007 в 22:37)
 

Я и хотел написать программист. Так получилось.

   
 
 автор: tricket   (11.06.2007 в 16:41)   письмо автору
 
   для: Unkind   (10.06.2007 в 22:44)
 

хм ща времени нет :(
потом обязательно эксперимент проведу что быстрее)

   
 
 автор: Trianon   (10.06.2007 в 21:44)   письмо автору
 
   для: Unkind   (10.06.2007 в 16:39)
 

.

   
 
 автор: Disable   (10.06.2007 в 16:43)   письмо автору
 
   для: tricket   (10.06.2007 в 16:15)
 

однозначно быстрее будет посылать если заголовок
Connection: Close

я пользуюсь сокетами, потому что курл не на всех хостах ставят.

   
 
 автор: Unkind   (10.06.2007 в 17:30)   письмо автору
 
   для: Disable   (10.06.2007 в 16:43)
 

однозначно быстрее будет посылать если заголовок
Посылать быстрее не будет. Просто этот заголовок означает, что соединение будет порвано сразу же после ответа сервера.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования