日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现自动登录,并获取数据

發布時間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现自动登录,并获取数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為抓取 web的一些隱私數據,需要先登錄,然后才能獲取這些數據,用程序來實現,就需要實現自動登錄,然后將登錄信息保存在Cookie中,以便取得數據時,無須再次登錄。以網易郵箱為例:
所需jar包:commons-codec-1.3.jar? , ? common-httpclient-3.0.1.jar? ,common-logging-1.1.1.jar ,jaxen-1.1-beta-6.jar(不知道是不是必須)
源碼:
import java.io.IOException;
import java.util.Date;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;


public class AutoLogin {

??? private static String USERNAME = "***";
??? private static String LOGINURL = "http://reg.163.com/login.jsp";
???
??? private String CookieStr;
??? private Date EndTime;
???
??? public void autoLogin(){
??? ??? HttpClient httpClient = new HttpClient();
??? ??? PostMethod post = new PostMethod(LOGINURL);
??? ??? // 注意這里的地址!
??? ??? post.setRequestHeader("Accept-Language", "en-us,en;q=0.5");
??? ??? post.setRequestHeader("Accept-Encoding","gzip, deflate");
??? ??? post.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)");
??? ??? post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
??? ???
??? ??? NameValuePair user = new NameValuePair("user","***");
??? ??? NameValuePair pwd = new NameValuePair("password","***");
??? ??? NameValuePair username = new NameValuePair("username",USERNAME + "@163.com");
??? ???
??? ??? post.setRequestBody(new NameValuePair[]{username,user,pwd});
??? ??? httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
??? ???
??? ??? int status;
??? ??? try {
??? ??? ??? status = httpClient.executeMethod(post);
??? ??? ??? System.out.println("loginUrl:"+status);
??? ??? ??? Cookie[] cookies = httpClient.getState().getCookies();
??? ??? ??? //獲取cookie
??? ??? ??? if (cookies.length == 0){
??? ??? ??? ??? System.out.println("Cookie:None");
??? ??? ??? } else {
??? ??? ??? ??? if (cookies.length >=2)
??? ??? ??? ??? {
??? ??? ??? ??? ??? EndTime = cookies[1].getExpiryDate();
??? ??? ??? ??? ??? for(Cookie c:cookies){
??? ??? ??? ??? ??? ??? CookieStr +=c.toString()+";";
??? ??? ??? ??? ??? }
??? ??? ??? ??? }
??? ??? ??? }
??? ??? ??? System.out.println(EndTime);
??? ??? ??? System.out.println(CookieStr);
??? ??? ??? System.out.println(post.getResponseBodyAsString());
??? ??? } catch (HttpException e) {
??? ??? ??? // TODO Auto-generated catch block
??? ??? ??? e.printStackTrace();
??? ??? } catch (IOException e) {
??? ??? ??? // TODO Auto-generated catch block
??? ??? ??? e.printStackTrace();
??? ??? }finally{
??? ??? ??? post.releaseConnection();
??? ??? }
??? }
???
??? public String getContent(){
??? ??? Date date = new Date();
??? ??? String content = null;
??? ???
??? ??? //CookieStr的值為空或者cookie已經失效
??? ??? if (CookieStr == "" || EndTime == null || date.getTime() > EndTime.getTime())
??? ??? {
??? ??? ??? autoLogin();
??? ??? }
??? ??? HttpClient client = new HttpClient();
??? ??? client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
??? ??? //get data url
??? ??? String url = "*******";

??? ??? GetMethod get = new GetMethod(url);
??????? get.setRequestHeader("Accept-Language", "en-us,en;q=0.5");
??????? get.setRequestHeader("Accept-Encoding","gzip, deflate");
??????? get.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
??????? get.setRequestHeader("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
??????? get.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)");
?????
??????? //設置Cookie,必須
??????? get.setRequestHeader("Cookie", CookieStr);
??? ??? try {
??? ??? ??? int status = client.executeMethod(get);
??? ??? ??? //獲取你想要的頁面內容
??? ??? ??? content = get.getResponseBodyAsString();
??? ??? ??? System.out.println("getUrl:"+status);
??? ??? ??? System.out.println(content);
??? ??? } catch (HttpException e) {
??? ??? ??? e.printStackTrace();
??? ??? } catch (IOException e) {
??? ??? ??? e.printStackTrace();
??? ??? }finally
??? ??? {
??? ??? ??? get.releaseC

轉載于:https://www.cnblogs.com/ylqmf/archive/2011/08/25/2153855.html

總結

以上是生活随笔為你收集整理的java实现自动登录,并获取数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。