Авторизация Liberty Reserve

Discussion in 'PHP' started by daniel777, 13 Jan 2013.

  1. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Нужно реализовать авторизацию на сайте http://libertyreserve.com на PHP.
    Алгоритм работы скрипта я вижу таким:
    1)Получаем страницу авторизации на сайте:
    https://www.libertyreserve.com/en/login
    2)Парсим из ответа сервера:
    - куку __RequestVerificationToken_Lw__
    - код из тега <input type="hidden" name="c" value="Gd7J5ZO3KUCimouInMPVwg" />
    3)Делаем запрос к капче с полученной кукой
    4)Выводим на странице форму с скрытыми полями и капчу в base64
    5)Если передан POST запрос (из формы) - делаем запрос, в котором передаем куки, данные из формы.

    Проблема в том, что в 5 пункте, при запросе сервер всегда отвечает "Ошибка 412".
    У меня два варианта почему такое происходит:
    1)Я не правильно получаю каптчу (но другого варианта придумать не смог)
    2)Не правильно переданы заголовки, или какого-то не хватает (с помощью сниффера сравнивал с браузером - заголовки передаются одинаковые)

    Прошу посмотреть в чём может быть проблема.
    Если требуется аккаунт, могу дать тестовый - пишите в ЛС.
    Вот мой код:
    PHP:
    <?php

    $ch 
    curl_init();
    curl_setopt($chCURLOPT_URL'https://www.libertyreserve.com/en/login');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    $a=curl_exec($ch);
    curl_close($ch);

    preg_match('#Set-Cookie: __RequestVerificationToken_Lw__=(.*?);#'$a$b);
    preg_match_all('#value="(.*?)"#'$a$c);

    echo 
    $b[1]."\n\n".$c[1][4]."\n\n".$c[1][8];

    $ch curl_init();
    curl_setopt($chCURLOPT_URL'https://www.libertyreserve.com/captcha.jpg');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_COOKIE'__RequestVerificationToken_Lw__='.$b[1].';');
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    $img=curl_exec($ch);
    curl_close($ch);

    echo 
    '<form action="/" method="POST">
    Логин:<br>
        <input type="text" name="login" value=""><br>
    Пароль:<br>
        <input type="text" name="pass" value=""><br>
    <img src="data:image/jpeg;base64,'
    .chunk_split(base64_encode($img)).'"><br>
        <input type="text" name="captcha"><br>
        <input type="hidden" name="cookie" value="'
    .$b[1].'">
        <input type="hidden" name="c" value="'
    .$c[1][4].'">
        <input type="hidden" name="token" value="'
    .$c[1][8].'">
        <input type="submit" value="Отправить">
    </form>'
    ;

    ##########################
    if($_POST){

    $ch curl_init();
    curl_setopt($chCURLOPT_URL'https://www.libertyreserve.com/en/login');
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_COOKIE'__RequestVerificationToken_Lw__='.$_POST['cookie']);
    curl_setopt($chCURLOPT_FOLLOWLOCATION0);

    curl_setopt($chCURLOPT_HTTPHEADER, array(
        
    'Accept: */*',
        
    'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
        
    'DNT: 1',
        
    'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
        
    'Origin: https://www.libertyreserve.com',
        
    'Connection: keep-alive',
        
    'Pragma: no-cache',
        
    'Cache-Control: no-cache'
    ));

    curl_setopt($chCURLOPT_REFERER'https://www.libertyreserve.com/en/login');
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0');
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    curl_setopt($chCURLOPT_POSTFIELDS'AccountNumber='.$_POST['login'].'&RememberMe=false&Password='.$_POST['pass'].'&turingnumber='.$_POST['captcha'].'&c='.$_POST['c'].'&__RequestVerificationToken='.htmlspecialchars($_POST['token']).'&Next=Next');

    echo 
    curl_exec($ch);
    curl_close($ch);

    }

    ?>
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    daniel777 Попробуйте логировать то, что вы делаете. Говорят помогает
     
    _________________________
Loading...
Similar Threads - Авторизация Liberty Reserve
  1. Hemperok
    Replies:
    0
    Views:
    2,705
  2. flserj
    Replies:
    2
    Views:
    3,734
  3. japapo
    Replies:
    1
    Views:
    3,141
  4. Krost
    Replies:
    16
    Views:
    2,556