HTTPClient模拟登陆人人网
来源:互联网 发布:淘宝杯子宝贝卖点范文 编辑:程序博客网 时间:2024/04/29 05:31
目的:
使用HTTPClient4.0.1登录到人人网,并从特定的网页抓取数据。
总结&注意事项:
代码:
转自:http://robblog.iteye.com/blog/638206
使用HTTPClient4.0.1登录到人人网,并从特定的网页抓取数据。
总结&注意事项:
- HttpClient(DefaultHttpClient)代表了一个会话,在同一个会话中,HttpClient对cookie自动进行管理(当然,也可以在程序中进行控制)。
- 在同一个会话中,当使用post或是get发起一个新的请求时,一般需要对调用前一个会话的abort()方法,否则会抛出异常。
- 有些网站登录成功后会重定向(302, 303),比如这里的人人网。如果发出的是post请求,需要从响应头中取出location,并再次向网站发送请求,以获取最终数据。
- 抓取程序不要运行地过于频繁,大部分站点都有抵制刷网站机制。人人网访问过于频繁会锁账号。
- 使用录制工具录制出登录时向网站发出的请求参数。在这里,我使用了badboy,导出成jmeter文件,在jmeter中就可以看到登录时向网站发送的参数列表和相应的值。
代码:
public class RenRen { // The configuration items private static String userName = "YourMailinRenren"; private static String password = "YourPassword"; private static String redirectURL = "http://blog.renren.com/blog/304317577/449470467"; // Don't change the following URL private static String renRenLoginURL = "http://www.renren.com/PLogin.do"; // The HttpClient is used in one session private HttpResponse response; private DefaultHttpClient httpclient = new DefaultHttpClient(); private boolean login() { HttpPost httpost = new HttpPost(renRenLoginURL); // All the parameters post to the web site List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("origURL", redirectURL)); nvps.add(new BasicNameValuePair("domain", "renren.com")); nvps.add(new BasicNameValuePair("isplogin", "true")); nvps.add(new BasicNameValuePair("formName", "")); nvps.add(new BasicNameValuePair("method", "")); nvps.add(new BasicNameValuePair("submit", "登录")); nvps.add(new BasicNameValuePair("email", userName)); nvps.add(new BasicNameValuePair("password", password)); try { httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); response = httpclient.execute(httpost); } catch (Exception e) { e.printStackTrace(); return false; } finally { httpost.abort(); } return true; } private String getRedirectLocation() { Header locationHeader = response.getFirstHeader("Location"); if (locationHeader == null) { return null; } return locationHeader.getValue(); } private String getText(String redirectLocation) { HttpGet httpget = new HttpGet(redirectLocation); // Create a response handler ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = ""; try { responseBody = httpclient.execute(httpget, responseHandler); } catch (Exception e) { e.printStackTrace(); responseBody = null; } finally { httpget.abort(); httpclient.getConnectionManager().shutdown(); } return responseBody; } public void printText() { if (login()) { String redirectLocation = getRedirectLocation(); if (redirectLocation != null) { System.out.println(getText(redirectLocation)); } } } public static void main(String[] args) { RenRen renRen = new RenRen(); renRen.printText(); }}
转自:http://robblog.iteye.com/blog/638206
- HTTPClient模拟登陆人人网
- HTTPClient模拟登陆人人网
- HTTPClient模拟登陆人人网
- httpclient/jsoup模拟登陆人人网
- HttpClient模拟手机人人网登陆(一)---抓包
- 利用HttpClient模拟登陆人人网、发送状态
- [CasperJS] 模拟登陆人人网
- HttpClient模拟登陆人人网,并且爬取日志内容(一)
- [Python]小练习 -- 模拟登陆人人网
- python 模拟登陆人人网登陆 2016-12-11
- httpclient 模拟登录人人网, 发心情(刷屏)
- httpclient 模拟登陆
- HttpClient模拟登陆例子
- PHP HttpClient模拟登陆
- 使用httpclient模拟登陆
- HttpClient模拟登陆
- httpclient模拟登陆CSDN
- 使用C#的HttpWebRequest模拟登陆访问人人网
- 浅析代理键替换管道
- 数据库乐观锁与悲观锁
- 1001
- 第三次作业 作业三
- zoj 3499 Median
- HTTPClient模拟登陆人人网
- 安装和卸载Android应用程序(apk包)
- Java中Date类的输出格式
- 一种简单的给MD5加盐算法
- 汇编——带标志位的冒泡排序
- C# 学习
- 浅析异构数据抽取
- uva10341 - Solve It
- OFBiz二次开发