`
m635674608
  • 浏览: 5029742 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClient 模拟登录手机版新浪微博

    博客分类:
  • java
 
阅读更多

我们要做的就是获取服务器需要的数据,然后用HttpClient模拟浏览器提交。

有几点需要说明一下:

go标签内的href是我们第二次请求的地址,通过这个地址来获取cookie。

用户密码那个field的name属性是随机变化的,需要先获取它然后提交。

下面是整个源代码。

思路:先获取表单的值,然后用POST方法提交。注意添加RequestHeader信息,否则会被服务器拒绝(403)。

复制代码
/**
     * 获取手机版微博的cookies
     * @param username
     *             微博用户名
     * @param password
     *             微博密码
     * @return    Cookie[]
     */
    public Cookie[] getMCookies(String username, String password){
        Cookie[] cookies = null;
        HttpClient client;
        PostMethod post = null;
        try{
            Document doc = Jsoup.connect("http://3g.sina.com.cn/prog/wapsite/sso/login.php").get();
            Elements elements = doc.getElementsByTag("postfield");
        
            String randUrl = doc.getElementsByTag("go").first().attr("href");        
            String pwName = elements.get(1).attr("name");
            String vkValue = elements.get(2).attr("value");
            String backURL = elements.get(4).attr("value");
            String backTitle = elements.get(5).attr("value");
            
            String url = "http://3g.sina.com.cn/prog/wapsite/sso/"+randUrl;
    
            post = new PostMethod(url);
            
            post.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.77 Safari/537.1");
            post.setRequestHeader("Referer", "http://weibo.com/");
            post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            
            post.setParameter("mobile", username);
            post.setParameter(pwName,password);
            post.setParameter("vk", vkValue);
            post.setParameter("remember", "on");
            post.setParameter("backURL", backURL);
            post.setParameter("backTitle", backTitle);
            post.setParameter("submit", "1");            
            
            client = new HttpClient();            
            client.executeMethod(post);
            cookies = client.getState().getCookies();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            post.abort();
        }
            
        return cookies; 
    }
复制代码

如果用户名密码正确的话,应该就可以获得cookie了。

接下来如果想要访问某些网页只需要带上cookie就行了。

由于新浪的网页可能会变化,所以不保证此方法一直能用,不过大体思路应该是不会变的。

 

转:http://www.cnblogs.com/e241138/archive/2012/09/16/2687120.html

分享到:
评论

相关推荐

    模拟登陆新浪微博

    在这个场景中,我们关注的是如何使用HTTPClient 4库来模拟登录新浪微博。首先,我们需要理解HTTPClient库的基本概念。 HTTPClient是一个强大的Java库,用于处理HTTP请求和响应。它提供了丰富的功能,包括支持HTTPS...

    (最新)HttpClient4模拟登录腾讯微博

    这篇最新的文章“HttpClient4模拟登录腾讯微博”探讨了如何利用HttpClient4实现对腾讯微博的模拟登录,这在自动化测试、数据抓取等场景中非常实用。 HttpClient4库提供了丰富的API,可以定制化地构造HTTP请求,包括...

    新浪,腾讯微博HttpClient4模拟登陆

    本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...

    java模拟登陆新浪微博(非API)

    在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博,特别是在其改版后增加了复杂性的背景下。我们将不依赖新浪提供的官方API,而是通过模拟浏览器的行为,实现自动化登录和交互。 首先,我们需要理解模拟...

    用java登陆新浪微博

    httpclient方式登陆,以及发布微博

    新浪微博模拟登陆

    【标题】:“新浪微博模拟登陆” 在信息技术领域,模拟登录是一种常见的技术手段,它允许开发者通过编程方式自动登录网站并执行一些操作,例如抓取数据。本主题聚焦于使用Java实现对新浪微博的模拟登录,这对于数据...

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    Java模拟登录新浪微博

    在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博这一话题。模拟登录是网络爬虫或自动化测试中常见的技术,它允许程序以用户的身份与网站交互。对于Java开发者来说,理解这一过程对于构建自动化工具或者数据...

    定时发送 新浪微博 程序 c# 实现 所有源码

    标题中的“定时发送 新浪微博 程序 c# 实现 所有源码”表明这是一个使用C#语言编写的程序,其主要功能是实现定时发送微博到新浪微博平台。这通常涉及到C#编程基础,多线程处理,时间触发器(如System.Timers.Timer)...

    java httpclient 模拟登录

    在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...

    新浪微博话题爬虫

    这个爬虫可能利用HttpClient发送GET或POST请求,获取新浪微博的话题页面HTML源码。 3. **HTML解析**:为了提取话题数据,项目可能使用了HTML解析库,如HtmlAgilityPack,它可以解析HTML文档,方便地定位并提取所需...

    HttpClient模拟登陆

    在阅读博文《HttpClient模拟登陆》时,可以深入学习如何解决这些具体问题,并查看示例代码以获得更详细的实现细节。 标签“源码”意味着你需要关注底层的工作原理,而“工具”标签则暗示HttpClient作为一个实用工具...

    基于Java + HTTPClient 4.0,采用MySQL存储爬取数据,支持多进程并发执行的新浪微博爬虫

    【作品名称】:基于Java + HTTPClient 4.0,采用MySQL存储爬取数据,支持多进程并发执行的新浪微博爬虫 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...

    HttpClient模拟登陆方正系统

    在本文中,我们将深入探讨如何使用HttpClient来模拟登录方正系统,以及在此基础上开发类似“课程格子”这样的应用。 一、HttpClient简介 HttpClient是一个支持HTTP协议的客户端编程工具,支持HTTP/1.1及其后续版本...

    Jsoup+httpclient 模拟登陆和抓取

    Jsoup+httpclient 模拟登录和抓取知识点: 1. Jsoup库使用介绍: - Jsoup是一个Java的HTML解析器,能够直接解析HTML文档,提供类似于jQuery的操作方法。 - 主要功能包括从URL、文件或字符串中解析HTML,使用DOM或...

    httpclient模拟登录实例

    本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...

    新浪微博 oauth2 模拟登录

    在本文中,我们将深入探讨如何使用OAuth2协议模拟登录新浪微博,并了解相关技术细节。OAuth2是一种授权框架,允许第三方应用代表用户与服务提供商进行交互,例如发布微博。在这个例子中,我们将使用Java的Apache ...

    java 新浪模拟登录 微博

    2016年4月7最新新浪微博模拟登录HttpClient4.5.2

    httpclient模拟登陆

    ### HTTPClient 模拟登录详解 #### 一、概述 HTTPClient是Apache组织下的一个开源项目,它提供了功能丰富的HTTP客户端开发工具包,可以用来发送HTTP请求并接收响应。利用HTTPClient,我们可以轻松实现模拟登录的...

    Java新浪微博客户端开发第六步(完结&&开源)

    在本项目中,我们讨论的是一个使用Java语言开发的新浪微博客户端。这个客户端的开发教程已经进入了第六步,标志着整个项目已经完成,并且源代码已公开,鼓励开发者学习和使用。通过阅读提供的链接,我们可以获取更多...

Global site tag (gtag.js) - Google Analytics