模拟登录java代码 java模拟登录获取cookie

Java如何实现网页程序自动登录

;   我不得不使用好几个系统 都是B/S结构的 每次登录都需要输入用户名和密码 觉得非常麻烦 考虑到其他同事也会有这样的需求 不妨就写个自动登录的程序吧 之前 也考虑过使用单点登录 几经尝试之后还是放弃了         我习惯使用Java 本能地开始寻找Java的解决方法 在Google中输入 Java自动登录 Java网页模拟登录 JavaPost登录 结果倒是不少 内容也差不多 我尝试很多次终究也没有达到我预期的目标 后来 我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行 但这些代码确实管用         我们先分析一下代码         Stringsurl= ;        URLurl=newURL(surl)         URLConnectionconn=url openConnection()         conn setDoOutput(true)         OutputStreamWriterout=newOutputStreamWriter(conn getOutputStream())         Stringstr= username=yournamepassword= ;        out write(str)         out flush()         out close()         到这里 如果在C/S结构中 且参数正确 程序能够成功登录到这个oa系统 要看到结果 你可以通过下面的代码将系统服务器返回的结果System out println()出来         Stringsling= ;        Stringscontent= ;        BufferedReaderin=newBufferedReader(newInputStreamReader(conn getInputStream() UTF ))         while((sling=in readLine())!=null)        scontent+=in+ \r\n ;        System out println(scontent)         在C/S结构下 可以到得到控制台输出了返回值 从返回内容里可以看出程序已经成功登录 但要是把这个网址浏览器打开 还是得重新登录 问题没有得到根本解决 如果只是恶意注册 到这里应该就达到目的了         看样子C/S结构下不容易实现网页程序自动登录 除非你在C/S程序中内嵌一个浏览器 直接在这个浏览器中自动访问系统 应该没有别的方法 主要问题在于我们没有办法共享Session         为了便于共享Session 我们只能在浏览器中实现网页自动登录 通过上面的代码在jsp页面中测试 达不到预期目标         网页自动登录 就是希望程序自动填充用户名和密码 然后以Post方式提交给登录页面的Form所指向的action页面或方法 我将系统的登录页面的源代码保存成一个网页 然后在username和password文本框中设置默认值 然后通过这网页登录系统 测试后 发现可行 接下来 你可能已经想到了解决方法         我们可以通过url openConnection()建立连接 将返回的scontent打印出来 然后接着打印以下代码         out println( \r\n )         out println( document getElementsByName(\ username\ )[ ] value=yourname;\r\n )         out println( document getElementsByName(\ password\ )[ ] value= ;\r\n )         out println( document forms[ ] submit() \r\n )         out println( \r\n )         原理很简单 通过login jsp将登录页面的全部源代码写在当前页面 然后使用javascript脚本将用户名和密码的值填充上 最后提交表单 这样中 终于实现了自动登录的目标 现在我通过一个特殊的网址 就可以自动访问这个oa了         你可能注意到参数url 他的值是经过加密的 内容是用户名和密码 当然 你也可以加上有效期 即在有效期内这个链接才是有效的 才可以实现自动登录 lishixinzhi/Article/program/Java/hx/201311/26114

做网站、网站设计介绍好的网站是理念、设计和技术的结合。成都创新互联公司拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。

模拟一个简单的用户登陆程序,判断登录的用户名和密码是否正确,输出登录判断结果,用java怎么写?

package test;\x0d\x0aimport java.util.Scanner;\x0d\x0apublic class TestLogin {\x0d\x0aprivate static final String USERNAME = "Tom";//此处定义用户名\x0d\x0aprivate static final String PASSWORD = "123";//定义密码\x0d\x0apublic static void main(String[] args) {\x0d\x0aScanner sc = new Scanner(System.in);\x0d\x0aSystem.out.print("请输入您的用户名:");\x0d\x0aString username_in = sc.next();\x0d\x0aSystem.out.print("请输入您的密码:");\x0d\x0aString password_in = sc.next();\x0d\x0aif(username_in.equals(USERNAME) password_in.equals(PASSWORD)){\x0d\x0aSystem.out.println("登录成功");\x0d\x0a}else{\x0d\x0aSystem.out.println("用户名或密码错误");\x0d\x0a}\x0d\x0a}\x0d\x0a} \x0d\x0a这是从控制台输入的最简单的方法。

如何用java模拟网页登入提交

我不得不使用好几个系统,都是B/S结构的,每次登录都需要输入用户名和密码,觉得非常麻烦,考虑到其他同事也会有这样的需求,不妨就写个自动登录的程序吧。之前,也考虑过使用单点登录,几经尝试之后还是放弃了。

我习惯使用Java,本能地开始寻找Java的解决方法,在Google中输入“Java自动登录”、“Java网页模拟登录”、“Java Post 登录”,结果倒是不少,内容也差不多,我尝试很多次终究也没有达到我预期的目标。后来,我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行。但这些代码确实管用。

我们先分析一下代码,

%@ page import="java.util.*" %

%@ page import="java.io.*" %

%@ page import="java点虐 .*" %

String surl = "";

URL url = new URL(surl);

URLConnection conn = url.openConnection();

conn.setDoOutput(true);

OutputStreamWriter out=new OutputStreamWriter(conn.getOutputStream());

String str = "username=yournamepassword=123456";

out.write(str);

out.flush();

out.close();

到这里,如果在C/S结构中,且参数正确,程序能够成功登录到这个oa系统,要看到结果,你可以通过下面的代码将系统服务器返回的结果System.out.println()出来。

String sling = "";

String scontent = "";

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

while ((sling = in.readLine()) != null)

scontent += in + "\r\n";

System.out.println(scontent);

在C/S结构下,可以到得到控制台输出了返回值,从返回内容里可以看出程序已经成功登录,但要是把这个网址浏览器打开,还是得重新登录,问题没有得到根本解决。如果只是恶意注册,到这里应该就达到目的了。

看样子C/S结构下不容易实现网页程序自动登录,除非你在C/S程序中内嵌一个浏览器,直接在这个浏览器中自动访问系统,应该没有别的方法,主要问题在于我们没有办法共享Session。

为了便于共享Session,我们只能在浏览器中实现网页自动登录,通过上面的代码在jsp页面中测试,达不到预期目标。

网页自动登录,就是希望程序自动填充用户名和密码,然后以Post方式提交给登录页面的Form所指向的action页面或方法。我将系统的登录页面的源代码保存成一个网页,然后在username和password文本框中设置默认值,然后通过这网页登录系统,测试后,发现可行。接下来,你可能已经想到了解决方法。

我们可以通过url.openConnection()建立连接,将返回的scontent打印出来,然后接着打印以下代码:

out.println("script type="text/javascript"\r\n");

out.println("document.getElementsByName("username")[0].value=yourname;\r\n");

out.println("document.getElementsByName("password")[0].value=123456;\r\n");

out.println("document.forms[0].submit();\r\n");

out.println("/script\r\n");

原理很简单,通过login.jsp将登录页面的全部源代码写在当前页面,然后使用javascript脚本将用户名和密码的值填充上,最后提交表单。这样中,终于实现了自动登录的目标。现在我通过一个特殊的网址,例如,就可以自动访问这个oa了。

你可能注意到参数url,他的值是经过加密的,内容是用户名和密码。当然,你也可以加上有效期,即在有效期内这个链接才是有效的,才可以实现自动登录。

如何用Java实现模拟登录Discuz!论坛并下载返回的html代码?

package org.shaw;

import org.apache点抗 mons.httpclient.Cookie;

import org.apache点抗 mons.httpclient.HttpClient;

import org.apache点抗 mons.httpclient.NameValuePair;

import org.apache点抗 mons.httpclient.methods.GetMethod;

import org.apache点抗 mons.httpclient.methods.PostMethod;

public class BaiyouBBS {

static final String LOGON_SITE = "";

static final int LOGON_PORT = 80;

public Cookie[] login(String name, String pas) {

try {

HttpClient client = new HttpClient();

client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);

PostMethod post = new PostMethod("/logging.php?action=login");

client.executeMethod(post);

String responseString = new String(post.getResponseBody(), "gbk");

post.releaseConnection();

String formhash = getFormHash(responseString);

System.out.println(formhash);

post = new PostMethod("/logging.php?action=login");

NameValuePair[] params = new NameValuePair[11];

params[0] = new NameValuePair("loginfield", "username");

params[1] = new NameValuePair("username", name);

params[2] = new NameValuePair("password", pas);

params[3] = new NameValuePair("referer", "index.php");

params[4] = new NameValuePair("questionid", "0");

params[5] = new NameValuePair("answer", "");

params[6] = new NameValuePair("cookietime", "2592000");

params[7] = new NameValuePair("formhash", formhash);

params[8] = new NameValuePair("loginmode", "");

params[9] = new NameValuePair("loginsubmit", "true");

params[10] = new NameValuePair("styleid", "");

post.setRequestBody(params);

client.executeMethod(post);

// responseString = new String(post.getResponseBody(), "gbk");

post.releaseConnection();

GetMethod get = new GetMethod("/index.php");

client.executeMethod(get);

responseString = new String(get.getResponseBody(), "gbk");

get.releaseConnection();

System.out.println(responseString);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public String getFormHash(String htmlContent) {

try {

int start = htmlContent.indexOf("name=\"formhash\"");

start = htmlContent.indexOf("value=\"", start) + 7;

int end = htmlContent.indexOf("\"", start);

String formhash = htmlContent.substring(start, end);

return formhash;

} catch (RuntimeException e) {

throw e;

}

}

public static void main(String[] args) {

new BaiyouBBS().login("zzzxxxzzz", "zzzxxxzzz");

}

}


本文题目:模拟登录java代码 java模拟登录获取cookie
文章源于:http://myzitong.com/article/ddeeoss.html