我们要做的就是获取服务器需要的数据,然后用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库提供了丰富的API,可以定制化地构造HTTP请求,包括...
本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...
在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博,特别是在其改版后增加了复杂性的背景下。我们将不依赖新浪提供的官方API,而是通过模拟浏览器的行为,实现自动化登录和交互。 首先,我们需要理解模拟...
httpclient方式登陆,以及发布微博
【标题】:“新浪微博模拟登陆” 在信息技术领域,模拟登录是一种常见的技术手段,它允许开发者通过编程方式自动登录网站并执行一些操作,例如抓取数据。本主题聚焦于使用Java实现对新浪微博的模拟登录,这对于数据...
Jsoup+httpclient模拟登陆和抓取页面.pdf
在本文中,我们将深入探讨如何使用Java来模拟登录新浪微博这一话题。模拟登录是网络爬虫或自动化测试中常见的技术,它允许程序以用户的身份与网站交互。对于Java开发者来说,理解这一过程对于构建自动化工具或者数据...
标题中的“定时发送 新浪微博 程序 c# 实现 所有源码”表明这是一个使用C#语言编写的程序,其主要功能是实现定时发送微博到新浪微博平台。这通常涉及到C#编程基础,多线程处理,时间触发器(如System.Timers.Timer)...
在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...
这个爬虫可能利用HttpClient发送GET或POST请求,获取新浪微博的话题页面HTML源码。 3. **HTML解析**:为了提取话题数据,项目可能使用了HTML解析库,如HtmlAgilityPack,它可以解析HTML文档,方便地定位并提取所需...
在阅读博文《HttpClient模拟登陆》时,可以深入学习如何解决这些具体问题,并查看示例代码以获得更详细的实现细节。 标签“源码”意味着你需要关注底层的工作原理,而“工具”标签则暗示HttpClient作为一个实用工具...
【作品名称】:基于Java + HTTPClient 4.0,采用MySQL存储爬取数据,支持多进程并发执行的新浪微博爬虫 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...
在本文中,我们将深入探讨如何使用HttpClient来模拟登录方正系统,以及在此基础上开发类似“课程格子”这样的应用。 一、HttpClient简介 HttpClient是一个支持HTTP协议的客户端编程工具,支持HTTP/1.1及其后续版本...
Jsoup+httpclient 模拟登录和抓取知识点: 1. Jsoup库使用介绍: - Jsoup是一个Java的HTML解析器,能够直接解析HTML文档,提供类似于jQuery的操作方法。 - 主要功能包括从URL、文件或字符串中解析HTML,使用DOM或...
本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...
在本文中,我们将深入探讨如何使用OAuth2协议模拟登录新浪微博,并了解相关技术细节。OAuth2是一种授权框架,允许第三方应用代表用户与服务提供商进行交互,例如发布微博。在这个例子中,我们将使用Java的Apache ...
2016年4月7最新新浪微博模拟登录HttpClient4.5.2
### HTTPClient 模拟登录详解 #### 一、概述 HTTPClient是Apache组织下的一个开源项目,它提供了功能丰富的HTTP客户端开发工具包,可以用来发送HTTP请求并接收响应。利用HTTPClient,我们可以轻松实现模拟登录的...
在本项目中,我们讨论的是一个使用Java语言开发的新浪微博客户端。这个客户端的开发教程已经进入了第六步,标志着整个项目已经完成,并且源代码已公开,鼓励开发者学习和使用。通过阅读提供的链接,我们可以获取更多...