`
robertliudeqiang
  • 浏览: 123118 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTPClient模拟登陆人人网

    博客分类:
  • web
阅读更多
目的:
使用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();
    }
}
分享到:
评论
65 楼 cfczdws 2015-05-06  
不得不再回次。。
64 楼 cfczdws 2015-05-06  
非常感谢,终于成功了,也算小有入门了。。
63 楼 2272006 2014-10-14  
请问楼主,  是用什么组件能实现“在jmeter中就可以看到登录时向网站发送的参数列表和相应的值。”?
62 楼 lt26w 2014-07-21  
为啥我复制粘贴楼主的代码用了4.0.1还是报一堆的错误?求解


晕死,原来还要导入5个包
61 楼 lt26w 2014-07-21  
为啥我复制粘贴楼主的代码用了4.0.1还是报一堆的错误?求解
60 楼 fancyzc 2012-08-22  
楼主你好,非常感谢你的发帖。不过我在引用的时候eclipse提示HttpResponse不存在需要重新创建,我入门较浅,楼主能帮忙解决一下么。
谢谢
59 楼 greatwqs 2011-09-29  
•HttpClient(DefaultHttpClient)代表了一个会话,在同一个会话中,HttpClient对cookie自动进行管理(当然,也可以在程序中进行控制)。

前面的HttpClient为一个登陆的,后面HttpClient保存了登陆的信息.
如果我要在代码52行当中重新定义一个,例如
DefaultHttpClient httpclient2 = new DefaultHttpClient();
用httpclient2 去执行httpget 得到登陆之后的HTML等信息.
这个时候httpclient2 应该设置些什么东西呢? 管理cookie什么的解决?
由于原来是两次new不同的httpclient. 不是一个httpclient.
谢谢!

    
58 楼 2110901055 2011-02-23  
56楼的,抓到现在QQ邮箱的联系人会不?
57 楼 iminto 2011-02-12  
php的curl比这个好用100倍
56 楼 iminto 2011-02-12  
抓取QQ邮箱联系人 这个是最难的。
55 楼 Alvizel 2011-02-12  
登陆进入谁不会啊 -。-

关键是发些分享啊什么的
54 楼 to_zoe_yang 2011-01-24  
感谢楼主啊~
呵呵~
自己尝试得到全部好友和通讯录
没有问题~
谢谢啦~
关注楼主
53 楼 yang02301 2010-12-05  
jordan_micle 写道
能用httpclient登录QQ或QQ空间吗。。。



已经搞定“httpclient登录QQ”自动登陆。
52 楼 yang02301 2010-12-05  
robertliudeqiang 写道
ithero 写道
比较感兴趣的是把人人网的大中学校抓取下来。


HTTPClient是自动管理cookie的,你登陆后,再到含有学校的页面get这些页面,分析一下就可以得到学校列表了。不过不要抓的太频繁,人人会锁账号 


这里有已经抓到的中国大学数据,

还有大学所带的院系。

51 楼 KimShen 2010-10-13  
HttpClient4我有专门整理过,配合HttpParse或者HttpUnit效果比较好,
一般的登陆URLConnection更方便.
资料地址:
http://kimshen.iteye.com/admin/blogs/783480
50 楼 dominic6988 2010-10-13  
<p>看着楼主的全家福感觉你们好幸福,祝福你们</p>
49 楼 philexm 2010-10-13  
怎么解决抓取回来的页面信息中文乱码问题。
48 楼 鸟哥哥 2010-07-08  
想当年拿httpclient恶意注册人民网邮箱,注爆了,也注册bigfoot,gmail等等。用httpclient问题是一旦html代码或者关键参数有变,这程序就得改。
可以拿它去点点广告,暴力尝试密码啊等,有些行,有些不行。
有些web不行,wap行。
47 楼 jordan_micle 2010-07-08  
能用httpclient登录QQ或QQ空间吗。。。
46 楼 link_biao 2010-07-08  
大哥,你这文章帮我大忙 了。

相关推荐

    上市公司企业澄清公告数据(2001-2023年) .xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/143896457

    (源码)基于Java和MySQL的物联网环境监测系统.zip

    # 基于Java和MySQL的物联网环境监测系统 ## 项目简介 本项目是一个基于Java和MySQL的物联网环境监测系统,旨在通过采集、存储和分析环境数据,实现对环境的实时监测和管理。系统涵盖了数据采集、数据存储、数据发送、数据接收、数据备份和日志记录等多个模块,确保数据的完整性和系统的稳定性。 ## 项目的主要特性和功能 1. 数据采集模块 从指定的数据文件(如radwtmp)中读取原始数据,并将其封装成Environment对象。 将多个Environment对象存储到集合中,便于后续处理。 2. 数据存储模块 创建数据库表结构,用于存储环境数据。 将采集到的环境数据批量存储到MySQL数据库中,支持批量处理以优化性能。 3. 网络模块 客户端调用采集模块获取数据,并将数据发送至服务器。 服务器端接收客户端发送的数据,并调用存储模块将数据存入数据库。支持多线程处理,提高并发性能。

    中国2002-2021年31省份经济韧性测度三级指标数据【重磅,更新!】

    1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143895777 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 下载

    TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 下载仓库 简介 本仓库提供 TMS WEB Core v2.0.5.0 for Delphi 11 (D11.1) 的资源文件下载。TMS WEB Core 是一个强大的工具,专为 Delphi 开发者设计,帮助他们轻松构建现代化的 Web 应用程序。 资源文件信息 标题: TMS-WEB-Core-v2.0.5.0-for-Delphi-11-D11.1 描述: TMS_WEB_Core_v2.0.5.0_for_Delphi_11_D11.1 使用说明 下载资源文件: 点击仓库中的资源文件进行下载。 安装: 按照 TMS WEB Core 的官方安装指南进行安装。 开发: 使用 Delphi 11 进行 Web 应用程序的开发。 注意事项 请确保您已经安装了 Delphi 11 (D11.1) 版本。 在安装和使用过程中,请参考 TMS WEB Core 的官方文档以获取更多帮助。 联系我们 如果您在使用过程中遇到任何问题或有任何建议,请通过以下方式联系我们: 邮箱: support@exa

    PyCharm安装与基本配置指导

    内容概要:本文档是一份详细的PyCharm安装与基本配置教程,旨在帮助初学者轻松掌握从下载安装到运行首个Python程序的所有步骤。内容覆盖PyCharm的选择与下载、安装路径设定、环境变量配置以及首次启动后的各项重要设置,如主题更换、汉化、安装插件增强体验等,最后还简述了如何运行第一个程序。同时提供了丰富的配图辅助理解和操作。 适合人群:面向编程新手特别是对Python感兴趣的学习者。对于有一定Python基础但缺乏高效IDE使用经验的研发人员也有一定借鉴意义。 使用场景及目标:①快速熟悉PyCharm IDE的基本操作与环境搭建流程;②优化编码体验,学会利用插件提升效率;③为深入Python编程学习打下坚实的基础。 阅读建议:按照步骤执行操作时注意对比教程提供的图片与实际界面是否一致,如有疑问可参照文档给出的具体链接进一步探索相关资料。此外,虽然本文档主要针对PyCharm的社区版,高级用户也可以将其作为官方文档的补充参考材料。

    SQL 学习教程(入门到实践)

    本教程从基础开始,介绍了 SQL 的语法和常用操作,包括创建表、查询数据、更新与删除、聚合与连接查询,以及数据库完整性和索引。通过提供学习资源和练习任务,帮助您快速掌握 SQL 的核心技能,为数据库管理和数据分析奠定基础。

    人工智能开发项目深度学习项目源码带指导视频服饰关键点定位

    人工智能开发项目深度学习项目源码带指导视频服饰关键点定位提取方式是百度网盘分享地址

    vncviewer.exe

    vncviewer.exe

    java毕设项目之基于Java的校园消费点评系统(源码+说明文档+mysql).zip

    环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目经过测试均可完美运行

    人工智能开发项目深度学习项目源码带指导视频令人拍案叫绝的WGAN

    人工智能开发项目深度学习项目源码带指导视频令人拍案叫绝的WGAN提取方式是百度网盘分享地址

    (源码)基于DevExpress框架的进销存管理系统.zip

    # 基于DevExpress框架的进销存管理系统 ## 项目简介 进销存管理系统是一个基于CS架构的应用程序,主要用于管理企业的采购、销售、库存等业务流程。系统采用DevExpress插件进行界面设计和数据展示,提供了丰富的功能模块,包括采购管理、供应商管理、销售管理、库存管理、客户管理、系统用户管理和商品管理。 ## 项目的主要特性和功能 1. 采购管理管理企业的采购订单,跟踪采购流程。 2. 供应商管理维护和管理供应商信息,包括供应商的详细资料和历史交易记录。 3. 销售管理管理销售订单,跟踪销售流程和客户需求。 4. 库存管理实时监控库存情况,管理库存的进出和调拨。 5. 客户管理维护和管理客户信息,包括客户的详细资料和历史交易记录。 6. 系统用户管理管理系统的用户账号和权限,确保系统的安全性和稳定性。 7. 商品管理管理商品信息,包括商品的详细资料和库存情况。 ## 安装使用步骤 ### 环境准备

    (源码)基于C语言和C++的简单网站留言评论系统.zip

    # 基于C语言和C++的简单网站留言评论系统 ## 项目简介 这是一个基于C语言和C++的简单网站留言评论系统,旨在通过学习和实践计算机入门到进阶的知识,实现一个功能完善的网站评论系统。项目分为初稿和中稿两部分,初稿使用C语言实现,中稿则在初稿的基础上,将编程语言切换到C++,并利用第三方库进行功能优化。 ## 项目的主要特性和功能 1. 前端界面通过HTML和CSS实现简洁的网页界面,用户可以浏览评论、发表新评论和查看回复。 2. JavaScript事件监听使用JavaScript监听用户的前端操作,如发表评论、点赞等,并向后端发送请求。 3. 后端处理使用C语言和C++编写服务器进程,处理前端请求,与数据库进行交互,并返回结果。 4. 数据库操作通过MySQL数据库存储评论数据,包括评论内容、评论回复等。 5. 多线程处理服务器进程使用多线程模式处理多个客户端的请求,提高处理效率。

    基于springboot的校园失物招领系统源码数据库文档.zip

    基于springboot的校园失物招领系统源码数据库文档.zip

    C# 学习教程(入门到实践)

    本教程涵盖了 C# 的基础语法、类与对象、继承与接口、文件操作、以及异步编程,通过实用示例和练习帮助您快速入门。C# 的强大功能和广泛应用,使其成为开发 Windows 应用程序、游戏(如 Unity)、Web API 和云服务的理想选择。

    《Linux操作系统实用教程(第2版)》- 配套软件

    《Linux 操作系统实用教程(第 2 版)》这本书是一本非常实用的书籍,它为读者提供了关于 Linux 操作系统的深入讲解和实用教程。在这本书中,读者可以学习到 Linux 操作系统的基本概念、命令行操作、文件系统管理、用户管理、进程管理等方面的知识。同时,这本书还提供了丰富的配套软件,这些软件可以帮助读者更好地学习和使用 Linux 操作系统。例如,书中可能会介绍一些常用的文本编辑器、编译器、调试器等软件,这些软件可以帮助读者在 Linux 环境下进行编程和开发。此外,书中还可能会介绍一些系统管理工具、网络工具等软件,这些软件可以帮助读者更好地管理和维护 Linux 系统。总之,《Linux 操作系统实用教程(第 2 版)——配套软件》是一本非常值得一读的书籍,它可以帮助读者更好地了解和掌握 Linux 操作系统。

    springboot286入校申报审批系统的设计与实现.zip

    论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。

    基于springboot高校学术交流平台源码数据库文档.zip

    基于springboot高校学术交流平台源码数据库文档.zip

    Objective-C 学习教程(入门-高级-实践)

    本教程介绍了 Objective-C 的基础语法、面向对象编程、动态类型和 Block 特性,并提供了实用的练习和答案。通过这些内容,您可以快速掌握 Objective-C 的核心概念,为 macOS/iOS 开发打下扎实的基础。

    基于springboot校外兼职教师考勤管理系统源码数据库文档.zip

    基于springboot校外兼职教师考勤管理系统源码数据库文档.zip

    【重磅,更新!】中国城市空气污染站点数据,共170多万条记录(2014-2022年)

    1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143895851 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

Global site tag (gtag.js) - Google Analytics