【发布时间】:2020-07-09 20:58:21
【问题描述】:
概述
我希望收集由 C/C++ 程序中的函数打开的浏览器地址栏的内容。这里有几个线程讨论这个问题。但是,似乎没有一个对我有帮助。
我的环境
操作系统:Windows 7、Windows 10。
开发语言:C/C++
我的项目
我正在编写一个需要从服务器收集数据的应用程序。服务器要求客户端对其自身进行身份验证,并为此使用两步 OAuth 2.0 协议。我需要使用第三方开发的 Web API。
以下页面描述了整个过程。
https://apidocs.getresponse.com/v3/case-study/oauth2-authorization-code
但是,我只有第一步的问题:从服务器获取授权码。
此页面的一个亮点解释了第一步的过程,这里唯一重要的是:
想亲眼看看?试试这个。
我已经创建了一个帐户并在 getresponse.com 上注册了一个伪造的应用程序用于测试目的。
-
导航到以下网址:
-
登录:
您的电子邮件:jnj54972@cuoly.com
密码:@Aa11111 -
在下一个屏幕上,点击Yes。
重定向到 example.com 站点后,下一个屏幕在地址栏中显示以下内容:
http://example.com/receiver?code=<code>&state=xyz
地址栏中的这段代码正是我在浏览器中显示此页面时继续第二步认证所需要的。 因此有必要收集地址栏中包含的数据。
- 您可以重复该操作并再次导航到相同的 URL:您无需再次登录,您将获得另一个授权码。
(注:为了在getresponse.com上测试Oauth 2.0协议,我在2020年7月9日创建了一个应用,这个账号的有效期为30天。因此,上面提到的登录凭证很可能在一个月后过期。创建日期。)
到目前为止我已经尝试过什么
我不会详细介绍,否则这篇文章可能会太长。但我确实尝试了许多带有各种参数的“curl GET”请求。不走运:我从来没有得到带有代码的浏览器地址栏数据作为回报。
有人可以帮忙吗?
【问题讨论】:
-
“我希望收集浏览器地址栏的内容”——这很重要。铬合金? IE浏览器?歌剧?我自己编写的自定义网络浏览器?
-
这是一个 X/Y 问题 - 您说您需要使用 OAuth2(或 OIDC,我假设)进行身份验证。 您无需劫持用户的网络浏览器即可做到这一点。有专门的 OAuth2 客户端库提供模拟网络浏览器,以解决 OAuth2/OIDC 以浏览器为中心的特性。
-
但是对于您的应用程序,您应该使用 OAuth2
device或client-credentials身份验证模式,而不是面向人的code(身份验证代码)、hybrid或implicitOAuth 流程。 -
哪个浏览器?许多浏览器不喜欢其他程序侵入他们的空间。
-
@Dai 我是 OAuth2 的新手,我不知道客户端库可用。你为我指明了正确的方向。我检查并发现了几个用于 C / C++ 的 OAuth2 库。您能否推荐一款已被证明功能强大且高效的产品?