HttpClient 4 X 保持登入

2021-06-25 23:20:19 字數 1437 閱讀 4071

session的保持是通過cookie來維持的,所以如果使用者有勾選x天內免登入,這個session 就x天內一直有效,就是通過這個cookie來維護。如果沒選x天內免登入,基本上就本次才能保持session,下次開啟瀏覽器就要重新登入了。 

所以在web安全裡,黑客通過xss,最終目的就是獲取cookie,從免登入直接進入系統。 

這次要講的是,得到使用者cookie後,免登入,用httpclient 保持原來session訪問原本一定要登入才能做的事。 

httpclient 4.x 庫可以自己處理cookie 

有兩咱廣度可以新增cookie, 

1.通過  httpclient.setcookiestore(cookiestore) 

2.通過  httpget 或者 httppost 的addheader(new basicheader("cookie",cookie)); 

第一種, 

httpclient是否在下次請求中攜帶從伺服器端請求來的cookie,完全是由設定決定的。 

httpclient.getparams.setparameter(clientpnames.cookie_policy, cookiepolicy.best_match) 或者 cookiepolicy.browser_compatibility 

如果設定為cookie策略為best_match,或browser_compatibility的話,httpclient會在請求中攜帶由伺服器返回的cookie。如果不設定,應該需要手動新增了cookiestore,才會保持sesson. 

如果設定為cookie策略為預設的話,沒設定,則需要手動通過 

httpclient.setcookiestore(cookiestore); 去設定. 

注:如果用的是同乙個httpclient(上下兩個請求用同乙個httpclient物件。 

且沒去手動連線放掉client.getconnectionmanager().shutdown(); )! 

都不用去設定cookie的clientpnames.cookie_policy。httpclient都是會保留cookie的! 

第二種, 

通過header去設定cookie,這種方法,就是今天要用的應用場景, 

我們得到乙個登入的cookie,免登入訪問。 

可以用瀏覽器登入,然後f12通過console 執行 document.cookie 得到cookie, 

用這個cookie ,在訪問時,設定  httpget 或者 httppost 的addheader(new basicheader("cookie",cookie));就可以免登入訪問。 

這種場景我用來用第一種方法,設定沒成功,可能是因為用第一種時,沒設定path,domain,expire 的原因,我豬的。 

這種場景可以解決第一次登入也需要驗證碼的**。沒有登入就沒辦法發布或重新整理資訊。 

如趕集網。 

HttpClient4 X和3 X傳送資料

首先需要說明,httpclient4.x支援jdk1.5及以上,httpclient3.x支援1.5以下的。4.x和3.x的區別在於4.x的httpclient是乙個介面,3.x的httpclient是乙個類,4.x更多的是基於介面的實現方式。4.x需要jar httpclient 4.5.3.ja...

HttpClient4 x的一些使用

首先httpclient client new httpclient 這個寫法只在3.x的版本中可以使用,4.x以後都是defaulthttpclient 網上找 注意版本問題。apache真是偉大,為我們提供了httpclient.jar,這個httpclient是客戶端的http通訊實現庫,這個...

HttpClient 4 訪問遠端服務

1.帶ssl證書 獲取sslsocketfactory物件 sslsocketfactory ssf sslcontext.getsocketfactory 建立httpsurlconnection物件,並設定其sslsocketfactory物件 設定連線引數 conn.setdoinput tr...