2022-11-20更新:南信大更新了连接时的url,更改部分如下:
val url ="http://10.255.255.46/api/v1/login"
val ipPath = "http://10.255.255.46/api/v1/ip"
本脚本需要jre环境
南信大的校园网登录需要发两个post请求,这里我用的是Unirest网络请求库。
fun main() {
val url ="http://10.255.255.34/api/v1/login"
val ipPath = "http://10.255.255.34/api/v1/ip"
var ip = ""
val data = readData()
Unirest.get(ipPath).asString().body.apply {
val regex = Regex("(?<=data\":\").*?(?=\"})")
ip =regex.find(this)!!.value
}
val bodyData = mutableMapOf<String, Any>().apply {
put("channel", getServicer(data[0]))
put("ifautologin", "2")
put("pagesign", "secondauth")
put("password", data[2])
put("username", data[1])
put("usripadd", ip)
}
print(ip)
println(data[0])
println(data[1])
println(data[2])
val json = JSONObject(bodyData)
println(Unirest.post(url).body(json).asString().body)
}
/**
* TODO
*
* @return :一个列表,依次是:运营商、账号、密码
*/
fun readData():MutableList<String>{
val path = "${System.getProperty("user.dir")}\\config.txt"
val reader = BufferedReader(FileReader(File(path)))
return mutableListOf<String>().apply {
while (true){
val data = reader.readLine()?:break
add(data)
}
}
}
fun getServicer(servicer:String):Int{
return when(servicer){
"移动" -> 2
"电信" -> 3
"联通" -> 4
else -> 0
}
}
只需要运行这个main函数就可以发送连接请求。
然后可以导出这个程序为jar包,在jar包同级目录下新建一个配置文件config.txt
其中第一行写你的网络运营商:移动、电信、联通
第二行写账号,第三行写密码
然后写一个bat脚本,内容是java - jar +你的jar包绝对路径
如我的是:java -jar F:\WorkSpace\Java\IdeaUltimate\AutoConnect\out\artifacts\consoleApp_jar\consoleApp.jar
然后吧bat脚本放在开机自启动目录(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)中,就可以实现开机自动连接校园网
2022-11-3更新:有时候一个账号连接不上,所以加了一个连接不上切换账号再次连接:
val body = Unirest.post(url).body(json).asString().body
if(body.contains("201")||body.contains("Err")){
println("连接失败,尝试更换账号")
bodyData["channel"] = getServicer(data[3])
bodyData["username"] = data[4]
bodyData["password"] = data[5]
println(bodyData)
val json2 = JSONObject(bodyData)
println(Unirest.post(url).body(json2).asString().body)
}
另外:修改了getServicer函数,它应该返回一个string而不是int,不然会导致无法识别运行商。
fun getServicer(servicer:String):String{
return when(servicer){
"移动" -> "2"
"电信" -> "3"
"联通" -> "4"
else -> "0"
}
}