心得经验总结:校园网自动登录app

简介: 心得经验总结:校园网自动登录app

  其实连接校园网不是个难题,就是传输一次post请求,之前也看到有大佬用python做到电脑上的自启动脚本。不过由于这次想做的是app,而app最好还是用java写,相比python会存在不少问题。

一、python脚本

  虽然要弄java,但还是借着之前看到的python脚本先理解一下思路。首先在校园网登录的界面用F12观察一下连接的时候post了哪些参数:

  可以看到主要有两个参数,DDDDD对应的是学号,形式是",0,学号和后缀",后缀如果是@cmcc就是中国移动,如果是@njxy就是中国电信,如果无后缀则是校园网;而upass即是密码。所以我们要手动实现一次登录,只需要post这两个参数就行,代码如下:

import requests

url=""

data={"DDDDD": ",0,学号和后缀","upass": "密码"}

response=requests.post(url,data)

  可以说是简单的不能再简单……不过我们的目标肯定不是一次登录,但是要是反复的post如果已经登录则也不太合理,参考大佬的脚本,发现有这样一个网址:"",ip后加上的是get""得到的v46ip的值,就能查看到是否连接(ok/fail),如果连接还能看到自己的学号和连接的后缀,所以我们设置每隔一段时间的循环,先用get检查是否连接,未连接则post信息。代码如下:

import requests

import requests

import re

import time

def getIp():

url = ""

res = requests.get(url = url)

res.encoding = 'gbk'

results = re.search("v46ip=\'(【^\'】)\'", res.text)

ip=results.group(1)

return ip

def checkIp(ip):

url = "".format(ip)

res = requests.get(url = url)

status = re.search('\"result\":\"(【^\"】)\"', res.text).group(1)

if (status == 'ok'):

account = re.search('\"account\":\"(【^\"】)\"', res.text).group(1)

return account

else:

return False

def login():

url=""

data={"DDDDD": ",0,学号@cmcc","upass": "密码"} #修改学号和密码

response=requests.post(url,data)

return True

while True:

try:

ip = getIp()

if checkIp(ip) == False:

login()

except:

pass

time.sleep(5)

二、java脚本

  可以说思路和python一样,但是我们需要找到这几个函数在java中的实现方法:requests.get、requests.post、re.search

1、re.search

  用Pattern类来实现

private String re_search(String pa, String li) {

String line = li;

String pattern = pa;

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);

if (m.find()) {

return m.group(1);

} else {

return "null";

}

}

2、getpost

  网上有很多脚本,这里我用的是java自带的HttpsURLConnection。

private final String USER_AGENT = "Mozilla/5.0";

private String sendGet(String Url) throws Exception {

String url = Url;

URL obj = new URL(url);

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("GET");

con.setRequestProperty("User-Agent", USER_AGENT);

int responseCode = con.getResponseCode();

System.out.println("\nSending 'GET' request to URL : " + url);

System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(

new InputStreamReader(con.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

return response.toString();

}

private void sendPost(String Url) throws Exception {

String url = Url;

URL obj = new URL(url);

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("POST");

con.setRequestProperty("User-Agent", USER_AGENT);

con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

String urlParameters = "DDDDD=,0,学号@cmccupass=密码"; // 修改学号密码

con.setDoOutput(true);

DataOutputStream wr = new DataOutputStream(con.getOutputStream());

wr.writeBytes(urlParameters);

wr.flush();

wr.close();

int responseCode = con.getResponseCode();

System.out.println("\nSending 'POST' request to URL : " + url);

System.out.println("Post parameters : " + urlParameters);

System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(

new InputStreamReader(con.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

}

3、完整代码

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class HttpURLConnectionExample {

private final String USER_AGENT = "Mozilla/5.0";

public static void main(String【】 args) throws Exception {

HttpURLConnectionExample http = new HttpURLConnectionExample();

String ip, status, account = "";

int count = 0;

while (true) {

try {

Thread.sleep(5 1000);

ip = http.re_search("v46ip=\'(【^\'】)\'", http.sendGet(""));

ip = "" + ip;

status = http.re_search("\"result\":\"(【^\"】)\"", http.sendGet(ip));

if (status.equals("ok")) {

account = http.re_search("\"account\":\"(【^\"】*)\"", http.sendGet(ip));

} else {

http.sendPost("");

}

count++;

//代码效果参考:http://www.zidongmutanji.com/zsjx/14921.html

System.out.println(count);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

private String re_search(String pa, String li) {

String line = li;

String pattern = pa;

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);

if (m.find()) {

return m.group(1);

} else {

return "null";

}

}

private String sendGet(String Url) throws Exception {

String url = Url;

URL obj = new URL(url);

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("GET");

con.setRequestProperty("User-Agent", USER_AGENT);

int responseCode = con.getResponseCode();

System.out.println("//代码效果参考:http://www.zidongmutanji.com/zsjx/267625.html

\nSending 'GET' request to URL : " + url);

System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(

new InputStreamReader(con.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

return response.toString();

}

private void sendPost(String Url) throws Exception {

String url = Url;

URL obj = new URL(url);

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("POST");

con.setRequestProperty("User-Agent", USER_AGENT);

con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

String urlParameters = "DDDDD=,0,学号@cmccupass=密码"; // 修改学号密码

con.setDoOutput(true);

DataOutputStream wr = new DataOutputStream(con.getOutputStream());

wr.writeBytes(urlParameters);

wr.flush();

wr.close();

int responseCode = con.getResponseCode();

System.out.println("\nSending 'POST' request to URL : " + url);

System.out.println("Post parameters : " + urlParameters);

System.out.println("Response Code : " + responseCode);

BufferedReader in = new BufferedReader(

new InputStreamReader(con.getInputStream()));

String inputLine;

StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

}

}

三、校园网自动登录app

  然而当我用j

相关文章
|
IDE 开发工具 Python
用Airtest和poco实现APP自动登录和退出
用Airtest和poco实现APP自动登录和退出
537 0
|
20天前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
51 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
14天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
40 3
|
1月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
38 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
1月前
|
Web App开发 5G Linux
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
一年一度的毕业季来临,计算机专业的毕业设计尤为重要,不仅关乎学业评价还积累实战经验。选择紧跟5G技术趋势的音视频APP作为课题极具吸引力。这里推荐三类应用:一是融合WebRTC技术实现视频通话的即时通信APP;二是具备在线直播功能的短视频分享平台,涉及RTMP/SRT等直播技术;三是具有自定义动画特效及卡拉OK歌词字幕功能的视频剪辑工具。这些项目不仅技术含量高,也符合市场需求,是毕业设计的理想选择。
60 6
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
|
1月前
|
编解码 Java Android开发
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机直播。
53 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
28天前
|
IDE Java 开发工具
探索安卓开发之旅:打造你的第一款App
【8月更文挑战第24天】在这篇文章中,我们将一起踏上激动人心的安卓开发之旅。不论你是编程新手还是希望扩展技能的老手,本文将为你提供一份详尽指南,帮助你理解安卓开发的基础知识并实现你的第一个应用程序。从搭建开发环境到编写“Hello World”,每一步都将用浅显易懂的语言进行解释。那么,让我们开始吧!
|
2月前
|
存储 开发框架 安全
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
HarmonyOS NEXT星河版的应用开发标志着华为分布式操作系统的全新篇章,它聚焦于打造原生精致、易用、流畅、安全、智能和互联的极致体验。开发者可以利用其先进的API和工具集,如DevEco Studio,构建高性能、跨设备无缝协同的应用程序,从而充分利用HarmonyOS的分布式能力,为用户带来一致且丰富的多场景数字生活体验。随着“学习强国”、岚图汽车、中国电信等知名企业和应用的加入,鸿蒙生态正迅速扩展,引领着原生应用开发的新趋势。
78 3
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
|
2月前
|
Web App开发 缓存 编解码
FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址
《FFmpeg开发实战》书中介绍了轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适用于复杂直播场景。SRS是一款强大的开源流媒体服务器,支持多种协议,起初为RTMP,现扩展至HLS、SRT等。在FFmpeg 6.1之前,推送给SRS的HEVC流不受支持。要播放RTMP流,Android应用可使用ExoPlayer,需在`build.gradle`导入ExoPlayer及RTMP扩展,并根据URL类型创建MediaSource。若SRS播放黑屏,需在配置文件中开启`gop_cache`以缓存关键帧。
108 2
FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址
|
1月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
81 12