Python 使用请求登录谷歌并访问youtube

Python 使用请求登录谷歌并访问youtube,python,beautifulsoup,python-requests,gmail,Python,Beautifulsoup,Python Requests,Gmail,我正试图通过请求登录到Gmail,然后继续观看youtube,做一些搜索等。我不想使用selenium或任何其他selenium替代品,因为我觉得它体积庞大且不方便 我在研究如何做到这一点,我在这里找到了一些答案,并基于我的代码。然而,这些解决方案是几年前提出的,我不知道它现在是否仍然适用,是否能达到我想要的目的 class SessionGoogle: def __init__(self, url_login, url_auth, login, pwd): self.se

我正试图通过请求登录到Gmail,然后继续观看youtube,做一些搜索等。我不想使用selenium或任何其他selenium替代品,因为我觉得它体积庞大且不方便

我在研究如何做到这一点,我在这里找到了一些答案,并基于我的代码。然而,这些解决方案是几年前提出的,我不知道它现在是否仍然适用,是否能达到我想要的目的

class SessionGoogle:
    def __init__(self, url_login, url_auth, login, pwd):
       self.ses = requests.session()
       login_html = self.ses.get(url_login)

       soup_login = soup(login_html.content, "lxml").find('form').find_all('input')
       my_dict = {}
       for u in soup_login:
           if u.has_attr('value'):
               my_dict[u['name']] = u['value']
       # override the inputs without login and pwd:
       my_dict['Email'] = login
       my_dict['Passwd'] = pwd
       self.ses.post(url_auth, data=my_dict)

   def get(self, URL):
       return self.ses.get(URL).text


   url_login = "https://accounts.google.com/ServiceLogin"
   url_auth = "https://accounts.google.com/ServiceLoginAuth"
   session = SessionGoogle(url_login, url_auth, "gmaillogint", "gmailpass")
   r = session.get("http://plus.google.com")  
   p = session.get("http://google.com")
   yt = session.get("https://youtube.com")
此代码取自此帖子:

最初的帖子说,这可以处理任何谷歌服务页面的登录。这在今天仍然适用吗?如果是的话,这可以用来登录谷歌(Gmail)账户并观看youtube吗?还是我必须使用硒


编辑:我尝试了这段代码,它没有导致任何类型的错误。然而,当我试图打印r.text或r.content时,我得到了一个AttributeError:'str'对象没有属性'content'“错误。这让我觉得这不是它应该的工作方式。

那是行不通的。自2014年发布该帖子以来,谷歌的登录页面发生了重大变化。它现在包括一些重要的安全功能,旨在防止自动登录


如果你需要对谷歌服务进行认证,他们可能有一个API;有关详细信息,请参阅。不过,没有API可以“观看Youtube、进行一些搜索等”。

这是行不通的。自2014年发布该帖子以来,谷歌的登录页面发生了重大变化。它现在包括一些重要的安全功能,旨在防止自动登录


如果你需要对谷歌服务进行认证,他们可能有一个API;有关详细信息,请参阅。不过,没有“观看Youtube、进行搜索等”的API。

我有另一个可能适合您的解决方案,不需要任何google API。 配合使用

注意:将chromedriver置于系统路径中


除此之外,selenium wire还有许多很棒的功能,请查看Github,我有另一个解决方案,可能适合您,不需要任何google API。 配合使用

注意:将chromedriver置于系统路径中


除此之外,selenium wire还有许多很棒的功能,请查看Github

为什么不自己试试呢?我有。查看编辑以了解我的结果为什么不自己尝试一下呢?我有。查看编辑我的结果是的,这差不多就是我问这个问题的原因。谢谢你的回答。猜猜它的硒时间:(即使这样也可能不起作用。谷歌在阻止自动登录方面投入了大量精力。是的,这正是我问这个问题的原因。谢谢你的回答。猜猜它的硒时间:(即使这样也可能不起作用。谷歌在阻止自动登录方面投入了大量精力。
from seleniumwire.undetected_chromedriver.v2 import Chrome, ChromeOptions
import time

options = {}
chrome_options = ChromeOptions()
chrome_options.add_argument('--user-data-dir=hash')
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--disable-dev-shm-usage")
# chrome_options.add_argument("--headless")
browser = Chrome(seleniumwire_options=options, options=chrome_options)

browser.get('https://gmail.com')
browser.find_element_by_xpath('//*[@id="identifierId"]').send_keys('your-email')
browser.find_element_by_xpath('//*[@id="identifierNext"]/div/button').click()
time.sleep(5)
browser.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input').send_keys('you-password')
browser.find_element_by_xpath('//*[@id="passwordNext"]/div/button').click()
time.sleep(5)
browser.get('https://youtube.com')