public class ReptileLogin {
@Test
public void Login() throws Exception{
//确定url:
String indexUrl = "http://home.manmanbuy.com/login.aspx";
//2、发送请求,获取数据
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(indexUrl);
//设置请求参数
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
params.add(new BasicNameValuePair("__VIEWSTATE","/wEPDwULLTIwNjQ3Mzk2NDFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQlhdXRvTG9naW4voj01ABewCkGpFHsMsZvOn9mEZg=="));
params.add(new BasicNameValuePair("__EVENTVALIDATION","/wEWBQLW+t7HAwLB2tiHDgLKw6LdBQKWuuO2AgKC3IeGDJ4BlQgowBQGYQvtxzS54yrOdnbC"));
params.add(new BasicNameValuePair("txtUser","账户名"));
params.add(new BasicNameValuePair("txtPass","密码"));
params.add(new BasicNameValuePair("btnLogin","登录"));
//设置请求头信息
/*网站加了防盗链,必须设置是从哪个网页跳转过来的*/
post.setHeader("Referer","http://home.manmanbuy.com/login.aspx");
post.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
//将参数加入请求体
HttpEntity entity = new UrlEncodedFormEntity(params);
post.setEntity(entity);
//执行
CloseableHttpResponse response = httpClient.execute(post);
httpClient.close();
//判断是否成功跳转
if(response.getStatusLine().getStatusCode()==302){
//获取响应头信息
Header[] locations = response.getHeaders("Location");
//System.out.println(locations[0].getValue());
/*跳转之后的url:http://home.manmanbuy.com/usercenter.aspx
* locations[0].getValue():usercenter.aspx
* */
//拼接新的url
String new_url = "http://home.manmanbuy.com"+locations[0].getValue();
//拿到响应头中Set-Cookie的值
Header[] cookies = response.getHeaders("Set-Cookie");
//重新发送请求,获取数据
httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet(new_url);
//重新设置请求头信息(因为url变,网页重定向,需要手动设置用户cookie信息)
//Cookie的默认写法,[0]为隐藏,[1]可以直接看到
get.setHeader("Cookie",cookies[0].getValue()+" "+cookies[1].getValue());
CloseableHttpResponse execute_info = httpClient.execute(get);
String info = EntityUtils.toString(execute_info.getEntity(), "gb2312");
/*-----------------------------------------------------------*/
//解析数据
Document parse = Jsoup.parse(info);
Element element = parse.select("#aspnetForm > div.udivright > div:nth-child(2) > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody > tr > td:nth-child(2) > div:nth-child(1) > font").get(0);
//输出当前用户账户积分
System.out.println(element.text());
}
}
}
还没有评论,来说两句吧...