HTTP Post 使用时间戳、令牌、用户名和密码登录网站

HTTP Post 使用时间戳、令牌、用户名和密码登录网站

我想通过脚本登录网站。为此,我搜索了 POST 请求的来源。登录网站的 post 请求包含数据“用户名”、“密码”、“时间戳”和“令牌”。但是,当我复制时间戳和令牌并将 post 请求粘贴到我的浏览器地址栏并使用我的用户名和密码时,如下所示:

https://example.com/action/login?__elgg_token=905adbf0c0111fef78a8344c38c8f2a8&__elgg_ts=1461577445&username=foo&password=bar

登录失败。我需要不同的令牌和时间戳吗?

这是来自源头的:

action="https://example.com/action/login" method="post" > 

<input type="hidden"  name="__elgg_token"  value="905adbf0c0111fef78a8344c38c8f2a8" />

<input type="hidden"  name="__elgg_ts"  value="1461577445" />

<input type="text"   name="username"  value="" class="form-control login-textarea form-control" />

<input type="password"   name="password"  value="" class="form-control login-textarea" />

答案1

当我复制时间戳和令牌并粘贴到浏览器地址栏中的 URL 中时...登录失败

据我所知,常见的网络浏览器中的地址栏会导致浏览器发出 HTTP GET 请求,而不是 HTTP POST 请求。

作为类堆叠器评论道。您不能假设 POST 请求可以转换为服务器可以识别的等效 GET 请求。

我想要通过脚本登录一个网站(需要 HTTP POST 请求)

如果您使用的是传统的命令行脚本语言,则可以使用多种工具来发出 POST 请求。

从 shell 脚本中,您可以使用 Wget 或 cURL 等工具发出 POST 请求并捕获任何生成的会话 cookie 等。

使用其他脚本语言或更通用的语言(Perl、Ruby、Python 等)编写的脚本通常具有标准库,可用于发出 POST 和 GET 请求以及管理 cookie 等。

示例来自Wget 手册页

# Log in to the server.  This can be done only once.
wget --save-cookies cookies.txt \
     --post-data 'user=foo&password=bar' \
     http://server.com/auth.php

# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
     -p http://server.com/interesting/article.php

其他例子也不难找到

相关内容