【问题标题】:How can you send Username and Password without typing it?如何在不输入的情况下发送用户名和密码?
【发布时间】:2018-03-06 14:30:51
【问题描述】:

我想为我的同学创建一个应用程序 (C++)。

通常他们必须访问我们的学校网站并进入登录网站。 在那里,他们输入他们的用户名和密码,登录并搜索他们自己的班级。

我希望我的应用程序向他们询问班级、用户名和密码,将其发送到时间表站点,下载 url 并为他们打印时间表。

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

<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&amp;username="theusername" 因为 id 是“用户名”? 我试过了,它没有用..我在互联网上搜索了很多,但我没有找到答案。

【问题讨论】:

  • 你不需要引号,第一个变量应该以?而不是&amp;开头。例如...URL....\index.html?username=theusername&amp;otherVariable=otherhtml.net/tutorials/php/lesson10.php
  • 登录 HTML FORM 在您尝试登录的网站上的外观如何?
  • 你需要检查表单中的属性method,如果是get,你可以在url中发送变量,如果是post(因为它应该发送像这样的敏感数据密码)你不能那样做。
  • @MarioZ 到哪里去?
  • 它使用POST方法

标签: javascript php html


【解决方案1】:

在继续之前,请检查&lt;form&gt; 元素的method。提交数据的发送方式发生了变化。

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

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

请注意,也有可能使用 XHR(又名 Ajax 又名 XMLHttpRequest)实际发送数据。

了解工作原理的最简单方法是打开您喜欢的浏览器的开发工具的网络选项卡。它会告诉你它是普通页面还是 XHR、POST 或 GET 等。

请注意,在许多情况下,服务器随后会设置 cookie 以保持状态,因此您必须自己做同样的事情。

【讨论】:

  • 这是合法答案,我不知道为什么有人反对它。
  • 我刚看到方法是POST。这意味着我不能使用 ULR 方法.. 我现在该怎么办?
  • @TypenameT 如果您可以访问源代码,您可以简单地将其切换为 GET。否则,传输数据将非常困难。
  • 您使用什么库从您的应用程序向服务器发送请求?它可能具有指定您要使用POST 而不是GET 的选项,以及提供要发布的数据的方式。
  • 1.不,我无权访问源代码。 2.我昨天开始我还在考虑图书馆,但我想我会采取“提升”的。
【解决方案2】:

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

首先,您应该检查 POST 请求的外观。一种可能的方法是使用浏览器开发工具,网络选项卡:

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

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

这也取决于身份验证的实现,有些策略允许您这样做,而有些则受到保护。但我成功地将这种技术用于生产稳定的应用程序。我可以发送各种 cURL 请求并从我的终端以登录用户身份访问页面,而无需登录或使用浏览器。 (我没有登录,因为我只是从已经登录(并且可能记得)的用户那里“窃取”了会话)。在您的情况下,您需要先登录以获取这些标头(也使用您的 C++ HTTP 库),然后将新标头注入到未来获取数据的请求中。

【讨论】:

  • username 的 URL 中缺少 ?。而且,这种解释会让任何新的 HTML/PHP 开发人员感到非常困惑。
  • @GrumpyCrouton 现在添加了,我错过了,但这只是示例字符串,试图描绘我在说什么。
  • 是的,但是示例字符串非常重要,因为它似乎是 OP 正在努力解决的部分:P
  • @GrumpyCrouton 我完全同意。是的,这是一个有点令人困惑的解释,但我试图给出上下文的图片。我自己不是 PHP 开发人员,所以我不能提供好的代码示例,我希望有人能用更好的解释和代码示例来回答。同时,我希望这个答案能有所帮助。
  • 如果您在最初的帖子下查看我的评论,我在其中有一个链接可以转到解释 url 变量如何工作的页面,请随时将其添加到您的答案中以获得一些布朗尼点。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2012-09-12
  • 2022-07-28
  • 1970-01-01
相关资源
最近更新 更多