关于httpclient模拟登录后抓取教务系统信息的问题

TristeanZ 2017-09-24 11:12:13
最近在写一个自助学生查询的服务,因此需要些一个爬虫抓取学生在教务系统的一些信息,在经过模拟登陆到达主页面后,当我请求学生的个人信息时时发现总是被302重定向而且地址为空,我的代码如下:请假各位这是怎么一回事
List<NameValuePair>list=new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("xh","xxxxx"));
list.add(new BasicNameValuePair("xm","xxxxxx"));
list.add(new BasicNameValuePair("gnmkdm","N121501"));

String s = URLEncodedUtils.format(list,"GB2312");
HttpGet get=new HttpGet("http://59.74.168.16:8989/content.aspx");
System.out.println(s);
get.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
get.setHeader("Accept-Encoding","gzip, deflate");
get.setHeader("Accept-Language","zh-CN,zh;q=0.8");
get.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36");
get.setHeader("Cookie","ASP.NET_SessionId=wqsf4h2hsmx3qi45nada2045");
get.setHeader("Referer","http://59.74.168.14:8989/xs_main.aspx?xh=1510050128");
get.setHeader("Upgrade-Insecure-Requests","1");
get.setHeader("Connection","keep-alive");
get.setHeader("Host","59.74.168.14:8989");


CloseableHttpResponse rep=httpclient.execute(get);
get.setHeader("Referer","http://59.74.168.14:8989/xs_main.aspx?xh=1510050128");
Header[]heads=hg.getAllHeaders();
System.out.println("------");
for(Header head:heads){
System.out.println(head.getValue());
}
System.out.println("-------");

if(rep.getStatusLine().getStatusCode()==200){
System.out.println("success");
}
else{
System.out.println(rep.getStatusLine().toString());
}
另外我抓取的是正方教务管理系统,并且发现get请求执行后Referer的值发生变化,请各位帮忙俺看
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2017-09-25
  • 打赏
  • 举报
回复
你可以用浏览器的调试器(一般用F12键打开),看其中的网络,可以看到登陆后都有哪些动作(打开哪些网页) 同时研究一下每个页面的请求/返回头信息,把其中的session传递搞清楚

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧