使用java的HttpURLConnection模拟登陆百度
使用java的HttpURLConnection模拟登陆百度
public static void loginBaidu()
{
URL url = null;
HttpURLConnection httpurlconnection = null;
try {
url = new URL(http://www.baidu.com/);
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestProperty("User-Agent", "Internet Explorer");
httpurlconnection.setRequestProperty("Host", www.baidu.com);
httpurlconnection.connect();
String cookie0 = httpurlconnection.getHeaderField("Set-Cookie");
httpurlconnection.disconnect();
//String cookie0 = "BAIDUID=8AF5EA24DBF1275CE15C02B5FF65A265:FG=1;
BDSTAT=61a1d3a7118ce8a7ce1b9d16fdfaaf51f3deb48f8e5494eef01f3a292cf5b899; BDUSE=deleted";
url = new URL(http://passport.baidu.com/?login);
String strPost = "username=xxxxxx&password=xxxxxx&mem_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",
"http://passport.baidu.com/?login&tpl=mn&u=http%3A//www.baidu.com/"); 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(http://www.baidu.com/);
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setRequestProperty("User-Agent", "Internet Explorer");
httpurlconnection.setRequestProperty("Host", www.baidu.com);
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();
}
}