使用Java模拟浏览器登陆网站(以抓取武汉理工大学教务处学生个人课表网页为例)

本文介绍了如何使用Java模拟浏览器登录武汉理工大学教务处网站,抓取学生个人课表的过程。首先通过浏览器抓包分析请求URL、方法、POST数据和Cookie,然后在Java中复现登录步骤,处理重定向并获取必要的Cookie,最终成功访问到课表页面并解析HTML获取课表信息。
摘要由CSDN通过智能技术生成

本人最近在做一个校园APP,其功能主要是查询学生课表、成绩等等。当然,学校教务处肯定不会给我们提供现成的API,那么就要使用Java来模拟浏览器登陆教务处网页。

其实用Java模拟登陆就是抓取浏览器所做的工作后,用Java语言实现这些工作。

第一步:用浏览器登陆教务处网站,抓取浏览器所做的工作

输入学号和密码及选择用户类型为学生后,点击登陆,抓取到浏览器的工作:


通过抓取到的浏览器所做的工作,我们知道:请求的URL、请求方法及POST发送的用户信息、请求头内容,还得到了响应头信息,因为这个请求返回的还不是学生课表页面,因此返回内容对我们没有用,我们只需要响应头中返回给我们的Cookie。

第二步:用Java来实现浏览器登陆这一行为

public class GetEverythingPrepared {
	
	public static String LOGIN_URL = "http://sso.jwc.whut.edu.cn/Certification//login.do";
	
	private String cerlogin;
	private String jsessionid;

	private int content_length;
	
	public void login(String studyNumber, String password, String type) {
		
		String postContent = "systemId=&xmlmsg=&userName="+studyNumber+"&password="+password+"&type="+type+"&imageField.x=60&imageField.y=24";
		content_length = postContent.length;  //请求消息长度
		
		List<String> cookie = null;
		
		try {
			HttpURLConnection huc = (HttpURLConnection) new URL(LOGIN_URL).openConnection();
			huc.setDoOutput(true);
			huc.setRequestMethod("POST");
			huc.setReadTimeout(6000);
			loginSetRequestProperty(huc);
			
			OutputStream postOS = huc.getOutputStream();
			postOS.write(postContent.getBytes());
			
			Map<String, List<String>> headerFields = huc.getHeaderFields();
			cookie = headerFields.get("Set-Cookie");
			cerlogin = cookie.get(0);
			jsessionid = cookie.get(1);
		} catch (MalformedURLException e) {
			System.out.println("ERROR 1");
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("ERROR 2");
			e.printStackTrace();
		}
	}
	
	public String getCerlogin() {
		return cerlogin;
	}

	public String getJsessionid() {
		return jsessionid;
	}

	private void loginSetRequestProperty(HttpURLConnection huc) {
	
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值