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

Форум PHP

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

 

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

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

тема: Для тех кто дружит с HTTP заголовками
 
 автор: Саша   (15.05.2009 в 20:44)   письмо автору
1.8 Кб
 
 

Здравствуйте. Во первых, понимаю, что вопрос трудоемкий и очень маловероятно, что кто то сможет мне помочь, но все таки надежда умирает последней ). Так вот , нужно автозалогинится на www.discogs.com, я написал скрипт, который должен бы авторизовать, свормировал заголовки вточности как те что отправляються в браузере человеком, но что то не так. Если у кого есть возможность, помогите. Спасибо. (скрипты в атаче).

  Ответить  
 
 автор: 23123   (15.05.2009 в 20:57)
 
   для: Саша   (15.05.2009 в 20:44)
 

как минимум, http-заголовки не нуждаются в обработке urlencode()

  Ответить  
 
 автор: Саша   (15.05.2009 в 21:39)   письмо автору
 
   для: 23123   (15.05.2009 в 20:57)
 

но там urldecode

  Ответить  
 
 автор: 32312   (15.05.2009 в 23:42)
 
   для: Саша   (15.05.2009 в 21:39)
 

эээ...Тогда вообще логики не вижу.

  Ответить  
 
 автор: Хулиган   (16.05.2009 в 02:53)   письмо автору
 
   для: 32312   (15.05.2009 в 23:42)
 

Я когда грабил ТВ-программу столкнулся с ситуацией, что меня отфутболивало по причине незаполненности поля referer.
Може и здесь такое?

                fwrite($sock, "POST /?chp=tv HTTP/1.1\r\n");

                fwrite($sock, "Referer: http://www.s-tv.ru/?chp=tv\r\n");

                fwrite($sock, "Host: www.s-tv.ru\r\n");

                fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");

                fwrite($sock, "Content-length: " . strlen($data) . "\r\n");

                fwrite($sock, "Accept: */*\r\n");

                fwrite($sock, "\r\n");

                fwrite($sock, "$data\r\n");

                fwrite($sock, "\r\n");

  Ответить  
 
 автор: devzorg   (18.05.2009 в 01:20)   письмо автору
 
   для: Хулиган   (16.05.2009 в 02:53)
 

скорее всего куки... сейчас часто в куках хранят номер сессии

  Ответить  
 
 автор: devzorg   (18.05.2009 в 01:20)   письмо автору
 
   для: Саша   (15.05.2009 в 20:44)
 

юзайте curl и будет вам счастье. делает за 5 минут на коленке.

  Ответить  
 
 автор: Саша   (24.05.2009 в 13:39)   письмо автору
 
   для: devzorg   (18.05.2009 в 01:20)
 

А какая разница, сиурл или сам передаю хедеры?

  Ответить  
 
 автор: VITtek   (24.05.2009 в 16:44)   письмо автору
 
   для: Саша   (24.05.2009 в 13:39)
 


<?php 
$login
='VITtek';
$pass='******';

$ch curl_init("http://www.discogs.com/users/login");
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
$output curl_exec ($ch);
curl_close($ch);

preg_match_all ('|<input id="login_challenge" name="login_challenge" type="hidden" value="(.*)" />|isU',$output,$content_com_today_1);
preg_match_all ('|<input id="login_response" name="login_response" type="hidden" value="(.*)" />|isU',$output,$content_com_today_2);
preg_match_all ('|Set-Cookie: (.*);|isU',$output,$content_com_today_3);

$res md5($content_com_today_1[1][0] + md5($pass));
    

$ch curl_init("http://www.discogs.com/users/login");
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
curl_setopt($chCURLOPT_POSTFIELDS"login_challenge=".$content_com_today_1[1][0]."&login_response=".$res."&username=".$login."&password=&Action.Login=Log+In");
curl_setopt ($chCURLOPT_COOKIE$content_com_today_3[1][1]);
$output curl_exec ($ch);
curl_close($ch);
print_r ($output);
?>



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

  Ответить  
 
 автор: Саша   (24.05.2009 в 17:40)   письмо автору
 
   для: VITtek   (24.05.2009 в 16:44)
 

Два вопроса. Почему только curl_setopt ($ch, CURLOPT_COOKIE, $content_com_today_3[1][1]); ? А $content_com_today_3[1][0] ?. Второй, почему $res = md5($content_com_today_1[1][0] + md5($pass)); а не $res = md5($content_com_today_1[1][0] . md5($pass)); ? Вообщем я переделал вот что получилось


<?php  
$login
='hava'
$pass='legflegf'

$ch curl_init("http://www.discogs.com/users/login"); 
curl_setopt ($chCURLOPT_HEADER1); 
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
$output curl_exec ($ch); 
curl_close($ch); 

preg_match_all ('|<input id="login_challenge" name="login_challenge" type="hidden" value="(.*)" />|isU',$output,$content_com_today_1); 
preg_match_all ('|<input id="login_response" name="login_response" type="hidden" value="(.*)" />|isU',$output,$content_com_today_2); 
preg_match_all ('|Set-Cookie: (.*);|isU',$output,$content_com_today_3); 

$res md5($content_com_today_1[1][0] . md5($pass)); 



$cookie implode(";",$content_com_today_3[1]);

$ch curl_init("http://www.discogs.com/users/login"); 
curl_setopt ($chCURLOPT_HEADER1); 
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse); 
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
curl_setopt($chCURLOPT_POSTFIELDS"login_challenge=".$content_com_today_1[1][0]."&login_response=".$res."&username=".$login."&password=&Action.Login=Log+In"); 
curl_setopt ($chCURLOPT_COOKIE$cookie); 
$output curl_exec ($ch); 
curl_close($ch); 
print_r ($output); 
?>

  Ответить  
 
 автор: Саша   (24.05.2009 в 19:08)   письмо автору
 
   для: Саша   (24.05.2009 в 17:40)
 

Вообщем, рабочая версия , может кому то пригодится. Спасибо VITtek, ваш код помог, буду его использовать.


<?php  
$login
='hava'
$pass='legflegf'

$ch curl_init("http://www.discogs.com/users/login"); 
curl_setopt ($chCURLOPT_HEADER1); 
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
$output curl_exec ($ch); 
curl_close($ch); 

preg_match_all ('|<input id="login_challenge" name="login_challenge" type="hidden" value="(.*)" />|isU',$output,$content_com_today_1); 
preg_match_all ('|<input id="login_response" name="login_response" type="hidden" value="(.*)" />|isU',$output,$content_com_today_2); 
preg_match_all ('|Set-Cookie:(.*)\n|isU',$output,$content_com_today_3); 

$res md5($content_com_today_1[1][0] . md5($pass)); 

$content_com_today_3[1][0] = trim($content_com_today_3[1][0]);
$content_com_today_3[1][1] = trim($content_com_today_3[1][1]);

$cookie implode(";",$content_com_today_3[1]);

$ch curl_init("http://www.discogs.com/users/login"); 
curl_setopt ($chCURLOPT_HEADER1); 
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse); 
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'); 
curl_setopt($chCURLOPT_POSTFIELDS"login_challenge=".$content_com_today_1[1][0]."&login_response=".$res."&username=".$login."&password=&Action.Login=Log+In"); 
curl_setopt ($chCURLOPT_COOKIE$cookie); 
$output curl_exec ($ch); 
curl_close($ch); 
print_r ($output); 
?>

  Ответить  
 
 автор: VITtek   (24.05.2009 в 22:49)   письмо автору
 
   для: Саша   (24.05.2009 в 19:08)
 

Да конечно там точка нужна (перепутал с джавой). Главное ты понял как там закручено было с пассом.
)))

  Ответить  
 
 автор: Саша   (24.05.2009 в 23:14)   письмо автору
 
   для: VITtek   (24.05.2009 в 22:49)
 

нет, с пасвордом я то знал, в моем скрипте с пасвордом проблем не было, проблема була что кукисы не подставлял, потому меня и отшибало, + еще надо было передать агента. Но ты мне действительно помог. Спасибо тебе огромное, напиши мне на имейл, paska72@ukr.net, я тебе хочу в приват написать

  Ответить  
Rambler's Top100
вверх

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