南信大电脑开机自动连接校园网

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().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{
    val path = "${System.getProperty("user.dir")}\\config.txt"
    val reader = BufferedReader(FileReader(File(path)))
    return mutableListOf().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"
    }
}

你可能感兴趣的:(java,kotlin,java,开发语言)