За последние 24 часа нас посетили 53790 программистов и 1773 робота. Сейчас ищут 827 программистов ...

Автологин на гугле

Тема в разделе "Прочее", создана пользователем Mark32, 28 апр 2010.

  1. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Хочу автоматически заходить на сервисы гугла, но столкнулся с тем что в форме авторизации есть один параметр, называемый GALX, который генерит типа сессий. Подскажите как обойти (может кто уже обошёл давно??).

    HTML:
    1. <form  id="gaia_loginform" action="https://www.google.com/accounts/LoginAuth" method="post" onsubmit="return(gaia_onLoginSubmit());">
    2. <input type="hidden" name="continue" id="continue" value="https://www.google.com/" />
    3. <input type="hidden" name="dsh" id="dsh" value="7256430144203676232" />
    4. <input type="hidden" name="hl" id="hl" value="ru" />
    5. [color=red]<input type="hidden" name="GALX" value="eOG7gE0FeAY" />[/color]
    6. <input  type="text" name="Email"  id="Email" size="18" value="" class='gaia le val'/>
    7. <input  type="password" name="Passwd" id="Passwd" size="18" class="gaia le val"/>
    8. <input  type="checkbox" name="PersistentCookie" id="PersistentCookie" value="yes" checked='checked'/>
    9. <input type="hidden" name='rmShown' value="1" />
    10. <input type="submit" class="gaia le button" name="signIn" id="signIn" value="Войти"/>
    11. <input type="hidden" name="asts" id="asts" value="">
    12. </form>
    подскажите - очень надо
     
  2. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Как картинку прикрепить к сообщению?
     
  3. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Я конечно могу путать что-то.
    Но, как мне помнится, у гугла было АПИ для авторизации.
     
  4. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Mark32
    посмотри DudeCurl
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    и блевани
    по теме: слабо снифер посмотреть? если типа сессии то и работай как с сессией
     
  6. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    причём тут блевани? блевать можно от чего хочешь, а пример посмотреть за неимением других вполне реально
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    блевать придётся против своей воли =)

    а как пример нужно смотреть доки по Http и снифер
    хотя помнится лазил я на почту в гугле. чёт не помню эту переменную
     
  8. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    блин... осинило. за такие игры поисковики нахер забанят... или?
     
  9. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Хм.. нарыл кое-что..

    PHP:
    1.  
    2. class google{
    3.    
    4.     public $cookiejar;
    5.     public $logged_in;
    6.     private $ch;
    7.    
    8.     public function __construct(){
    9.         $this->logged_in = false;
    10.         $this->cookiejar = "/tmp/tmp_cookies";
    11.     }
    12.     private function posterize($post){
    13.         $postv = '';
    14.         foreach($post as $key=>$val){
    15.             $postv .= $key .'='.$val.'&';
    16.         }
    17.         return $postv;
    18.     }
    19.     private function clean($data){
    20.         $data = preg_replace("/\r|\n/","",$data);
    21.         $data = preg_replace("/\s+/"," ",$data);
    22.         return $data;
    23.     }
    24.     public function init($service = ""){
    25.         $this->google_service = $service;
    26.    
    27.         $this->ch = curl_init();
    28.         curl_setopt($this->ch, CURLOPT_HEADER, 0);
    29.         curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
    30.         curl_setopt($this->ch, CURLOPT_COOKIEJAR, $this->cookiejar);
    31.         curl_setopt($this->ch, CURLOPT_COOKIEFILE, $this->cookiejar);
    32.         curl_setopt($this->ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    33.        
    34.         // start a session
    35.         $url = "https://www.google.com/accounts/ServiceLogin?service=".$this->google_service;
    36.         curl_setopt($this->ch, CURLOPT_URL, $url);
    37.         $data = $this->clean(curl_exec($this->ch));
    38.        
    39.         // if(<input type="hidden" name="Email")
    40.         if(preg_match('/<input type="hidden" name="Email" id="Email" value="([^"]+)"/',$data,$matches)){
    41.             // there is already an eamila ddress associated with this cookie
    42.             $this->got_user_cookie = true;
    43.             $this->got_user_cookie_email = $matches[1];
    44.         }
    45.         //<input type="hidden" name="GALX" value="EeM8uSvHWCg" />
    46.         // this value is also in the cookie
    47.         preg_match('/<input type="hidden" name="GALX" value="([^"]+)"/',$data,$matches);
    48.         $this->google_galx = $matches[1];
    49.        
    50.     }
    51.     public function signin($username,$password){
    52.         $url = "https://www.google.com/accounts/ServiceLoginAuth";
    53.         curl_setopt($this->ch, CURLOPT_URL, $url);
    54.         // login details
    55.         $post = array(
    56.             "GALX"        =>    $this->google_galx,
    57.             "Email"        =>    $username,
    58.             "Passwd"    =>    $password,
    59.             //"PersistentCookie"    =>    "yes",
    60.             "rmShown"    =>    "1",
    61.             "service"    =>    $this->google_service,
    62.            
    63.         );
    64.         curl_setopt($this->ch, CURLOPT_POST, true);
    65.         curl_setopt($this->ch, CURLOPT_POSTFIELDS, $this->posterize($post));
    66.         $data = $this->clean(curl_exec($this->ch));
    67.         curl_setopt($this->ch, CURLOPT_POST, false);
    68.         curl_setopt($this->ch, CURLOPT_POSTFIELDS, false);
    69.  
    70.         if(preg_match('/LoginDoneHtml/',$data)){
    71.             // login success
    72.            
    73.             /*$url = "https://www.google.com/accounts/CheckCookie?chtml=LoginDoneHtml";
    74.             curl_setopt($this->ch, CURLOPT_URL, $url);
    75.             $data = $this->clean(curl_exec($this->ch));*/
    76.            
    77.             $this->logged_in = true;
    78.             return true;
    79.         }else{
    80.             // echo $data; // uncomment for debug
    81.             return false;
    82.         }
    83.     }
    84.    
    85.     public function grab_url($url){
    86.         // grab and return the contents of the url
    87.         // we pass along the authenticated cookie information
    88.         // so this is really only useful for google.com url's (eg: web history export)
    89.         curl_setopt($this->ch, CURLOPT_URL, $url);
    90.         $data = curl_exec($this->ch);
    91.         return $data;
    92.     }
    93.    
    94.    
    95. }
    96.  
     
  10. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    на яндексе попроще, но эта надпись....

    Внимание! Сайт ----- не принадлежит Яндексу. и т.д.

    типа этого: [​IMG] :mrgreen:

    Чую забанят за такое
     
  11. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    http://openid.yandex.ru/
    У гугла есть аналогичный сервис.

    В чем вопрос, и что пытаемся сделать?
     
  12. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  13. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Хочу заходить на аккаунты яндекса и гугла через сайт (чтобы не вводить логин/пасс постоянно вручную)
     
  14. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    openId

    Upd: и кстати, а чем не устроили стандартные средства в браузерах? пароль и логин они запоминают˙
     
  15. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Simpliest
    что-то я не догоняю как это использовать для данной цели. Пример можно?
     
  16. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    OpenId позволяет иметь фактически одну учетную запись на много сервисов.

    Т.е. сервис не регистрирует тебя, а пользуется авторизацией OpenID провайдера.
     
  17. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Та-а-кс, а если у меня несколько аккаунтов на яндексе, врядли подойдёт? Я хочу просто из формы на своём сайте зайти одним кликом к примеру на почту, а с другого аккаунта на метрику... (с разных браузеров)
     
  18. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Нет, такое работать не будет :)

    А почему бы не связать все яндекс-аккаунты на один паспорт? там была вроде такая возможность.
     
  19. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    хочу чтобы не только я заходил на эти аккаунты, а ещё те, которым я даю такой доступ, но чтобы они не вводили логин-пароль, а просто кликали на кнопку.
     
  20. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А это надо копать в сторону OAuth.

    Там есть такие возможности. Дать кому-то доступ без передачи своего логина и пароля.
    Вот реализовано ли это в гугло-яндексах - я не в курсе.
     
  21. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    покопался на эту тему в гугле - вроде можно, но рыть ещё много придётся. К тому же вся документация на эту тему на инглише - голова уже кипит. А в яндексе уверен это исключено :)
     
  22. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Simpliest
    API это понятно. Просто не хочется вручную привязывать данные аналитика к графикам, к тому же сделать в точности как на гугле будет очень сложно (припаять все данные к крутой библиотеке графиков). Вобщем я попробовал использовать просто file_get_contents https://www.google.com/accounts/LoginAuth и... походу получилось. Таким образом мы открываем страницу со сгенерированным GALX и всё - автологин удался. Только я не понял в чём подвох... слетит наверное такая схема?
     
  23. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Понятия не имею. Я в таких случаях пытаюсь связаться с владельцем сервиса и выяснить границы разрешенного.
    Бывает, конечно, что запрещают даже те варианты, которые работают, но не являются "официальными" для их продукта, но это дело такое.