За последние 24 часа нас посетили 20592 программиста и 1133 робота. Сейчас ищут 686 программистов ...

Авторизация с помощью curl с изподвыподвертом

Тема в разделе "Решения, алгоритмы", создана пользователем uk141, 25 апр 2020.

Метки:
  1. uk141

    uk141 Новичок

    С нами с:
    22 апр 2020
    Сообщения:
    2
    Симпатии:
    0
    Есть сайт diary[тчк]ru.Есть задача - по расписанию заходить в профили пользователей и делать что-то, несомненно важное.
    Как я думаю оно должно работать:
    1. Загрузить главную страницу. Взять из неё число, в параметрах POST и число из скрытого поля.
    2. Отправить логин, пароль, число из поля.
    3. По циклу, загрузить пользователей и делать важное.

    Но что-то не выходит. Делаю вот так:

    PHP:
    1. <?php
    2.  
    3. $ch = curl_init('https://www.diary.ru/');
    4. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    5. curl_setopt($ch,CURLOPT_HEADER,true);
    6. curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFile.txt");//создаю файл с куками
    7. $html = curl_exec($ch);
    8.  
    9. iconv($html,"windows-1251","utf8");
    10.  
    11. preg_match("/signature(.*?)</",$html,$m);
    12. $hq=mb_substr($m[1],2,34);//ключ
    13.  
    14. preg_match('/login.php(.*?)method/s',$html,$m);
    15. $code=mb_substr($m[1],3,9);//скрытое поле
    16.  
    17. $params = array(//POST
    18.    'user_login' => 'Entername',
    19.    'user_pass' => '123456',
    20.    'save' => 0,
    21.    'signature' => $code
    22. );
    23.  
    24. if( $curl = curl_init() ) {
    25.     curl_setopt($curl, CURLOPT_URL, 'https://www.diary.ru/login.php?hq'.$hq);
    26.     curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    27.     curl_setopt($curl, CURLOPT_HEADER,true);
    28.     curl_setopt($curl, CURLOPT_POST, true);
    29.     curl_setopt($curl, CURLOPT_COOKIEFILE, "/tmp/cookieFile.txt");
    30.     curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
    31.     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    32.     curl_setopt($curl, CURLOPT_MAXREDIRS, 5);
    33.     $out = curl_exec($curl);
    34.     curl_close($curl);
    35.     iconv($out,"windows-1251","utf8");
    36.     echo $out;
    37.   }
    38. ?>
    И, вроде как, я должен видеть главную страницу, но уже авторизировавшись.
    Но нет.
    Что я делаю не так?
     
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    На этом форуме запрещено обсуждение парсинга\взлома и всего остального нехорошего.
     
  3. uk141

    uk141 Новичок

    С нами с:
    22 апр 2020
    Сообщения:
    2
    Симпатии:
    0
    Но я же не нехорошее. Я только штуку для отслеживания подписчиков, взамен переставшей работать от Рётсуке. Да и вопрос не про парсинг, а про авторизацию.