如何使用python通过oauth登录到第三方应用程序
Posted
技术标签:
【中文标题】如何使用python通过oauth登录到第三方应用程序【英文标题】:How to login by oauth to third party app with python 【发布时间】:2022-01-04 18:09:48 【问题描述】:我在针对具有 google 提供的 Oauth 的网络服务进行身份验证时遇到问题。 基本上,我想用我的谷歌帐户登录到一个网页,对它进行一些抓取。
由于 web 服务不是我的,我没有应用程序 secret_key,只有客户端 ID、redirect_URL 和范围,我可以从登录时看到使用的请求方法的参数中恢复。
一旦通过身份验证,网页只需要一个名为 SID(我猜是会话 ID)的 cookie,以作为经过身份验证的用户回复。没有 Bearer 令牌,只有 SID cookie。
是否可以自动执行此类身份验证?我已经阅读了许多相关主题,但它们都需要我没有的 secret_key,因为我不是应用程序的所有者。
【问题讨论】:
【参考方案1】:(由于代表无法发表评论)
是的,您的要求是可能的。理论上,您可以遵循并匹配所有请求以成功验证自己以获取 SID 并执行抓取,尽管这对于一些基本的网络抓取来说是一项非常困难的任务,这就像编写一个成熟的科学计算器来执行 5 + 5 . 你问的是一个真正困难的任务,当你尝试使用 Python 登录你的帐户时,你会遇到各种安全问题,并被要求进行电话/身份验证器应用程序/电子邮件验证请求,然后您需要跟踪这些安全 cookie 并保持更新,这真是一团糟,对任何人来说都非常困难。
我认为更好的方法是手动验证自己并获取SID
cookie 并将其硬编码到cookie
HTTP 标头中的刮板中。
我知道这会引起人们对 SID cookie 过期时该怎么做的担忧。既然你还没有说网站,我很难想象有一个网站可以让你经常向 Google 验证自己,而不是拥有自己的内部 SID/JWT 刷新系统来让你保持登录。
我的建议是:
检查 SID cookie 的过期时间,如果可以在验证自己后手动复制并粘贴它,请执行此操作。 如果 SID 即将到期,请检查是否有 API 请求为自己获取新 SID(无需再次通过 OAuth),在您的网络面板中查找设置新 SID 的set-cookie
响应标头,您可能需要在程序中更改和跟踪这些内容,但这比编写程序登录 Google 容易得多。
如果无法刷新 SID 并且它们经常过期,并且您需要进行长期的网络抓取并坐在那里每 30 分钟手动获取一个新 cookie 是不够的,我建议您考虑这样做Puppeteer/Chromium,因为它比通过 Python HTTP 请求更容易。
【讨论】:
感谢您的回答。您的建议的问题是我打算使用不同的帐户自动执行此任务,因此手动登录并捕获 cookie 是不行的。 我明白了。祝你任务顺利!以上是关于如何使用python通过oauth登录到第三方应用程序的主要内容,如果未能解决你的问题,请参考以下文章