「java假登录」JAVA登录系统
本篇文章给大家谈谈java假登录,以及JAVA登录系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java实现登陆网站--不需打开浏览器
- 2、java 模拟post登录
- 3、java怎样实现登录验证
- 4、请教java尝试模拟登录12306时遇到的一个问题
- 5、如何用Java实现用户登录安全问题
如何用java实现登陆网站--不需打开浏览器
public static void loginBaidu() {
URL url = null;
HttpURLConnection httpurlconnection = null;
try {
url = new URL("");
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestProperty("User-Agent",
"Internet Explorer");
httpurlconnection.setRequestProperty("Host", "");
httpurlconnection.connect();
String cookie0 = httpurlconnection.getHeaderField("Set-Cookie");
System.out.println(cookie0);//打印出cookie
httpurlconnection.disconnect();
// String cookie0 =
// "BAIDUID=8AF5EA24DBF1275CE15C02B5FF65A265:FG=1;BDSTAT=61a1d3a7118ce8a7ce1b9d16fdfaaf51f3deb48f8e5494eef01f3a292cf5b899;
// BDUSE=deleted";
url = new URL("");
String strPost = "username=xxxxxxpassword=yyyyyyymem_pass=on";
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setFollowRedirects(true);
httpurlconnection.setInstanceFollowRedirects(true);
httpurlconnection.setDoOutput(true); // 需要向服务器写数据
httpurlconnection.setDoInput(true); //
httpurlconnection.setUseCaches(false); // 获得服务器最新的信息
httpurlconnection.setAllowUserInteraction(false);
httpurlconnection.setRequestMethod("POST");
httpurlconnection
.addRequestProperty(
"Accept",
"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-silverlight, */*");
httpurlconnection
.setRequestProperty("Referer",
";tpl=mnu=http%3A//");
httpurlconnection.setRequestProperty("Accept-Language", "zh-cn");
httpurlconnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
httpurlconnection.setRequestProperty("Accept-Encoding",
"gzip, deflate");
httpurlconnection
.setRequestProperty(
"User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Foxy/1; .NET CLR 2.0.50727;MEGAUPLOAD 1.0)");
httpurlconnection.setRequestProperty("Host", "passport.baidu.com");
httpurlconnection.setRequestProperty("Content-Length", strPost
.length()
+ "");
httpurlconnection.setRequestProperty("Connection", "Keep-Alive");
httpurlconnection.setRequestProperty("Cache-Control", "no-cache");
httpurlconnection.setRequestProperty("Cookie", cookie0);
httpurlconnection.getOutputStream().write(strPost.getBytes());
httpurlconnection.getOutputStream().flush();
httpurlconnection.getOutputStream().close();
httpurlconnection.connect();
int code = httpurlconnection.getResponseCode();
System.out.println("code " + code);
String cookie1 = httpurlconnection.getHeaderField("Set-Cookie");
System.out.print(cookie0 + "; " + cookie1);
httpurlconnection.disconnect();
url = new URL("");
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestProperty("User-Agent",
"Internet Explorer");
httpurlconnection.setRequestProperty("Host", "");
httpurlconnection.setRequestProperty("Cookie", cookie0 + "; "
+ cookie1);
httpurlconnection.connect();
InputStream urlStream = httpurlconnection.getInputStream();
BufferedInputStream buff = new BufferedInputStream(urlStream);
Reader r = new InputStreamReader(buff, "gbk");
BufferedReader br = new BufferedReader(r);
StringBuffer strHtml = new StringBuffer("");
String strLine = null;
while ((strLine = br.readLine()) != null) {
strHtml.append(strLine + "\r\n");
}
System.out.print(strHtml.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (httpurlconnection != null)
httpurlconnection.disconnect();
}
}
呵呵,改了下程序中错误的地方。学习了,原来这样也可以。
以前只知道可以这样做,还从来没有花过心思去做过。
阅读了些代码,真是获益匪浅啊。
程序可以运行了,用户名和密码改为你的帐户就可以直接运行了。可以使用,但不能一直使用啊,如果用多了百度给你个验证码,就是神仙也不行了。
java 模拟post登录
这个要分两步,先用GET方法取得页面源码,分析出mpc的值,然后用POST方法发送数据就能登录了。当然一切工作之前要设置好CookieHandler
post页面:
;pageref=
post参数就4个而已,
name=yourNamepwd=yourPasswordB12=Loginmpc=分析得到的mpc
看如下例子:
将这个例子中的如下语句改一下就能收到数据的
connection.getInputStream().close();
//
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SongTaste {
private static String baseURL="";
private static String loginURL=baseURL+"/signin.php";
private static String actionURL=baseURL+"/info_oper.php?tag=signinpageref=";
private static String musicURL=baseURL+"/music/";
private static CookieManager cm;
static{
cm=new CookieManager();
cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cm);
}
public static void main(String[] args) throws Exception{
// HttpURLConnection.setFollowRedirects(true);
login("abcmusic","000000");
listContents();
}
private static void listContents() throws Exception {
byte[] dat=new HttpGet(musicURL).data;
String src=new String(dat,"gbk");
Matcher m=Pattern.compile("MSL\\(.*?\\)").matcher(src);
while(m.find())
System.out.println(m.group());
}
private static void login(String name,String pwd){
byte[] dat=new HttpGet(loginURL).data;
String src=new String(dat);
Matcher m=Pattern.compile("name=mpc.*?").matcher(src);
String mpc="";
if(m.find()){
mpc=m.group();
// System.out.println(mpc);
mpc=mpc.substring(15,mpc.length()-1);
// System.out.println(mpc);
}
//do login
new HttpPost(actionURL,String.format("name=%spwd=%sB12=Loginmpc=%s",name,pwd,mpc));
}
private static class HttpGet extends Thread{
private static final int bufferSize=1024;
private String ustr;
private byte[] data;
private HttpGet(String u,String...ref){
ustr=u;
start();
try {join();} catch (Exception e) {}
}
public void run(){
try{
URL u = new URL(ustr);
HttpURLConnection uc=(HttpURLConnection)u.openConnection();
byte[] b={};
byte[] t=new byte[bufferSize];
int r;
BufferedInputStream bin=new BufferedInputStream(uc.getInputStream());
while((r=bin.read(t))-1){
b=putData(b,t,r);
}
bin.close();
uc.disconnect();
data=b;
}catch(Exception e){}
}
private final byte[] putData(byte[] b, byte[] t, int r) {
byte[] tb=new byte[b.length+r];
System.arraycopy(b, 0, tb, 0, b.length);
System.arraycopy(t, 0, tb, b.length, r);
return tb;
}
}
private static class HttpPost extends Thread{
private static int blen=1024;
private static String contentType="application/x-www-form-urlencoded";
private String url,pms;
private byte[] dat={};
private HttpPost(String u,String p){
url=u;
pms=p;
start();
try{join();}catch(Exception e){}
}
public void run(){
try{
URL u = new URL(url);
HttpURLConnection connection=(HttpURLConnection)u.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",contentType);
connection.setRequestProperty("Content-Length",String.valueOf(pms.length()));
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
DataOutputStream dout=new DataOutputStream(connection.getOutputStream());
dout.write(pms.getBytes());
dout.flush();
dout.close();
InputStream in=connection.getInputStream();
BufferedInputStream bin=new BufferedInputStream(in);
byte[] buff=new byte[blen],bs={};
int r;
while((r=bin.read(buff))-1){
bs=putData(bs,buff,r);
}
bin.close();
connection.disconnect();
dat=bs;
}catch(Exception e){}
}
private final byte[] putData(byte[] b, byte[] t, int r) {
byte[] tb=new byte[b.length+r];
System.arraycopy(b, 0, tb, 0, b.length);
System.arraycopy(t, 0, tb, b.length, r);
return tb;
}
}
}
java怎样实现登录验证
1.打开编程工具:
打开java编程的界面,采用的是eclipse软件;
2
2.建立一个java工程:
简洁操作如下:单击“file”-“new”-“java project”;
然后,在工程菜单中选中工程,单击鼠标右键出出来菜单,依次选中“new”-“class”;
具体查看“ eclipse如何建立一个java工程”;
0eclipse如何建立一个java工程
END
2.代码实现步骤
1.建立输入扫描:
采用java中的Scanner类实现输入数据的获取,具体代码如下;
Scanner scan = new Scanner(System.in);
2.接收用户名:
建立一个提示信息,提示输入用户名,并储存输入的用户名,代码如下:
System.out.println("请输入登陆用户名:");
String usename=scan.nextLine();
3.接收密码:
建立一个提示信息,提示输入密码,并存储输入的密码,代码如下:
System.out.println("请输入登陆的密码:");
String password=scan.nextLine();
4.验证信息:
采用if else语句来实现对用户名和密码的验证,并打印提示信息,代码如下:
if(!usename.equals("me")){
System.out.println("用户名非法。");
}else if(!password.equals("123456")){
System.out.println("登陆密码错误。");
}else{
System.out.println("恭喜您,登陆信息通过验证。");
}
请教java尝试模拟登录12306时遇到的一个问题
首先12306网站前缀为“https://” 表明是用SSL加密。
用HttpClient去模拟发送请求时,对于URL用为“https”时,先要解决证书问题,有两种解决方案:
在查找相关资料时,对于这种方法有点麻烦,最后就没有去尝试,有兴趣的朋友可以试试
扩展HttpClient 类实现自动接受证书,因为这种方法自动接收所有证书,因此存在一定的安全问题,所以在使用这种方法前请仔细考虑您的系统的安全需求。
具体的步骤如下:
•提供一个自定义的socket factory (test.MySecureProtocolSocketFactory )。这个自定义的类必须实现接口
org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory ,在实现接口的类中调用自定义的
X509TrustManager(test.MyX509TrustManager)
•创建一个org.apache.commons.httpclient.protocol.Protocol 的实例,指定协议名称和默认的端口号
Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);
•注册刚才创建的https 协议对象
Protocol.registerProtocol("https ", myhttps);
具体代码如下:
1 package org.study.meteor.ticket.util;
2
3 import java.io.IOException;
4 import java.net.InetAddress;
5 import java.net.InetSocketAddress;
6 import java.net.Socket;
7 import java.net.SocketAddress;
8 import java.net.UnknownHostException;
9 import java.security.KeyManagementException;
10 import java.security.NoSuchAlgorithmException;
11 import java.security.cert.CertificateException;
12 import java.security.cert.X509Certificate;
13
14 import javax.net.SocketFactory;
15 import javax.net.ssl.SSLContext;
16 import javax.net.ssl.TrustManager;
17 import javax.net.ssl.X509TrustManager;
18
19 import org.apache.commons.httpclient.ConnectTimeoutException;
20 import org.apache.commons.httpclient.params.HttpConnectionParams;
21 import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
22
23 /**
24 * MySecureProtocolSocketFactory.java.java Create on 2012-9-26下午1:15:03
25 *
26 *
27 * Copyright (c) 2012 by MTA.
28 *
29 * @author lmeteor
30 * @Email txin0814@sina.com
31 * @description 自定义的socket factory 实现自动接受证书
32 * @version 1.0
33 */
34 public class MySecureProtocolSocketFactory implements
35 SecureProtocolSocketFactory
36 {
37
38 private SSLContext sslcontext = null;
39
40 private SSLContext createSSLContext()
41 {
42 SSLContext sslcontext = null;
43 try
44 {
45 sslcontext = SSLContext.getInstance("SSL");
46 sslcontext.init(null, new TrustManager[]
47 { new TrustAnyTrustManager() }, new java.security.SecureRandom());
48 }
49 catch (NoSuchAlgorithmException e)
50 {
51 e.printStackTrace();
52 }
53 catch (KeyManagementException e)
54 {
55 e.printStackTrace();
56 }
57 return sslcontext;
58 }
59
60 private SSLContext getSSLContext()
61 {
62 if (this.sslcontext == null)
63 {
64 this.sslcontext = createSSLContext();
65 }
66 return this.sslcontext;
67 }
68
69 public Socket createSocket(Socket socket, String host, int port,
70 boolean autoClose) throws IOException, UnknownHostException
71 {
72 return getSSLContext().getSocketFactory().createSocket(socket, host,
73 port, autoClose);
74 }
75
76 public Socket createSocket(String host, int port) throws IOException,
77 UnknownHostException
78 {
79 return getSSLContext().getSocketFactory().createSocket(host, port);
80 }
81
82 public Socket createSocket(String host, int port, InetAddress clientHost,
83 int clientPort) throws IOException, UnknownHostException
84 {
85 return getSSLContext().getSocketFactory().createSocket(host, port,
86 clientHost, clientPort);
87 }
88
89 public Socket createSocket(String host, int port, InetAddress localAddress,
90 int localPort, HttpConnectionParams params) throws IOException,
91 UnknownHostException, ConnectTimeoutException
92 {
93 if (params == null)
94 {
95 throw new IllegalArgumentException("Parameters may not be null");
96 }
97 int timeout = params.getConnectionTimeout();
98 SocketFactory socketfactory = getSSLContext().getSocketFactory();
99 if (timeout == 0)
100 {
101 return socketfactory.createSocket(host, port, localAddress,
102 localPort);
103 }
104 else
105 {
106 Socket socket = socketfactory.createSocket();
107 SocketAddress localaddr = new InetSocketAddress(localAddress,
108 localPort);
109 SocketAddress remoteaddr = new InetSocketAddress(host, port);
110 socket.bind(localaddr);
111 socket.connect(remoteaddr, timeout);
112 return socket;
113 }
114 }
115
116 // 自定义私有类
117 private static class TrustAnyTrustManager implements X509TrustManager
118 {
119
120 public void checkClientTrusted(X509Certificate[] chain, String authType)
121 throws CertificateException
122 {
123 }
124
125 public void checkServerTrusted(X509Certificate[] chain, String authType)
126 throws CertificateException
127 {
128 }
129
130 public X509Certificate[] getAcceptedIssuers()
131 {
132 return new X509Certificate[]
133 {};
134 }
135 }
136 }
如何用Java实现用户登录安全问题
第一个问题,由于BS结构的特点是基于请求和应答的,换句话说,服务器处于被动位置,客户浏览器处于主动为止,如果你不主动发出请求,服务器是不会鸟你的,或者说,服务器根本就不知道你是谁!
要想实现你的需求,可以在JSP页面放置一个定时器,用JavaScript搞,通过Ajax异步请求服务器,做登录状态轮询,如果发现在别的地方登录了,强制下线。
这样的话,就需要一个状态保存的容器,这个自己去搞吧,实现方案很多的。
第2个问题就更简单了,登录失败时,修改计数器的值,例如设置为错误3次就锁定,那么没错误一次就减1,到0就不让登了呗,然后启动一个解锁定时器线程,在设定的时间后将这个值修改成3
这些参数都是可以人为设定的
关于java假登录和JAVA登录系统的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。