手机版微博单点登录的URL为:http://3g.sina.com.cn/prog/wapsite/sso/login.php

我们先来看一下这个网页源代码:

<html><head></head><body><wml> <card title="手机新浪网-新浪通行证"> <p> 登录|<a href="register.php?backURL=http%3A%2F%2Fsina.cn&backTitle=%CA%D6%BB%FA%D0%C2%C0%CB%CD%F8&vt=1">注册</a>|<a href="resetpwd.php?backURL=http%3A%2F%2Fsina.cn&backTitle=%CA%D6%BB%FA%D0%C2%C0%CB%CD%F8&vt=1">忘记密码</a><br /> 手机号/电子邮箱/会员帐号:<br /><input type="text" name="mobile" size="11" value="" /> <br /> 密码:(<a href="login.php?backURL=http%3A%2F%2Fsina.cn&backTitle=%CA%D6%BB%FA%D0%C2%C0%CB%CD%F8&vt=1&pt=1">使用明文密码</a>)<br /> <input type="password" name="password" size="10" value="" /><br /> 记住登录状态,需支持并打开手机的cookie功能。<br /> <select name="remember"> <option value="on">是</option> <option value="off">否</option> </select><br /> <anchor>登录 <go href="login_submit.php?rand=1554212401&backURL=http%3A%2F%2Fsina.cn&backTitle=%CA%D6%BB%FA%D0%C2%C0%CB%CD%F8&vt=1" accept-charset="UTF-8" method="post"> <postfield name="mobile" value="$(mobile)" /> <postfield name="password_2199" value="$(password)" /> <postfield name="vk" value="2199_6637_1567626412" /> <postfield name="remember" value="$(remember)" /> <postfield name="backURL" value="http%3A%2F%2Fsina.cn" /> <postfield name="backTitle" value="手机新浪网" /> <postfield name="submit" value="1" /> </go> </anchor> </card> </wml></body>
</html>

我们要做的就是获取服务器需要的数据,然后用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就行了。

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

下一篇介绍如何模拟登录Web版新浪微博。

HttpClient 模拟登录手机版新浪微博相关推荐

  1. HttpClient 模拟登录Web版新浪微博

    上篇介绍了如何模拟登录手机版微博,过程还是比较简单的,没有设计到复杂的加密部分. 登录Web版微博的过程还是一样的,只不过这次需要提交的数据多一点. public static Cookie[] ge ...

  2. java 模拟手机版微博登录_HttpClient 模拟登录手机版新浪微博

    我们要做的就是获取服务器需要的数据,然后用HttpClient模拟浏览器提交. 有几点需要说明一下: go标签内的href是我们第二次请求的地址,通过这个地址来获取cookie. 用户密码那个fiel ...

  3. 模拟登陆手机版新浪微博

    分析登陆步骤(http://login.weibo.cn) 点击登录 注意:登陆链接不是http://login.weibo.cn,而是http://login.weibo.cn/login/?ns= ...

  4. 微信群控系统制作系列一——java模拟登录网页版微信

    PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...

  5. 模拟飞行 android,微软模拟飞行手机版

    微软模拟飞行是由微软全力制作的一款航空模拟类游戏,玩家能够驾驶各种现实中存在的机型,在天空中翱翔.游戏提供了4K级别的高清地面,玩家能够在游戏中欣赏到地面的每一寸美景,赶紧下载这款微软模拟飞行手机版试 ...

  6. python模拟登录移动版微博

    本博文主要介绍一下如何利用的python的requests包如何模拟登录移动版微博https://passport.weibo.cn/sso/login,好了废话不多说,下面主要介绍一下基本步骤: 运 ...

  7. JAVA使用HttpClient模拟登录正方教务系统,爬取学籍信息和课程表成绩等,超详细登录分析和代码注解

    目录 前言 分析 代码实现 第一次GET POST登录 第二次Get 第三次GET 第四次GET 第五次GET 测试 完整代码 前言 最近在做一个APP,需要获取我们学校--武汉纺织大学皇家停水断电断 ...

  8. HttpClient模拟登录、HtmlUnit模拟登录,jsoup爬取登录后的内容(不带验证码)

    一.HttpClient模拟登录是通过post或get请求,登录后抓取的是静态页面,动态页面使用HtmlUnit public static void main(String[] args) thro ...

  9. php rsa2 微博,php新浪通行证登录新浪微博登录模拟登录(浏览器版)2016

    由于需要项目需要管理微博平台内容,集成登录微博管理平台功能,所以在抓取网页基础上探索了一下浏览器模拟登录,已经实现登录功能,采用JQuery和php结合的方式实现的,其中需要注意跨域访问问题,代码如下 ...

最新文章

  1. JZ2440驱动开发之环境搭建
  2. window 查找 java 进程中占用cpu比较高的线程
  3. centos 7 安装 google chrome 浏览器 (不是教程,只是为了以后自己可能用到)
  4. 三维重建:重定位问题
  5. 为什么声明性编码使您成为更好的程序员
  6. Mac系统下如何使用命令行方式启动MySQL
  7. docker前后端分离_Docker分离模式介绍
  8. python数据可视化雷达图程序_Python数据可视化之matplotlib
  9. 2022 年“苹果学者”名单公布,4 位华人学生位列其中
  10. 使用jQuery+huandlebars遍历中if判断
  11. 刀片系统服务器优点,刀片服务器是什么?介绍ibm刀片服务器优点
  12. android多开原理和检测。
  13. 逍遥模拟器上传服务器文件,逍遥模拟器后台操作
  14. 阿里 VP 贾扬清确认离职!尚未创立公司,方向或是 AI 架构?
  15. fatal: does not appear to a git repository
  16. POI导入和导出Excel
  17. linux ubuntu18.1安装教程,Ubuntu 18.04上Qmmp安装教程
  18. Spring核心容器功能
  19. Python中的错误和异常
  20. 紧跟热点:爱乐活联合Qzone推出《舌尖上的中国菜》

热门文章

  1. TileColor快速指导:注册ocx文件
  2. [python] say hi
  3. Shell脚本之进制转换器
  4. xp系统可用的远程投屏软件_Windows XP电脑投屏
  5. 用虚数做计算机代码,小E教你们如何用计算机算虚数
  6. 多多参谋:拼多多改价格降权多久恢复?降权怎么办?
  7. 全志h3通用固件_全志h3详细刷机教程
  8. android动画如何更新UI(ValueAnimator源码解析)
  9. 九度oj 第1题 二维数组中的查找 何海涛:《剑指Offer:名企面试官精讲典型编程题》
  10. 配置http和https