HttpClient 模拟登录手机版新浪微博
手机版微博单点登录的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 模拟登录手机版新浪微博相关推荐
- HttpClient 模拟登录Web版新浪微博
上篇介绍了如何模拟登录手机版微博,过程还是比较简单的,没有设计到复杂的加密部分. 登录Web版微博的过程还是一样的,只不过这次需要提交的数据多一点. public static Cookie[] ge ...
- java 模拟手机版微博登录_HttpClient 模拟登录手机版新浪微博
我们要做的就是获取服务器需要的数据,然后用HttpClient模拟浏览器提交. 有几点需要说明一下: go标签内的href是我们第二次请求的地址,通过这个地址来获取cookie. 用户密码那个fiel ...
- 模拟登陆手机版新浪微博
分析登陆步骤(http://login.weibo.cn) 点击登录 注意:登陆链接不是http://login.weibo.cn,而是http://login.weibo.cn/login/?ns= ...
- 微信群控系统制作系列一——java模拟登录网页版微信
PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...
- 模拟飞行 android,微软模拟飞行手机版
微软模拟飞行是由微软全力制作的一款航空模拟类游戏,玩家能够驾驶各种现实中存在的机型,在天空中翱翔.游戏提供了4K级别的高清地面,玩家能够在游戏中欣赏到地面的每一寸美景,赶紧下载这款微软模拟飞行手机版试 ...
- python模拟登录移动版微博
本博文主要介绍一下如何利用的python的requests包如何模拟登录移动版微博https://passport.weibo.cn/sso/login,好了废话不多说,下面主要介绍一下基本步骤: 运 ...
- JAVA使用HttpClient模拟登录正方教务系统,爬取学籍信息和课程表成绩等,超详细登录分析和代码注解
目录 前言 分析 代码实现 第一次GET POST登录 第二次Get 第三次GET 第四次GET 第五次GET 测试 完整代码 前言 最近在做一个APP,需要获取我们学校--武汉纺织大学皇家停水断电断 ...
- HttpClient模拟登录、HtmlUnit模拟登录,jsoup爬取登录后的内容(不带验证码)
一.HttpClient模拟登录是通过post或get请求,登录后抓取的是静态页面,动态页面使用HtmlUnit public static void main(String[] args) thro ...
- php rsa2 微博,php新浪通行证登录新浪微博登录模拟登录(浏览器版)2016
由于需要项目需要管理微博平台内容,集成登录微博管理平台功能,所以在抓取网页基础上探索了一下浏览器模拟登录,已经实现登录功能,采用JQuery和php结合的方式实现的,其中需要注意跨域访问问题,代码如下 ...
最新文章
- JZ2440驱动开发之环境搭建
- window 查找 java 进程中占用cpu比较高的线程
- centos 7 安装 google chrome 浏览器 (不是教程,只是为了以后自己可能用到)
- 三维重建:重定位问题
- 为什么声明性编码使您成为更好的程序员
- Mac系统下如何使用命令行方式启动MySQL
- docker前后端分离_Docker分离模式介绍
- python数据可视化雷达图程序_Python数据可视化之matplotlib
- 2022 年“苹果学者”名单公布,4 位华人学生位列其中
- 使用jQuery+huandlebars遍历中if判断
- 刀片系统服务器优点,刀片服务器是什么?介绍ibm刀片服务器优点
- android多开原理和检测。
- 逍遥模拟器上传服务器文件,逍遥模拟器后台操作
- 阿里 VP 贾扬清确认离职!尚未创立公司,方向或是 AI 架构?
- fatal: does not appear to a git repository
- POI导入和导出Excel
- linux ubuntu18.1安装教程,Ubuntu 18.04上Qmmp安装教程
- Spring核心容器功能
- Python中的错误和异常
- 紧跟热点:爱乐活联合Qzone推出《舌尖上的中国菜》