如何以编程方式验证web表单的登录凭据
How to programmatically verify login credentials for a web form?
我正在构建一个应用程序,让用户从大学系统导出数据。目前,他们可以登录并查看HTML中的数据,但我想让人们将其下载为CSV。
我有一个应用程序,用户可以在其中提供用户名和密码。我想登录到大学系统并用HTML刮取生成的页面。我该怎么做?
我正在构建一个GWT应用程序。我可以在客户端使用Java音译的JS,也可以在服务器上使用Java。
更新:硒可能不错,但看起来有些过头了。
除非域相同,否则必须在服务器上执行此操作。您需要确定另一台服务器在登录步骤中使用的POST事务是什么样子的——参数名称等。然后执行该操作,并对返回的内容执行任何操作。如果您需要查看多个页面,还需要维护适当的会话cookie,以便服务器知道您仍在登录后续的HTTP请求。
如果你必须访问另一个网站来验证凭据,那么我不确定人们是否会放心地向你提供这些凭据。也就是说,如果你没有直接检查凭据的权利,为什么你值得信任接收凭据?我知道有时人们需要与他们不拥有的系统集成,所以这只是一个问题。
首先,这必须在服务器端完成,因为同源策略对客户端脚本的限制。
处理您提到的"屏幕抓取"的典型方法是将网页视为XML服务。首先,检查页面的源代码,然后使用internet/HTTP堆栈,编写到正确URL的POST,并使用标准XML库读取响应。要想找到一种深入XML的好方法来找到您需要的尽可能与页面更改隔离的部分,需要一些独创性。请记住,您的系统可能会在网站所有者更改页面的任何时候中断。
有时,您不能只发送POST,而是必须首先请求空白页面,以便获得需要在POST中返回的隐藏表单值。你必须进行实验才能知道它需要什么。
此外,您可能还必须处理cookie,因为它们通常是网站身份验证和会话管理的组成部分(尽管您可能很幸运,会话在初始POST和第一次响应之间并不重要)。
最后,你可能很不幸,网站使用javascript来完成部分身份验证工作,这可能需要额外的挖掘来了解凭据是如何发布到网站的。
还有其他潜在的障碍,如网站检查以查看引用人是他们自己的网站,可能使用SSL(HTTPS)等等。
我敢肯定,web浏览器中的跨站点脚本保护意味着您不能使用web浏览器中运行的javascript登录大学的应用程序。因此,从大学获取数据的程序部分需要在服务器上运行。一旦你有了数据,你就可以在服务器上或浏览器中的javascript中处理它,但我认为在服务器上处理会更容易。
请参阅http://en.wikipedia.org/wiki/Same_origin_policy
我对GWT不太确定,但通常情况下,您会采用用户提交的表单数据,并将其与用户名和哈希密码数据库进行核对。如果数据库签出,则设置一个会话cookie,说明用户已登录
在您的页面中,检查会话cookie是否显示用户已登录。如果没有,请重定向到登录页面,否则允许他们查看页面。
- Jquery Modal表单登录与AJAX-ASP经典上的IE 9
- 有登录表单时无法提交表单
- 如何在提交按钮上定义登录表单的路径
- asp.net mvc中的javascript验证不适用于登录表单
- 将会话登录页存储在cookie中以进行表单解析(通过隐藏字段)
- javascript登录表单提交
- 如何制作登录表单以登录我的网络邮件
- 将随机数添加到登录表单的URL的目的是什么
- 流星 - 添加带有熨斗的路由后无法提交用户.路由器到登录和注册表单
- 单击按钮时切换html登录/注册表单
- 使用Ajax检查登录表单
- HTML文件到自动登录表单
- Android提交使用jquery的https登录表单
- 用用户上次登录时选择的内容填充html表单
- 使用AJAX提交登录表单并获得响应
- 使用自制的html表单注册/登录网站
- 当用户通过 iframe 表单登录时,如何将登录按钮更改为注销
- 在密码字段具有焦点后启用表单登录按钮
- 表单登录不与锚#工作
- BASH CURL脚本/自动Web表单登录