Войдите в аккаунт Google с помощью Python?

Я хочу войти в свою учетную запись Google, используя Python, но когда я печатаю результаты html, он не показывает мое имя пользователя. Вот как я знаю, что он не вошел в систему.

Как я могу войти в Google с помощью Python? До сих пор я видел два популярных модуля для этого urllib.request или Requests, но ни один из них не помог мне войти в гигантский Google.

Код:

import requests # Fill in your details here to be posted to the login form. payload = { 'Email': 'accountemail@gmail.com', 'Passwd': 'accountemailpassword' } # Use 'with' to ensure the session context is closed after use. with requests.Session() as s: p = s.post('https://accounts.google.com/signin/challenge/sl/password', data=payload) # print the html returned or something more intelligent to see if it's a successful login page. print(p.text) 

Информация о форме входа:

 <input id="Email" name="Email" placeholder="Enter your email" type="email" value="" spellcheck="false" autofocus=""> <input id="Passwd" name="Passwd" type="password" placeholder="Password" class=""> <input id="signIn" name="signIn" class="rc-button rc-button-submit" type="submit" value="Sign in"> 

Когда я вхожу в систему, консоль даст мне 4 ссылки для запроса, поэтому я не уверен, что я даже использую правильный URL.

 Request URL:https://accounts.google.com/signin/challenge/sl/password Request Method:POST Status Code:302 Request URL:https://accounts.google.com/CheckCookie?hl=en&checkedDomains=youtube&checkConnection=youtube%3A503%3A1&pstMsg=1&chtml=LoginDoneHtml&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Fhl%3Den%26feature%3Dsign_in_button%26app%3Ddesktop%26action_handle_signin%3Dtrue%26next%3D%252F&gidl=CAASAggA Request Method:GET Status Code:302 Request URL:https://accounts.google.com/CheckCookie?hl=en&checkedDomains=youtube&checkConnection=youtube%3A503%3A1&pstMsg=1&chtml=LoginDoneHtml&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Fhl%3Den%26feature%3Dsign_in_button%26app%3Ddesktop%26action_handle_signin%3Dtrue%26next%3D%252F&gidl=CAASAggA Request Method:GET Status Code:302 request URL:https://www.youtube.com/signin?hl=en&feature=sign_in_button&app=desktop&action_handle_signin=true&next=%2F&auth=xAMUT-baNWvXgWyGYfiQEoYLmGv4RL0ZTB-KgGa8uacdJeruODeKVoxZWwyfd-NezfxB6g. Request Method:GET Status Code:303 

В настоящее время я использую Python 3.4.2 и не планирую использовать API Google.

2 Solutions collect form web for “Войдите в аккаунт Google с помощью Python?”

Это позволит вам войти в систему:

 from bs4 import BeautifulSoup import requests form_data={'Email': 'you@gmail.com', 'Passwd': 'your_password'} post = "https://accounts.google.com/signin/challenge/sl/password" with requests.Session() as s: soup = BeautifulSoup(s.get("https://mail.google.com").text) for inp in soup.select("#gaia_loginform input[name]"): if inp["name"] not in form_data: form_data[inp["name"]] = inp["value"] s.post(post, form_data) html = s.get("https://mail.google.com/mail/u/0/#inbox").content 

Если вы сохраните и откройте html в браузере, вы увидите « Loading you@gmail.com… , вам понадобится Javascript для фактической загрузки страницы. Вы можете дополнительно проверить, введя неверный пароль, если вы снова увидите html страницы входа.

Вы можете видеть в своем браузере гораздо больше сообщений, чем вы предоставили, значения содержатся в gaia_loginform .

 <form novalidate method="post" action="https://accounts.google.com/signin/challenge/sl/password" id="gaia_loginform"> <input name="Page" type="hidden" value="RememberedSignIn"> <input type="hidden" name="GALX" value="5r_aVZgnIGo"> <input type="hidden" name="gxf" value="AFoagUUk33ARYpIRJqwrADAIgtChEXMHUA:33244249"> <input type="hidden" id="_utf8" name="_utf8" value="&#9731;"/> <input type="hidden" name="bgresponse" id="bgresponse" value="js_disabled"> <input type="hidden" id="pstMsg" name="pstMsg" value="0"> <input type="hidden" id="dnConn" name="dnConn" value=""> <input type="hidden" id="checkConnection" name="checkConnection" value=""> <input type="hidden" id="checkedDomains" name="checkedDomains" value="youtube"> 

Я, очевидно, не собираюсь делиться своей электронной почтой или паролем, но вы можете оставить мой адрес электронной почты в переменной my_mail ниже, вы можете видеть, когда мы проверяем, что он есть:

 In [3]: from bs4 import BeautifulSoup In [4]: import requests In [5]: post = "https://accounts.google.com/signin/challenge/sl/password" In [6]: with requests.Session() as s: ...: soup = BeautifulSoup(s.get("https://accounts.google.com/ServiceLogin?elo=1").text, "html.parser") ...: for inp in soup.select("#gaia_loginform input[name]"): ...: if inp["name"] not in form_data: ...: form_data[inp["name"]] = inp["value"] ...: s.post(post, form_data) ...: In [7]: my_mail in s.get("https://mail.google.com/mail/u/0/#inbox").text Out[7]: True 

За исключением использования oAuth или их API, у google есть такие вещи, как captcha и т. Д., Чтобы предотвратить появление ботов от принудительных и угадывающих паролей.

Вы можете попробовать и обмануть пользовательского агента, но я все же верю, что это вена.

  • Проверка делимости на несколько номеров
  • Переключение с 64-битного python.exe на 32bit в среднем исполнении
  • Диалоги файлов Tkinter в Python 3?
  • Как вы планируете обрабатывать миграцию на Python 3?
  • Импортировать приложение в проект django
  • Как использовать несколько версий Python без удаления
  • Как заменить NaN на предыдущие значения в pandas DataFrame?
  • Как заставить пользователей вводить только целочисленные значения в программе Python
  • python total_ordering: почему __lt__ и __eq__ вместо __le__?
  • Python 3: применить оператор по итерабельному
  • ImportError: Нет модуля с именем 'util'
  • Python - лучший язык программирования в мире.