java - 从网页获取登录帖子请求

标签 java html authentication

我想以编程方式(使用 java)登录站点。

(已有用户名和密码)

以本网站为例: http://mediaforest-argentina.com/Membership/login.aspx?ReturnUrl=%2fGuests%2fRealtimeCharts.aspx

代码如下:

...
HttpPost httpost = new HttpPost("The url that I need");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("IDToken1", "username"));
nvps.add(new BasicNameValuePair("IDToken2", "password"));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
...

我需要 post 请求的 url。我怎样才能得到它?

最佳答案

您需要检查网站的源代码,特别是登录表单,并查看它发送的数据。看<form action="url_here" ...>

在您的示例站点中,此 URL 为 http://mediaforest-argentina.com/Membership/login.aspx?ReturnUrl=%2fGuests%2fRealtimeCharts.aspx但请注意,在很多情况下(本示例也不异常(exception)),存在隐藏的表单元素,其中包含您需要随请求发送的数据。 快速浏览一下就会发现许多隐藏的表单元素:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTEyOTA2MDE5Ng9kFgJmD2QWAgIBD2QWAgIBD2QWAgIED2QWAgIBD2QWAmYPZBYCAg8PEA8WAh4HQ2hlY2tlZGhkZGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBStjdGwwMCRDb250ZW50UGxhY2VIb2xkZXIxJExvZ2luMSRSZW1lbWJlck1lBTJjdGwwMCRDb250ZW50UGxhY2VIb2xkZXIxJExvZ2luMSRBZ3JlZVRlcm1zT2ZVc2FnZQ==">
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="HJPLOnv9G-WzfNEMvvC92zihg9ivnWKp_vC_6zv73e3_sOtSB4IhbCtPk3C75el4TZvgalSI2OHCaVGPxWZzWwUGXqo1">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCQKP7Ne4AgK/1YTzDQLu8I/0DgKh+7V7Ao+F8Z4OAsz3upgFAueno7sBAs/QlOcIAozNmZwP">

可能还有更多,但我并没有真正寻找很长时间。另请注意,在发布表单之前,JavaScript 可能会对值进行一些调整。因此,我建议您使用浏览器中的开发工具(Firebug 对于 Firefox,Chrome Development Tools 对于 Chrome 等)捕获完整请求,并以此为基础编写登录脚本。

我知道这听起来很复杂,但原因是,除非网站所有者提供公共(public) API,否则他/她可能不希望您以这种方式登录。

关于java - 从网页获取登录帖子请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766584/

相关文章:

java - HTML Java 小程序集成

java - Selenium Webdriver - 在 CSS 定位器中使用存储的字符串

java - 谷歌应用程序引擎-Java : HTML Error 403: Configuration Solution Thread

html - 如何使旋转木马移动响应并使图片适合。轮播大小

authentication - 如何使用 Nuxt.js 将数据存储到本地存储

android - 如果帐户身份验证器中的身份验证 token 已过期,则使用刷新 token

java - 无需将机器人添加到群组即可阅读 Telegram 消息

java - 为什么不使用自定义构造函数推断变量记录组件?

java - JSP 输入到 servlet 为空

ASP.NET/IIS 安全(Windows 身份验证)