Авторизоваться курлом

Тема в разделе "PHP", создана пользователем phillip, 20 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Не получается авторизоваться курлом, помогите пожалуйста :bc:
    ext7.nivea.ru
    логин flagmituapa1976
    пасс R3UKZA7
     
  2. dani.

    dani. Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    33
    Симпатии:
    6
    Браузером с отключенным js тоже зайти нельзя. Мораль: надо парсить js или искать js-движки для php.
     
    phillip нравится это.
  3. gidroponic

    gidroponic Создатель

    Регистр.:
    21 янв 2009
    Сообщения:
    26
    Симпатии:
    3
    PHP:
    $login = 'flagmituapa1976';
    $pass='R3UKZA7';
    $ln = "\r\n";

    function makeChecksum($attr, $profile = null)
    {
        while(strpos($attr, ' ') !== false)
            $attr = str_replace(" ","", $attr);

        $attr = str_replace("\r","", $attr);
        $attr = str_replace("\t","", $attr);
        $attr = str_replace("\n","", $attr);

        if($profile != null)
            $attr .= $profile;

        return md5($attr);
    }


    function makeLoginXML($login, $password)
    {
        $hashcode = strtoupper($login).':'.strtoupper($password);
        $hashcode = md5($hashcode);

        $checksum = '';
        $attr = '';

        $attr .= '<Attribute name="Logon">'.$login.'</Attribute>';
        $attr .= '<Attribute name="Hashcode">'.$hashcode.'</Attribute>';

        $attr = '<Attributes>'.$attr.'</Attributes>';
        $attr .= '<Transaction name="2009_06_NIVEA_Stars_Registration"/>';

        $checksum = makeChecksum($attr);

        $xml = '<?xml version="1.0" encoding="utf8"?>';
        $xml .= '<ProCampaign action="login" security="2" checksum="'.$checksum.'">';
        $xml .= $attr;
        $xml .= '</ProCampaign>';

        return $xml;
    }

    $xml = makeLoginXML($login, $pass);

    $base = 'http://ext7.nivea.ru';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $base.'/pcproxy');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: text/xml', 'X-Requested-With: XMLHttpRequest'));
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $xmlResp = curl_exec($ch);

    $profile = '';
    $session = '';
    $xmlObj = simplexml_load_string($xmlResp);
    foreach ($xmlObj->attributes() as $key => $value) {
        switch ($key) {
        case 'profile':
            $profile = (string)$value;
            break 2;
        case 'session':
            $session = (string)$value;
            break;
        }
    }
    if (!$profile) die('fail: profile');

    curl_setopt($ch, CURLOPT_URL, $base.'/request/login');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Requested-With: XMLHttpRequest'));
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'login='.urlencode($login).'&key='.urlencode($profile));
    $jsonResp = curl_exec($ch);
    curl_close($ch);

    list($headers, $jsonResp) = explode($ln.$ln, $jsonResp);
    $jsonResp = json_decode($jsonResp);
    if (!$jsonResp->result) die('fail: login');

    $ch = curl_init($base.'/user');
    preg_match_all('~Set-Cookie: (\w+=[^;]*)~i', $headers, $matches);
    if (isset($matches[1])) {
        $cookies = implode(';', $matches[1]);
        curl_setopt($ch, CURLOPT_COOKIE, $cookies);
    }
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $html = curl_exec($ch);
    curl_close($ch);

    echo htmlspecialchars($html);
     
    phillip нравится это.
  4. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    спасибо!! там еще есть яваскрипты корявые!! если есть возможность, сделайте пожалуйста еще смену авы у профиля! я курлом умею, но когда с яваскриптом- сразу как в болоте. сижу счас опять туплю((( заплачу 10$

    добавлено: уже не актуально
     
  5. zuko05

    zuko05 Прохожие

    а что такое этот курл и с чем его едят?
     
  6. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Перейти по ссылке
     
Статус темы:
Закрыта.