高仿CMCC登录客户端

2023-10-24 12:10
文章标签 登录 客户端 高仿 cmcc

本文主要是介绍高仿CMCC登录客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.io.*;
import java.net.*;
import java.util.Scanner;import javax.swing.*;
public class Cmcc {// 设定参数private static String testPage;// 测试页面private String phoneNumber;// 手机号码private String password;// 登陆密码private static int checkTime;// 刷新时间private String sURL;// 递交的基本参数(包含session)private String rid;private String vlanid;private String rid1;private String session;private int errorNum = 0;// 连续读取测试页面异常的次数private static final int ERROR_NUM = 10;// 连续读取测试页面异常超过此次数则退出系统private static int outNum = 0;// 连接正常时输出的数字private URL url;/*** 初始化参数,如手机号码、密码* */public boolean init() {try {BufferedReader br = new BufferedReader(new FileReader("login.ini"));try {String ph = br.readLine();phoneNumber = ph.substring(ph.indexOf("手机号码") + 5,ph.indexOf(";"));if (phoneNumber.length() < 11) {JOptionPane.showMessageDialog(new JDialog(),"手机格式异常,请设置好配置文件再运行程序!");System.exit(0);}ph = br.readLine();password = ph.substring(ph.indexOf("登录密码") + 5, ph.indexOf(";"));if (password.length() == 0) {JOptionPane.showMessageDialog(new JDialog(),"密码没设置,请设置好配置文件再运行程序!");System.exit(0);}ph = br.readLine();checkTime = new Integer(ph.substring(ph.indexOf("检测间隔") + 5,ph.indexOf(";")));ph = br.readLine();testPage = ph.substring(ph.indexOf("测试连接是否正常的网页") + 12,ph.indexOf(";"));br.close();return true;} catch (Exception e) {JOptionPane.showMessageDialog(new JDialog(), "配置信息异常!");System.exit(0);}} catch (FileNotFoundException e) {Scanner sc = new Scanner(System.in);System.out.println("找不到配置文件,现在开始创建!");System.out.println("请输入登录手机号码:");String num = sc.next();System.out.println("请输入登录密码:");String pass = sc.next();String iniStr = "手机号码="+ num+ ";\n登录密码="+ pass+ ";\n检测间隔=10;(秒)\n测试连接是否正常的网页=http://www.baidu.com;\n\n注意:检测间隔建议设置10秒,格式请勿乱修改,出错自负";try {Writer wt = new FileWriter("login.ini");BufferedWriter bw = new BufferedWriter(wt);bw.write(iniStr);bw.flush();bw.close();wt.close();return false;} catch (IOException e1) {}}return false;}/*** 获取session信息并赋值给相关参数sURL* */public void setParameter() {try {// testPage = "http://www.baidu.com";url = new URL(testPage);BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "GBK"));br.readLine();// 第一行HTML信息,没用br.readLine();// 第二行HTML信息,没用// 把所读网页内容的第三行(主要信息都在这)赋值给新建的字符串bodyString body = br.readLine();System.out.println("setParameter_body:" + body);// 截取body中有用的信息rid = body.substring(body.indexOf("ipm=") + 5,body.indexOf("ipm=") + 13);vlanid = body.substring(body.indexOf("vlanid=") + 8,body.indexOf("vlanid=") + 10);rid1 = body.substring(body.indexOf("ss1=") + 5,body.indexOf("ss1=") + 17);String ss1 = body.substring(body.indexOf("ss3=") + 5,body.indexOf("ss3=") + 13);String ss2 = body.substring(body.indexOf("ss4=") + 5,body.indexOf("ss4=") + 17);String ss3 = body.substring(body.indexOf("ss2=") + 5,body.indexOf("ss2=") + 9);session = ss1 + "-" + ss2 + "-" + ss3;// 所有信息赋值给sURLsURL = "&rid=" + rid + "&vlanid=" + vlanid + "&rid1=" + rid1+ "&session=" + session;System.out.println("sURL:" + sURL);} catch (Exception e) {}}/*** 判断测试页面是否连接成功!成功返回0,掉线返回1,异常返回2* */public int isConn() {try {URL url = new URL(testPage);URLConnection conn = url.openConnection();conn.getDoInput();url.openStream();BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));String er = "";// 读取3行信息,都没用的br.readLine();br.readLine();br.readLine();// 第4行有用,赋值给erer = br.readLine();if (er.indexOf("空间") == -1) {return 1;}errorNum = 0;return 0;} catch (Exception e) {if (errorNum > ERROR_NUM) {System.out.println("连续" + errorNum+ "次以上读取不到网络信息,系统自动退出!请确定你是否连接了CMCC网络!");System.exit(0);}errorNum++;return 2;}}/*** 登陆中国移动网络* */public void connCmcc() {try {URL url = new URL("http://218.204.219.1:8080/Control?id=2000"+ sURL);HttpURLConnection uc = (HttpURLConnection) url.openConnection();uc.setDoOutput(true);// uc.setRequestMethod("post");uc.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(), "8859_1");// 发送用户名密码out.write("strAccount=" + "18274959100" + "&strPassword=" + "0jud9n"+ "&");out.flush();out.close();System.out.println("登陆信息发送完毕,等待回复...如果等待过久请关闭程序!");BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream(), "GBK"));String er = null;while ((er = br.readLine()) != null) {if (er.indexOf("帐号或密码错误") != -1) {JOptionPane.showMessageDialog(new JDialog(),"帐号或密码错误,请修改参数文件!");System.exit(0);}}br.close();} catch (Exception e) {}}/*** 连接流程控制,连接正常返回true,不正常返回false* */public boolean systemControllor(Cmcc c) {if (!c.init())c.init();System.out.println("初始化参数正常!");c.setParameter();System.out.println("获取session等连接参数正常!");c.connCmcc();System.out.println("成功获得系统回复,验证网络是否通过...");while (c.isConn() != 0) {System.out.println("网络测试异常,系统重新连接!");return false;}return true;}/*** 系统定时刷新流程控制* */public void flushConn(Cmcc c) {while (true) {switch (c.isConn()) {case 0:outNum++;if (outNum > 9)outNum = 0;System.out.print(outNum);break;case 1:System.out.print("\n垃圾中国移动,又自动掉线了!系统重新连接...\n");while (!c.systemControllor(c))c.systemControllor(c);// JOptionPane.showMessageDialog(new JDialog(), "掉线了~~");break;case 2:System.out.print("\n我靠!网络不稳定,读不到信息");break;}try {Thread.sleep(checkTime * 1000);} catch (Exception e) {}}}/*** 主程序(废话)* */public static void main(String[] args) {System.out.println("================================");System.out.println("===CMCC自动连接系统(非UI版)===");System.out.println("================================");System.out.println("");Cmcc c = new Cmcc();while (!c.systemControllor(c))c.systemControllor(c);System.out.println("\n测试网页" + testPage + "成功!可以正常上网了!\n");System.out.println("系统间隔" + checkTime + "秒自动检测连接是否正常!");System.out.println("连接正常则会输出0~9的数字,不正常会有相应提示!");c.flushConn(c);}
}


 

下载:http://download.csdn.net/detail/weiyirong/8458689

这篇关于高仿CMCC登录客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275078

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur