Вечный онлайн в ok.ru (php, curl, cookies)

Discussion in 'PHP' started by makag, 9 Nov 2014.

  1. makag

    makag Staatsanwalt

    Joined:
    27 Sep 2009
    Messages:
    478
    Likes Received:
    564
    Reputations:
    98
    На просторах интернетов нашел скрипт авторизации в ОД

    PHP:
    $user_agent 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .          
      
    'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';  
    $login 'логин';  $password 'пароль';  
    $ch curl_init();     curl_setopt($chCURLOPT_POSTtrue);  
    curl_setopt($chCURLOPT_USERAGENT$user_agent);  
    curl_setopt($chCURLOPT_RETURNTRANSFER1);  
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . '/cookie.txt');  
    curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . '/cookie.txt');  curl_setopt($chCURLOPT_HEADERtrue);  
    curl_setopt($chCURLOPT_TIMEOUT10); 
     
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);  
    curl_setopt($chCURLOPT_URL'http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&st.cmd=anonymLogin&tkn=941');
    $post = array(             'st.redirect' => '',             'st.posted' => 'set',             'st.email' => $login,    
    'st.password' => $password,             
    'st.screenSize' => '',             
    'st.browserSize' => '',                         'st.flashVer' => ''         );

    curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($post));  

    $answer curl_exec($ch);      
    echo 
    $answer;     

    curl_close($ch);

    По аналогии со скриптом вечного онлайна для Вк - поставил "на вечный онлайн" в кроне 10 экземпляров, каждые 9 минут вход.

    Всё хорошо, при авторизации на хостинге создается файл cookies.txt, я даже смутно догадываюсь для чего он.

    Но вот незадача - анкеты провисели в онлайне около 12 часов и онлайн "слетел".

    В дальнейшем уже чистил - убирал скрипты, пробовал поставить на выполнение только один экземпляр - всё равно, 20-30 минут держит в онлайне и всё слетает.

    Разносил каждый экземпляр в отдельную папку (чтоб куки сохранялись для каждого отдельно) - эффекта ноль.

    Собственно вопрос по реализации - есть мысли в чём может быть дело ? почему слетает авторизация и в дальнейшем не авторизовывается ? где я лоханулся ?
     
    #1 makag, 9 Nov 2014
    Last edited: 16 Nov 2014
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Вопрос банальный, а зачем вы авторизовуетесь сотни раз если можно просто единожды авторизоваться и потом просто посещать свой профайл в ОД с сохраненными куками и быть в онлайне без каких либо проблем. Естественно скрипт падает потому что ОД видит многочисленные авторизации и просто выдает капчу либо другим способом борется.

    ЗЫ
    Программирование очень сильно завязано на логике мышления, судя по разделу и тупейшим вопросам логика напрочь отсутствует у данного контингента. Эти мега скрипты в 5 строчек полу работающие уже подкумарили, не копипастите интернетные так называемые "скрипты", изучайте язык и пишите сами продумывая логику работы как сервиса так и скрипта.
     
    2 people like this.
  3. SpRyt

    SpRyt Member

    Joined:
    18 Oct 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    5
    PHP:
    $user_agent 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';     
    $login 'логин';  $password 'пароль'
    $ch curl_init();     curl_setopt($chCURLOPT_POSTtrue);  
    curl_setopt($chCURLOPT_USERAGENT$user_agent);  
    curl_setopt($chCURLOPT_RETURNTRANSFER1);  
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . '/cookie.txt');  
    curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . '/cookie.txt');  
    curl_setopt($chCURLOPT_HEADERtrue);  curl_setopt($chCURLOPT_TIMEOUT10); 
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue); 
    curl_setopt($chCURLOPT_URL'http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&
    st.cmd=anonymLogin&tkn=941'
    );   
    $post = array(  'st.redirect' => '',  'st.posted' => 'set',  'st.email' => $login,  'st.password' => $password,  'st.screenSize' => '',  'st.browserSize' => '',  'st.flashVer' => '' ); 
    curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($post));
    do {
       if(isset(
    $_SESSION)){ /*Пока открыта сессия (можно пока кукисы не за экспарились и существуют)*/
        
    }
       else{
       
    /*Обычная парольная аутентификация с сохранением кукисов*/
       
    }
      
    $answer curl_exec($ch);  // в ответ получили главную страницу
      
    echo $answer;    
      
    curl_close($ch);
      
    sleep(7200); //delay между попытками
    }while(1); // бесконечный цикл
    В и вот уже исчезает необходимость в крон запихивать по 10 копий (даже если ты используешь 10 учетных записей на сайте, то имеет имеет смысл в цикле (который добавишь) только менять (перебирать) credentials из массива; место сохранение cookies...)
     
    1 person likes this.
  4. makag

    makag Staatsanwalt

    Joined:
    27 Sep 2009
    Messages:
    478
    Likes Received:
    564
    Reputations:
    98
    b3 я к сожалению очень далёк от программирования и всего такого.
    даже html страницы делаю методом тыка, про php и curl вообще молчу.

    Поэтому и вопросы такие тупые :rolleyes: Знаю, что нужно обратиться в раздел "Предлагаю работу" и заказать написание скрипта за бабки - но не позволяет религия (хоть в роду евреев не было, но судя по мироощущению я точно еврей :D )


    мерси, не подумал об этом.

    почитал немного php.su и покурил гугл, взял на вооружение отеческие указания b3 и получилось вот такое:

    PHP:
    <?
    $user_agent 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .            
     
    'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';     
    $ch curl_init('http://www.odnoklassniki.ru/profile/561251313274');       
    curl_setopt($chCURLOPT_USERAGENT$user_agent);  
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . '/17.txt');  
    curl_setopt($chCURLOPT_HEADERtrue);  
    curl_setopt($chCURLOPT_TIMEOUT10);  
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);  
    curl_setopt($chCURLOPT_RETURNTRANSFER1);  
    curl_exec($ch);     
    curl_close($ch);    
    ?>
    * насколько я понимаю , то что у меня получилось - это get запрос с передачей предварительно сохранённых кукис. Был весьма удивлён, когда оно у меня заработала с первого раза :D

    - счас поставил, вроде как пока что работает - не знаю сколько живут куки поглядим ;) , да и вообще слабо понимаю КАК это работает.
    походу дела я 30 лет жизни учил совсем не то, что нужно :D

    SpRyt спасибо огромное, твоя карма стала светлей и чище, опробую твой тоже.

    это очень умно, я бы даже сказал гениально :rolleyes:

    еще одна спасибка за идею ;) даже мысли об этом не было, буду двигаться дальше, сенкс!
     
    #4 makag, 16 Nov 2014
    Last edited: 16 Nov 2014
  5. makag

    makag Staatsanwalt

    Joined:
    27 Sep 2009
    Messages:
    478
    Likes Received:
    564
    Reputations:
    98
    время жизни cookie в одноклассниках

    быть может, кому-то пригодится.

    итак, прошёл примерно месяц - и анкеты выпали из онлайна из-за того, что вышел срок жизни кукис, они устанавливаются одноклассниками на месяц.

    решил сильно не наглеть для начала, и увеличить срок жизни кук примерно на 3 месяца.

    Сначала терзал гугл запросами "edit Cookies" и "модификация даты expire для cookie" , однако не осилил поисковую выдачу и нашёл альтернативное решение.

    Т.к. время жизни cookie задается в секундах, начиная с 1 января 1970 года, то просто добавил примерно 7-8 миллионов секунд (3 месяца) в значение куки.

    Было:

    Code:
    odnoklassniki.ru	TRUE / FALSE   1422003085 AUTHCODE	YABzEpwxHJTmHXwj8pKEYhnafOMyeA

    Стало:

    Code:
    odnoklassniki.ru	TRUE / FALSE   142[COLOR=Sienna][SIZE=4]8[/SIZE][/COLOR]003085 AUTHCODE	YABzEpwxHJTmHXwj8pKEYhnafOMyeA
    быть может со стороны одноклассников тоже идёт встречный контроль, и через месяц мои куки перестанут принимать - в таком случае отпишусь. Пока что авторизация с помощью новосозданных и модифицированных cookie прошла успешно, аккаунт висит в онлайне. Старые, месячной давности куки таким образом модифицировать не удалось. /ОД недавно меняли что-то в API или авторизации, быть может поэтому старые куки не прошли процедуру генной модификации/
     
    #5 makag, 20 Dec 2014
    Last edited: 20 Dec 2014
  6. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Было бы странно, если бы старые куки вдруг полноценно заработали после модификаций и предшествующего им принудительного разлогина.

    А если бы такое произошло - это уже полноценная бага Session Fixation
     
    _________________________
    1 person likes this.