校园网实现网页认证自动登录

作者: Mr.Wang 分类: Java,其他,杂谈 发布时间: 2018-06-02 16:46

引子:

校园网需要在浏览器弹出的网页进行认证后才能上网,奈何自建的服务器就直接凉掉了

为啥?

server没有X-Window 啊~~无法认证登录

装一个不就好了嘛!

啪(打脸),gun~

自己使用Ubuntu Server版本,无法连接外网的问题,虽然内部可以访问服务器,但是服务器不能apt啊~~~~

废话少说,直接上干货

网页认证,手动输入账号密码进行认证。

看一下地址:“http://gw.xju.edu.cn:803/srun_portal_pc.php?ac_id=1&”

803是端口,“srun_portal_pc.php”是其下的一个子文件,?后面的“ac_id=1&”是参数信息,其中&是分隔符。

要做的就是实现自动输入用户名、密码并依次点击注销(注销其他位置登录)、登录四个操作步骤。

具体实现,就是构造一个登录请求,并向URL发送请求信息。

查看网页源代码,表单部分代码如下(关键部分使用绿色方框标注),当用户单击确认按钮时,表单的内容会被传送到另一个文件。表单的action定义了目的文件的文件名。由其定义的这个文件通常会对接收到的输入数据进行相关的处理。

登录按钮对应submit,注销是一个button,触发do_logout()函数。

1.注销

在浏览器控制台查看do_logout()函数体

function do_logout(frm)//远程注销
{
	$.post("/include/auth_action.php",{
			action: "logout",
			username: $("input[name='username']").val(),
			password: $("input[name='password']").val(),
			ajax: 1
			},function(res){
				alert(res);
	});
}

do_logout()使用jQuery的$.post方法以POST形式向服务器发起AJAX请求。

$.post(url,parameters,callback)

通过$.post方法进行传参

post(gw.xju.edu.cn:803/+”include/auth_action.php”, username=””,passeord=”” +”&action=logout&ajax=1″);

至此,注销完成。

2.登录

首先,使用BurpSuite抓包分析传参的值

action=login&ac_id=1&user_ip=&nas_ip=&user_mac=&url=&username=&password=

构造上面的参数发送出去,实现登录

<form name=”form2action=”srun_portal_pc.php?ac_id=1&method=”postonsubmit=”return check(this)“>

继续查看提交操作的源码

    var save_me = (frm.save_me.checked) ? 1 : 0;
	var d = "action=login&username="+encodeURIComponent(frm.username.value)+
			"&password={B}"+e+
			"&ac_id="+$("input[name='ac_id']").val()+
			"&user_ip="+$("input[name='user_ip']").val()+
			"&nas_ip="+$("input[name='nas_ip']").val()+
			"&user_mac="+$("input[name='user_mac']").val()+
			"&save_me="+save_me+
			"&ajax=1";
	
	//这里要用AJAX同步提交POST
	$.ajax({type: "post",
			url: "/include/auth_action.php", 
			data: d,
			async : false,
			success: function(res) {
		res1 = res;
	}
	});

所以,怎么登录?

post(host+"srun_portal_pc.php", data+"&action=login&ac_id=1");

或者

post(host+"srun_portal_pc.php?ac_id=1&url=", data+"&action=login");

最后,上代码

public class Login {
    static void post(String url, String data) throws IOException {
        URL postUrl = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);

        DataOutputStream out = new DataOutputStream(connection.getOutputStream());
        out.writeBytes(data);

        //接收服务器发送的数据,不做处理
        //貌似不接收的话,无法认证成功
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
        reader.close();
        connection.disconnect();
    }

    public static void main(String[] args) throws IOException {
        String host = "http://gw.xju.edu.cn:801/";
        String username = "your account", password = "your password";
        String data = "username="+username+"&amp;password="+password;
        post(host+"include/auth_action.php", data+"&amp;action=logout&amp;ajax=1");
        post(host+"srun_portal_pc.php", data+"&amp;action=login&amp;ac_id=1");
    }
}

so,这就完了,有可能的话,可以用python试一试。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注