话说,有个系统网站a的登录页面,仅仅知道该页面的地址。现在要在自己的系统网页b上写一个连接,这个连接可以打开上面网站A并且完成登录。
然后这个网页B上的链接,指向一个java
然后就写这么个java程序,如何完成这个操作呢?我写了点
index上就一个连接,连接指向servlet/check.java,check就把账户名密码传到login.jsplogin.jsp
<script>
function login()
{
form.submit();
}
</script>
<body onload=login()>
<form method=post name=form action="http://passport.renren.com/PLogin.do">
<input type=hidden value="${requestScope.email}" name = "email">
<input type=hidden value="${requestScope.password}" name = "password">
</form>check.java
这个里面先直接写死个用户名跟密码,传递到login.jsp做实验
但是,如果不要写login.jsp这个页面的话?这个功能要怎么实现?
然后这个网页B上的链接,指向一个java
然后就写这么个java程序,如何完成这个操作呢?我写了点
index上就一个连接,连接指向servlet/check.java,check就把账户名密码传到login.jsplogin.jsp
<script>
function login()
{
form.submit();
}
</script>
<body onload=login()>
<form method=post name=form action="http://passport.renren.com/PLogin.do">
<input type=hidden value="${requestScope.email}" name = "email">
<input type=hidden value="${requestScope.password}" name = "password">
</form>check.java
这个里面先直接写死个用户名跟密码,传递到login.jsp做实验
但是,如果不要写login.jsp这个页面的话?这个功能要怎么实现?
解决方案 »
- 请教高手一个sql难题!!!!!!!!
- 测试的时候在IE下路径错误,但在firefox下正确
- Spring中加入了@Transational报空指针异常,不加程序运行正常
- 急急!!麻烦高手帮我把<s:select/>标签改成普通<select/>
- 《jsp2.0技术手册》学习中遇到的javabean中的scope问题
- tomcat5配置连接池后能正常使用,但为什么在toad中看不到连接
- 检测客户端
- 好奇怪的问题,把我的分全给你了。来研究一下
- 郁闷!!!!
- 谁有介绍如何在JB7下调试(或断点调试)JSP文件的电子文档或资料,请给我发一份,不胜感激!
- fck在线编辑器如何编辑word格式内容
- Could not resolve placeholder
反正如何在网站B上点一个连接,就能打开并登陆网站A
还有其他什么样的思路,求教~~~~~~~~~
上google,baidu,感觉有点像单点登录,但也没那么复杂
因为在check.java里可以写入用户名跟密码,这里如何获得用户名密码暂不考虑
直接写死个,试验无任何保护装备万米高空裸身自由裸体不忘叩首,拜求!
点击链接并传递参数->登陆页用js获得参数->判断如果参数存在则调用action方法并传递用户名密码
不要用户名登录, 呵呵
那只能在地址栏里面传递参数了啊
这个真不懂
如果用cookies能不能通过防盗链呢,能不能伪造cookies呢?
cookies不大懂,具体怎么样的呢?
难道是获得多个用户名 密码 然后循环登陆?
知道对方登陆Action AND method否?
知道对方传参个数及登陆标志否?
知道对方传递参数内容否?
* 确定机构 进业务时选择机构
*/
public ActionForward confirmOrg(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
try {
List orgList = getPermittedOrg(getUser(request).getUserId(),
TRADENO);
if (orgList == null && orgList.size() < 0) {
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.org.noPrivilege"));
saveMessages(request, messages);
return mapping.findForward("error");
}
request.setAttribute("orgs", orgList);
} catch (Exception e) {
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.str", e.getMessage()));
saveMessages(request, messages);
log.error(e);
return mapping.findForward("error");
}
return mapping.findForward("confirmOrg");
}
象这个你怎么进??
先要从数据库获得用户所属机构、ID、权限。放到orgList 在返回页面更何况 连orgList参数构成都不知道是哪些
什么都不知道怎么进去嘛?
没有做循环这个
要登录的网站是别人做的,还没见过,
意思是,只给你一个登陆页面的地址的情况下,如何完成自动登录。(上网搜过,感觉有点像单点登录,但是情况又不一样,因为要登录的网站不会给你做任何的修改)
另外如果有了这个登录地址后,要用httpwatch的话看哪些部分,获得您说的那些东西?
另外9楼的问题,还恳请各位大大赐教
不过对于httpcliet还不熟,如果对方网站防盗链,直接拒绝外部的请求的话,这个好像也不行。
另外要是写个自动填表的控件,这个对我而言好难,要考虑不同分辨率,捕捉输入框的位置。
url早做过了
劳驾再看看我的回复,有什么样的具体方法没?
账号abc 密码123
登陆框user属性username pwd属性password
你自己的页面上提供一个url http://www.test.com/login.jsp?username=abc&&password=123,点击就提交这个地址了,就能登录目标网站登陆后的页面了,不知道你要的是不是这个效果。
如果用httpclient的POST返回的信息,直接打开Header获取的头信息,做url登录呢?
有什么问题么?
只有cookie吧?
在你的网站上,把username和password放到浏览器的cookies上;//怎么放?请高手回答清楚!!
链接这样写:某网站?usename=xx&password=xx;
这个xx这样,用javascript获得cookies,从而获得username和password.//这行是我猜的,我也不会javascript。还是请高手答!!!
等高手回答,帮你顶。\(^o^)/~
需求大家都看懂了吧,就是免去输入用户名密码,自动完成登录
一、我开贴中的思路,就是仿造表单提交验证,这个可以实现,但是据说这种方法有问题,所以我想求教其他方法。
该方法的原理,代码如下
<html>
<head>
<script language="javascript">
function onload(){
document.forms[0].userName.value="test";
document.forms[0].password.value="123456";
document.forms[0].submit();
}
</script>
</head>
<body onload="javascript:onload()">
<form action="xxxxxx">
<input type="text" name="userName" value="">
<input type="text" name="password" value="">
</body>
</html>
二、后来,我就想用httpclient,不过,我利用httpclient,也只能在后台登录到网站,获取一些数据之类的。(获取cookie这块代码还没大搞懂,因为想打印出来都没东西)
然后关键问题,我不仅要自动登录这个网站,还要在客户端的浏览器中打开网站页面(必须是登录过的)
还要在客户端的浏览器中打开网站页面(必须是登录过的)
补充下,写个web程序,应该说是 浏览器端 吧?
首先 自己在目标网站随便注册一个账户 让其将Cookies保存到本地
然后用request对象getCookies 获值
模拟拼接出连接
<html>
<head>
<script language="javascript">
function onload(){
document.forms[0].userName.value="test";
document.forms[0].password.value="123456";
window.open("这里直接拼接网站地址+用户名+密码+其他参数");
}
</script>
</head>
<body onload="javascript:onload()">
<form action="xxxxxx">
<input type="text" name="userName" value="">
<input type="text" name="password" value="">
</body>
</html>
这个都模拟表单提交了action了,怎么还去打开拼装的url
window.open("这里直接拼接网站地址+用户名+密码+其他参数");
这个跟action提交表单不就是一样的么?
randomNum可以随便生成一个几位的随机码
code可以自己写一个方法(自己定义,保证A-B网站都有这个方法)
通过传递userId,randomNum两个参数按一定规则生成code然后链接跳到的是A网站的一个接受自动登录处理的Action,
拿到userId和randomNum,同样调用上边说的自定义方法,验证code是否一致。
如果一致,在A网站中再根据userId,查到用户信息,把信息放到A网站的session中
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600); // Session保存两小时
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(2 * 3600); // 客户端的JSESSIONID也保存两小时
session.setMaxInactiveInterval(interval)
cookie.setPath("/");
response.addCookie(cookie);
如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。
二、全程httpclient,既然楼主已经实现了后台登录和获取数据,直接将获取到的数据返回给前台不就可以了吗?相当于代理关于获取cookie,我只写过httpurlconnection,httpclient应该也差不多.String url = request.getParameter("url");
java.io.InputStream l_urlStream;
java.net.URL l_url = new java.net.URL(url);
java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
l_connection.connect();
/*l_urlStream = l_connection.getInputStream();
java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(l_urlStream));
String sCurrentLine=null;
while ((sCurrentLine = l_reader.readLine()) != null)
{
System.out.println(sCurrentLine);
}*/注释掉的是返回的页面信息
for (int i=0; ; i++) {
String headerName = l_connection.getHeaderFieldKey(i);
String headerValue = l_connection.getHeaderField(i);
if("Set-Cookie".equals(headerName)) {
//这里就是了cookie
System.out.println(headValue);
break;
}
if (headerName == null && headerValue == null) { break; }
}