首页 > 代码库 > 爬虫模拟登陆
爬虫模拟登陆
package http.login;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.CookieStore;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.protocol.ClientContext;import org.apache.http.cookie.Cookie;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.impl.cookie.BasicClientCookie;import org.apache.http.protocol.BasicHttpContext;import org.apache.http.protocol.HttpContext;import org.junit.Test;public class LoginTest2 { private static CookieStore cs = new BasicCookieStore(); @Test public void test1() throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // 创建一个本地上下文信息 HttpContext localContext = new BasicHttpContext(); // 在本地上下问中绑定一个本地存储 localContext.setAttribute(ClientContext.COOKIE_STORE, cs); // 目标地址 HttpPost httppost = new HttpPost( "http://localhost:8080/app/login"); System.out.println("请求: " + httppost.getRequestLine()); // 构造最简单的字符串数据 StringEntity reqEntity = new StringEntity( "username=admin&password=admin"); // 设置类型 reqEntity.setContentType("application/x-www-form-urlencoded"); // 设置请求的数据 httppost.setEntity(reqEntity); // 执行 HttpResponse response = httpclient.execute(httppost); Header[] headers = response.getAllHeaders(); for (Header h : headers) { String name = h.getName(); String value = http://www.mamicode.com/h.getValue();"kwrd">out.println("header : " + h.getName() + ":" + h.getValue()); if ("Set-Cookie".equalsIgnoreCase(name)) { String[] strs = value.split(";"); for (String str : strs) { String[] cookies = str.split("="); System.out.println("=============== : " + cookies[0] + ":" + cookies[1]); cs.addCookie(new BasicClientCookie(cookies[0], cookies[1])); } } } HttpEntity entity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader( entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } opera(); } private void opera() throws Exception { System.out.println("----------------------------------------"); System.out.println("----------------------------------------"); String logPath = http://localhost:8080/app/log; DefaultHttpClient httpclient = new DefaultHttpClient(); String cookieStr = ""; List<Cookie> list = cs.getCookies(); for (Cookie cookie : list) { cookieStr += cookie.getName() + "=" + cookie.getValue() + ";"; } // 目标地址 HttpGet httpget = new HttpGet(logPath); httpget.setHeader("Cookie", cookieStr); System.out.println("请求: " + httpget.getRequestLine()); // 设置类型 // 执行 HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); BufferedReader reader = new BufferedReader(new InputStreamReader( entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } }}
工程配置包参考:
http://files.cnblogs.com/alex-blog/pom.xml
本文参考:
http://topmanopensource.iteye.com/blog/821954(还有一些没有记录下来)
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html
<style></style>爬虫模拟登陆
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。