java模擬登錄,java模擬登錄 token

本文目錄一覽:

如何用java模擬網頁登入提交

我不得不使用好幾個系統,都是B/S結構的,每次登錄都需要輸入用戶名和密碼,覺得非常麻煩,考慮到其他同事也會有這樣的需求,不妨就寫個自動登錄的程序吧。之前,也考慮過使用單點登錄,幾經嘗試之後還是放棄了。

我習慣使用Java,本能地開始尋找Java的解決方法,在Google中輸入「Java自動登錄」、「Java網頁模擬登錄」、「Java Post 登錄」,結果倒是不少,內容也差不多,我嘗試很多次終究也沒有達到我預期的目標。後來,我都不知道這些代碼應該在jsp頁面中執行還是在c/s結構的程序中執行。但這些代碼確實管用。

我們先分析一下代碼,

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

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

%@ page import=”java.net.*” %

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怎麼模擬登錄亞馬遜中國網站

Connection.Response res = Jsoup.connect(「登陸地址」).data(“username”, “你的用戶名”, “password”, “你的密碼”).timeout(3000).method(Method.POST).execute();

Document doc = res.parse();

doc是拿到的網頁後台的代碼,再正則表達式匹配或者jsoup提取,分析得到cookie,即可模擬登陸

java作業:模擬用戶登錄驗證,如果輸入用戶名為admin,密碼為1,提示輸入正確,否則繼續提示輸入

package com.java.test;

import java.util.Scanner;

public class MainTest {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println(“請輸入用戶名:”);

String username = sc.nextLine();

System.out.println(“請輸入密碼:”);

String password = sc.nextLine();

boolean limit = true;

int count = 0;

while (limit) {

if (“admin”.equals(username)  “1”.equals(password)) {

System.out.println(“密碼正確!”);

limit = false;

} else if (3 == count) {

System.out.println(“密碼錯誤次數超過限制,程序退出”);

limit = false;

//return;

} else {

System.out.println(“密碼錯誤,請重新輸入:”);

password = sc.nextLine();

count ++;

}

}

}

}

java編寫一個程序模擬用戶登錄操作,用戶名和密碼從鍵盤輸入?

import java.util.Scanner;

public class LoginTest {

/**

* @param args

*/

public static void main(String[] args) {

String loginName = “admin”;

String passWord = “123456”;

Scanner sc = new Scanner(System.in);

boolean isSuccess = false;

int index = 0;

while(!isSuccess){

System.out.println(“請輸入用戶名:”);

String name = sc.nextLine(); //讀取字元串型輸入

System.out.println(“請輸入密碼:”);

String passW = sc.nextLine();

if(loginName.equals(name)passWord.equals(passW)){

System.out.println(“戶名密碼正確,退出程序”);

isSuccess = true;

}else{

if(++index=3){

System.out.println(“用戶名密碼錯誤,程序即將退出”);

return;

}else{

System.out.println(“用戶名密碼錯誤,請重新輸入”);

}

}

}

}

}

java模擬登錄問題(post請求帶特殊符號問題)

如果你是用java的api實現的模擬post請求,那麼你需要在你之前構造的http request的header里加上

Cookie:名字=值 然後統一包裝成你的conenction的OutputStream。

建議你用apache的HttpClient api項目,裡面有專門處理cookie的api,這樣事情就簡單許多。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243065.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:54
下一篇 2024-12-12 12:54

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論