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/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

发表回复

登录后才能评论