2017-09-25 166 views
1

我想为我的同学创建一个应用程序(C++)。如何在不输入密码的情况下发送用户名和密码?

通常他们必须去我们的学校网站并进入登录网站。 在那里,他们键入他们的用户名和密码,登录并搜索他们自己的课程。

我希望我的应用程序要求他们提供课程,用户名和密码,将其发送到时间表网站,下载url并为他们打印时间表。

我只编程C++,所以除了“发送用户名和密码到站点”步骤之外,我没有任何问题。我知道HTML的基础知识,所以我认为我必须搜索网站使用的变量名称,并以某种方式将它们与网址一起发送?我尝试了一些东西,但我不明白整个事情是如何工作的。

<label id="username-lbl" for="username" class="required" aria-invalid="false"> 
"Benutzername" 
<span class="star">&nbsp;*</span></label> 
<input type="text" name="username" id="username" value class="validate-username required" size="25" required aria-required="true" autofocus> 

这是用户名字段的HTML。我必须写如

...URL....\index.html&username="theusername"因为id是“用户名”? 我试过这个,它没有工作..我在互联网上搜索了很多,但我没有找到答案。

+0

你不需要引号,第一个变量应该以'?'而不是'&'开头。 EG'... URL .... \ index.html?username = theusername&otherVariable = other' http://html.net/tutorials/php/lesson10.php – GrumpyCrouton

+0

登录HTML FORM如何在您尝试的网站上显示登录? –

+0

你需要在表单中检查属性'method',如果它是'get',你可以发送url中的变量,如果它是'post'(因为它应该发送像密码这样的敏感数据),你不能做就这样。 – MarioZ

回答

3

在继续之前,请检查<form>元素的method。提交数据的方式发送更改。

  • 如果methodGET(或失踪),然后提交的数据确实是附加到URL。它与URL的其余部分(由action属性指定)分开使用?,名称 - 值对由&分隔。您还需要对这些值进行正确的URL编码。

  • 如果methodPOST,则在请求的主体中发送数据。格式取决于enctype

请注意,数据实际上也可能是使用XHR(aka Ajax aka XMLHttpRequest)发送的。

感受工作方式的最简单方法是打开您喜爱的浏览器开发工具的网络选项卡。它会告诉你它是普通页面还是XHR,POST或GET等。

请注意,在许多情况下,服务器将设置cookie以保持状态,因此您必须对侧。

+0

这是合法的答案,我不知道为什么有人低估了它。 – Kunok

+0

我刚看到方法是POST。这意味着我不能使用ULR方法..现在我该怎么做? – TypenameT

+0

@TypenameT如果你有权访问源代码,你可以简单地将它切换到GET。否则,传输数据将非常困难。 – GrumpyCrouton

0

所以你的C++程序应该收集所需的参数并生成有效的HTTP POST请求。

首先,您应该检查POST请求的外观。一个可能的方式做到这一点是使用浏览器的开发者工具,网络标签:

enter image description here

检查所有的标题和正文。看看这些东西是如何工作的,并尝试编写硬编码请求,并使用一些HTTP库从C++程序发送它。

它可能会验证您的用户并返回令牌或其他值,您可能会使用它来验证来自程序的请求,然后为其他请求包含这些标头,以便您可以充当用户并获取用户内容。

这也取决于验证实现,有些策略允许您在保护某些策略的同时执行此操作。但我成功地将这种技术应用于生产稳定应用。我可以发送各种cURL请求,并以终端用户的身份登录页面,而无需登录或使用浏览器。 (我没有登录,因为我刚刚从已登录(并可能记住)用户“偷走”了会话)。在你的情况下,你需要首先登录才能获得这些头文件(也使用C++ HTTP库),然后为将来的请求获取数据注入新的头文件。

+0

在'username'的url中缺少'?'。而且,对于任何新的HTML/PHP开发人员来说,这种解释都会让人感到困惑。 – GrumpyCrouton

+0

@GrumpyCrouton现在添加了它,我错过了,但这只是一个示例字符串,试图描绘我正在说的内容。 – Kunok

+1

是的,但示例字符串非常重要,因为它似乎是OP正在努力的部分:P – GrumpyCrouton

相关问题