Java编程通过session访问需要登录的页面

使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。


不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了,一般网页会自动跳转到登录页面,要求先登录。


另外,即使先在登录页面进行了登录,然后再转到要登录才能访问的网页时,如果没在第二次连接中加入之前登录成功后的session,那么访问仍然会失败。URLConnection每次打开一个连接,如果不进行设置,则默认会以新的session去访问,那么相当于又需要重新登录,因此需要加入登录成功的session才能访问到需要登录的页面。


以下通过一个小例子来说明该如何操作:

1.首先找到登录界面


2.查看表单提交给哪个action


3.来到单一的表单提交页面


4.修改表单提交方式为get


5.随便输入用户名和密码后浏览器的地址栏就有这么一串地址,只要把user和password改成正确的,那么直接在浏览器输入这串地址就直接登录,类似的,直接用URLConnetion打开这串数据的连接即实现了登录,获取服务器返回过来的session,下次再连接该网站的别的需要登录的页面时带上这个session即可成功访问了。

代码如下(具体网站地址已隐去):

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class Test
{
	public static void main(String[] args) throws Exception//以下仅举个小例子,不处理异常
	{
		String id="xxxxx";
		String passwd="xxxxx";
		String loginUrl="http://xxxxx/login.aspx?__VIEWSTATE=dDw2Nzg5Mjk2NTY7O2w8b2s7Pj5OOk%2B5QUCLHuIzBtlhui5aZbY11Q%3D%3D&txt_user="+id+"&txt_password="+passwd+"&ok.x=35&ok.y=12";
		URL url = new URL(loginUrl);
		URLConnection conn = url.openConnection();

		String sessionValue = conn.getHeaderField("Set-Cookie");//获取session值
		
		String[] sessionId = sessionValue.split(";");
		URL newUrl = new URL("http://xxxxx/student_info1.aspx");
		URLConnection newConn = newUrl.openConnection();
		newConn.setRequestProperty("Cookie", sessionId[0]);
		newConn.connect();
		
		BufferedInputStream bis = new BufferedInputStream(newConn.getInputStream());
		InputStreamReader inputStreamReader = new InputStreamReader(bis,"utf-8"); 
		BufferedReader br = new BufferedReader(inputStreamReader);

		String str = null;
		while ((str = br.readLine()) != null) 
		{
			System.out.println(str);//输出登录后才能访问的网页的html源码,可以根据需要获取相关信息
		}
	}
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值