使用Python登录Google帐户进入网站[关闭]

2024-01-11

我正在制作一个网站,该网站制作分组中人数的图表(来自 www.codecamy.com)。

为了实现这一目标,我制定了一个计划。

我将有一个服务器来轮询 CodeCademy 组页面(http://www.codecademy.com/groups http://www.codecademy.com/groups) 每 30 秒一次,并从该 HTML 中检索所需的信息。

然后,当客户端连接到我的网站时,服务器将向客户端提供该信息,然后客户端将使用http://www.chartjs.org/docs/ http://www.chartjs.org/docs/ or http://www.jqplot.com/ http://www.jqplot.com/根据该信息绘制图表。

然而,有一个大问题。如果您单击了 CodeCademy 中的任何链接,您就会意识到您需要拥有一个帐户才能真正查看该网站。这可以是 Facebook 帐户、Google 帐户或 Twitter 帐户。

所以,简单来说,如果我想访问包含有关组的信息的页面,我需要为我的服务器拥有一个 Bot 帐户,并且我需要教我的服务器登录该帐户。

因此,我在 gmail 上创建了一个名为 codecademybot 的虚拟帐户,我希望我的服务器使用此帐户登录 codecademy,以便它可以看到该页面的内容。

通过遵循将我连接到 google+ 的快速入门 Python 教程 https://developers.google.com/+/quickstart/python我现在也有了与之交互的代码。

然而,尽管如此,我仍然对如何与网站交互一无所知。我有以下问题:

  1. 如何检测我是否登录了我的谷歌帐户?
  2. 我如何将自己连接到该帐户以便访问该页面?
  3. 有登录该网站的特殊链接吗?

我很迷茫,希望得到任何可能的帮助。


不要让所有的代码示例和操作指南让您误入歧途。它们适用于更复杂的情况。

  • 这不是oauth2授权,是oauth2认证
  • 您不是拥有 clientID 和密钥的客户端。 Codecademy 是具有 clientID 和密钥的客户端。您的 codecademybot 帐户就是用户。

这意味着您只需要自动化普通用户登录 Codecademy 时执行的操作即可。使用侦听的开发工具(IE 开发工具、FireBug 等)在浏览器中播放几次该交互,并查看 HTTP 请求的对话。

这就是您希望效仿的。

据我所见,

  • 对话通过向以下地址发送请求开始http://codecademy.com/auth/google_oauth2 http://codecademy.com/auth/google_oauth2.
  • 请求被转发到 google 的 https url
  • 如果我之前登录过 google,则会发送一些 cookie 并进行身份验证。请求被发送回 codecademy 的redirect_urlhttp://www.codecademy.com/auth/google_oauth2/callback http://www.codecademy.com/auth/google_oauth2/callback以 oauth2 身份验证代码作为参数。
  • 据说是 codecademy 和 google chat,因为这大约需要三秒钟。
  • 他们同意我就是我和两块饼干(remember_user_token and _session_id)在我转发到之前在我的浏览器中进行设置http://www.codecademy.com/ http://www.codecademy.com/

我认为最后一点很有趣。您可以使用浏览器手动登录,监听对话并将这两个 cookie 复制到您的自动代码中。看看它们是否足以作为身份验证令牌并允许您从网站获取数据。

如果没有,那么我强烈推荐@CrisBee21 的答案。我们希望 pyCurl 能够很好地模拟浏览器来为您进行对话。

另一件事是,当我浏览网站时,我看到一个 REST api 请求,即http://www.codecademy.com/api/v1/notifications/ http://www.codecademy.com/api/v1/notifications/userid/unread_count?authentication_token=一些令牌

冲浪至http://www.codecademy.com/api/v1/users/ http://www.codecademy.com/api/v1/users/userid/?身份验证令牌=代币给我更多关于我自己的信息

http://www.codecademy.com/api/v1/users/ http://www.codecademy.com/api/v1/users/userid/组?身份验证令牌=代币给我我所在的组。

如果您有更多关于 codecademy REST api 的文档,您可以尝试从那里获取。我找不到任何文档,我一边做一边弥补。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python登录Google帐户进入网站[关闭] 的相关文章

随机推荐

  • 如何向 AVPlayerViewController 添加自定义按钮?

    有没有什么方法可以将 向后 前进跳过 30 分钟 按钮添加到子类 AVPlayerViewController 中 使其看起来像原生的 就像播放 暂停按钮一样 实际上没有 好的 方法可以做到这一点 Apple 保持 AVPlayerView
  • 为什么切片值有时会过时但永远不会映射值?

    我发现切片映射函数和通道经常被一起提到参考类型 但是我注意到切片某些东西没有表现出任何参考行为 就像它们可能会变得陈旧一样 var s int must update slice value s append s or must use p
  • iOS LinkedIn 身份验证

    我开始使用 Swift 开发 iOS 应用程序 现在我需要创建一个登录系统 然而 我们需要人们提供的 LinkedIn 信息 如何在 iOS 中使用 OAuth2 API 来实现此目的 我已经在 LinkedIn 开发人员区域创建了一个应用
  • 如果集合中已存在临时元素,是否允许“[unordered_]set::emplace()”不构造临时元素?

    这个答案 https stackoverflow com a 77245073 2752075指出了一些有趣的事情 一个天真的实现std unordered set
  • 参数中的 Java“new”关键字

    最近我研究了很多 OOP 设计模式 遇到了一些以前从未见过的奇怪的事情 Button button new Button shell SWT PUSH button addSelectionListener new SelectionAda
  • 跨平台改变java进程优先级的方法

    我需要在单独的 JVM 中与另一个 java 应用程序调用 jar 文件 它非常消耗 CPU 因此它应该以后台优先级运行 以免影响系统的其余部分 有没有跨平台的方法来做到这一点 简单的答案是 没有可移植的方法来更改 Java 中进程的优先级
  • 无法解析方法,为什么?

    方法setDateListener DateListener dl 无法解决 它是公共的 我在包含该方法的 DatePickerFragment java 类的对象上使用它 这里是onCreateView 片段中的方法setDateList
  • C++ 刷新缓冲区

    我知道这里有很多缓冲区问题 但我似乎找不到明确的答案 std cout lt lt write to screen lt lt std endl 我知道这段代码会因为 endl 而写入屏幕并刷新缓冲区 但如果我这样写 std cout lt
  • 如何创建参数化 SQL 查询?我为什么要?

    我听说 每个人 都在使用参数化 SQL 查询来防止 SQL 注入攻击 而不必验证每一条用户输入 你怎么做到这一点 使用存储过程时会自动获取此信息吗 所以我的理解这是非参数化的 cmdText String Format SELECT foo
  • Function 对象是否必要

    创建如下函数是常见且容易的 var f function alert something 那么为什么会有函数对象 like var f new Function alert something 后者很难写 读 我只能想到一种情况 即有人在网
  • Ant在表单中设计DatePicker

    我在用着DatePicker组件来自antd在表单内并想要更改默认值onChange and value中的道具数DatePicker但它不起作用
  • Oauth2 与 Postman 和 IdentityServer4

    我正在尝试在我的 Identity Server 4 上使用 Postman 进行身份验证 它适用于 Net Code 2 但我最近更新到 Net Core 3 并进行了调整 我可以打开登录页面 可以登录 但无法正确重定向 停留在登录页面上
  • Telerik 和 jquery

    我正在开发一个从客户那里收到的应用程序 他们使用了一些 Telerik Web 控件 Telerik 显然包含它自己的 jquery 1 3 2 版本 而我使用的是 1 4 1 我遇到了一些奇怪的 javascript 问题 我想排除旧的
  • 具有默认参数值的 C# 方法不会生成无参数重载?

    最近 我想向扩展方法添加一个可选参数 原来的方法是这样的 public static class Extensions public static bool Foo this IFoo target target DoIt true 这显然
  • QString::split() 和“\r”、“\n”和“\r\n”约定

    我明白那个QString split应该用来获得QStringList从多行QString 但是如果我有一个文件并且我不知道它是来自 Mac Windows 还是 Unix 我不确定是否QString split n 在所有情况下都会很好地
  • 基类的类型不完整

    我有一个基类Point我从中继承Point3D 然而 由于某种原因 班级Point必须始终返回Point3D为操作add 所以我将其包含在我的包含中 这是我的班级Point ifndef POINT H define POINT H inc
  • CodeIgniter 罐身份验证

    我正在利用这个名为坦克验证 http www konyukhov com soft tank auth 希望这个问题不会太小众 因为它特定于这个库 我正在尝试如何在用户注册后立即登录 看来这个库不提供这个功能 我不想开始搞乱这个库 但也许有
  • 从 Django 视图启动 Scrapy

    我使用Scrapy的经验有限 每次使用它总是通过终端的命令 如何从 django 模板获取表单数据 要抓取的 url 以与 scrapy 通信以开始抓取 到目前为止 我只想到从django的视图中获取表单返回的数据 然后尝试进入scrapy
  • require.js +backbone.js:如何构建具有初始化功能的模块?

    我有一个包含三个页面的应用程序 它们是单页界面 这些页面具有相似但不相同的功能 所以我想要有提供通用功能的 javascript 模块 然后每个页面可以定制 覆盖部分通用功能 我使用的是backbone js 所以我要做的是 加载包含常见模
  • 使用Python登录Google帐户进入网站[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在制作一个网站 该网站制作分组中人数的图表 来自 www codecamy com 为了实现这一目标 我制定了一个计划 我将有一个服务