ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[PHP] LiveJournal Login
  #1  
Старый 19.07.2008, 18:33
Аватар для razzzar
razzzar
Участник форума
Регистрация: 16.06.2007
Сообщений: 107
Провел на форуме:
725870

Репутация: 208
Question [PHP] LiveJournal Login

Пишу скрипт, который логинится в ЖЖ.
Отправляю пост данные для логина. Получаю ответ 302 с кукисами. Отправляю их серверу, но логина так и не происходит. Подскажите где может быть ошибка.

Код:
	$content  = "mode=login&chal=c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b38844ffa11fdf08d87fc4812788a686&response=&";
	$content .= "user=".$_POST['login']."&password=".$_POST['passwd']."&_submit=Login&remember_me=1";

	$req  = "POST /login.bml?ret=1 HTTP/1.0\r\n";
	$req .= "Accept: */*\r\n";
	$req .= "Content-Type: application/x-www-form-urlencoded\r\n";
	$req .= "Proxy-Connection: Keep-Alive\r\n";
	$req .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))\r\n";
	$req .= "Host: www.livejournal.com\r\n";
	$req .= "Content-Length: ".strlen($content)."\r\n";
	$req .= "Pragma: no-cache\r\n\r\n";
	$req .= $content;

	$sock = fsockopen("www.livejournal.com", 80,  $errno, $errstr, 30);
	fwrite($sock, $req);
	while ( $read = fread($sock, 4096) )
	{
		$res .= $read;
	}
	fclose($sock);

	preg_match_all("/Set-Cookie\: (\S*)=(\S*)(|;)/", $res, $cookie);
	for ( $i=0; $i<count($cookie[0]); $i++ )
	{
		$cookie[0][$i] = str_replace("Set-Cookie: ", "", $cookie[0][$i]);
		$cookie[0][$i] = str_replace(";", "", $cookie[0][$i]);

		if ( !strpos($cookies, $cookie[0][$i]) )
		{
			$cookies .= "Cookie: ".$cookie[0][$i]."\r\n";
		}
	}

	$req  = "GET / HTTP/1.0\r\n";
	$req .= "Accept: */*\r\n";
	$req .= "Content-Type: application/x-www-form-urlencoded\r\n";
	$req .= "Referer: http://www.livejournal.com/login.bml?ret=1\r\n";
	$req .= "Proxy-Connection: Keep-Alive\r\n";
	$req .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))\r\n";
	$req .= "Host: www.livejournal.com\r\n";
	$req .= $cookies;
	$req .= "Pragma: no-cache\r\n\r\n";

	$sock = fsockopen("www.livejournal.com", 80,  $errno, $errstr, 30);
	fwrite($sock, $req);
	$res = "";
	while ( $read = fread($sock, 4096) )
	{
		$res .= $read;
	}
	echo $res;
	fclose($sock);

Последний раз редактировалось razzzar; 19.07.2008 в 21:15..
 
Ответить с цитированием

  #2  
Старый 20.07.2008, 21:18
Аватар для Whirt
Whirt
Участник форума
Регистрация: 24.06.2008
Сообщений: 105
Провел на форуме:
674665

Репутация: 276
По умолчанию

Привет. До этого парсингом ЖЖ не занимался, поразбирался минуток 20 (параметров много в куках там было), ну и вот что у меня вышло.
На первый взгляд, все было правильно, но потом я увидел что у тебя куки немного неправильно выдираются.

Я чуть поправил их извлечение у тебя в сорце.

После этого стало нормально логинится

Держи код: (там сразу с только-что-зареганной мной учеткой little_xekkep)

Код:
<?php
   $content  = "mode=login&chal=c0:1216468800:2495:300:E7hQqy7D7SSujymYaT2h:b  38844ffa11fdf08d87fc4812788a686&response=&";
    $content .= "user=little_xekkep&password=bla123&_submit=Login&remember_me=1";

    $req  = "POST /login.bml?ret=1 HTTP/1.0\r\n";
    $req .= "Accept: */*\r\n";
    $req .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $req .= "Proxy-Connection: Keep-Alive\r\n";
    $req .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))\r\n";
    $req .= "Host: www.livejournal.com\r\n";
    $req .= "Content-Length: ".strlen($content)."\r\n";
    $req .= "Pragma: no-cache\r\n\r\n";
    $req .= $content;

    $sock = fsockopen("www.livejournal.com", 80,  $errno, $errstr, 30);
    fwrite($sock, $req);
    while ( $read = fread($sock, 4096) )
    {
        $res .= $read;
    }
    echo '<pre>'.$res.'</pre>';
    fclose($sock);

    preg_match_all("/Set-Cookie\: (\S*)=(\S*)(|;)/", $res, $cookie);
    for ( $i=0; $i<count($cookie[0]); $i++ )
    {
        $cookie[0][$i] = str_replace("Set-Cookie: ", "", $cookie[0][$i]);

        if ( !strpos($cookies, $cookie[0][$i]) )
        {
            $cookies .= $cookie[0][$i].' ';
        }
    }
     echo '<h1>Cookies:</h1><pre>'.$cookies.'</pre>';   
    $req  = "GET / HTTP/1.0\r\n";
    $req .= "Accept: */*\r\n";
    $req .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $req .= "Referer: http://www.livejournal.com/login.bml?ret=1\r\n";
    $req .= "Proxy-Connection: Keep-Alive\r\n";
    $req .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; MRA 4.9 (build 01863))\r\n";
    $req .= "Host: www.livejournal.com\r\n";
    $req .= "Cookie: ".$cookies;
    $req .= "Pragma: no-cache\r\n\r\n";

    $sock = fsockopen("www.livejournal.com", 80,  $errno, $errstr, 30);
    fwrite($sock, $req);
    $res = "";
    while ( $read = fread($sock, 4096) )
    {
        $res .= $read;
    }
    echo '<h1>Response</h1><pre>'.$res.'</pre>';
    //echo $res;
    fclose($sock);
?>
Там сразу выводится дебаг инфа, потом уберешь
Удачи тебе в твоем проекте
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL Injection Cheat Sheet xcedz Болталка 3 13.02.2008 03:21



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ