上篇介绍了如何模拟登录手机版微博,过程还是比较简单的,没有设计到复杂的加密部分。

登录Web版微博的过程还是一样的,只不过这次需要提交的数据多一点。

public static Cookie[] getWCookies(String username,String password) throws HttpException, IOException{HttpClient client =null; PostMethod post = null;GetMethod get = null;try{client = new HttpClient();client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);post = new PostMethod("http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16)");    String data = getServerTime();    String nonce = makeNonce(6);NameValuePair[] nvps = new NameValuePair[] {new NameValuePair("entry", "weibo"),new NameValuePair("gateway", "1"),new NameValuePair("from", ""),new NameValuePair("savestate", "7"),new NameValuePair("useticket", "1"),new NameValuePair("ssosimplelogin", "1"),new NameValuePair("vsnf", "1"),new NameValuePair("vsnval", ""),new NameValuePair("su", encodeAccount(username)),new NameValuePair("service", "miniblog"),new NameValuePair("servertime", data),new NameValuePair("nonce", nonce),new NameValuePair("pwencode", "wsse"),new NameValuePair("sp", new SinaSSOEncoder().encode(password, data, nonce)),new NameValuePair("encoding", "UTF-8"),new NameValuePair("returntype", "META"),new NameValuePair("url","http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack") };post.setRequestBody(nvps);client.executeMethod(post);String url = post.getResponseBodyAsString().substring(post.getResponseBodyAsString().indexOf("http://weibo.com/ajaxlogin.php?"),post.getResponseBodyAsString().indexOf("code=0")+6);get = new GetMethod(url);client.executeMethod(get);}catch(IOException e){e.printStackTrace();}finally{get.abort();post.abort();}return client.getState().getCookies();}

其中密码部分进行了加密,加密的算法在网页的js文件里,网上有人把它改成了Java代码。

下面是SinaSSoEncoder类:

public class SinaSSOEncoder {private boolean i = false;private int g = 8;public SinaSSOEncoder() {}public String encode(String psw, String servertime, String nonce) {String password;password = hex_sha1("" + hex_sha1(hex_sha1(psw)) + servertime + nonce);return password;}private String hex_sha1(String j) {return h(b(f(j, j.length() * g), j.length() * g));}private String h(int[] l) {String k = i ? "0123456789ABCDEF" : "0123456789abcdef";String m = "";for (int j = 0; j < l.length * 4; j++) {m += k.charAt((l[j >> 2] >> ((3 - j % 4) * 8 + 4)) & 15) + ""+ k.charAt((l[j >> 2] >> ((3 - j % 4) * 8)) & 15);}return m;}private int[] b(int[] A, int r) {A[r >> 5] |= 128 << (24 - r % 32);A[((r + 64 >> 9) << 4) + 15] = r;int[] B = new int[80];int z = 1732584193;int y = -271733879;int v = -1732584194;int u = 271733878;int s = -1009589776;for (int o = 0; o < A.length; o += 16) {int q = z;int p = y;int n = v;int m = u;int k = s;for (int l = 0; l < 80; l++) {if (l < 16) {B[l] = A[o + l];} else {B[l] = d(B[l - 3] ^ B[l - 8] ^ B[l - 14] ^ B[l - 16], 1);}int C = e(e(d(z, 5), a(l, y, v, u)), e(e(s, B[l]), c(l)));s = u;u = v;v = d(y, 30);y = z;z = C;}z = e(z, q);y = e(y, p);v = e(v, n);u = e(u, m);s = e(s, k);}return new int[] { z, y, v, u, s };}private int a(int k, int j, int m, int l) {if (k < 20) {return (j & m) | ((~j) & l);}if (k < 40) {return j ^ m ^ l;}if (k < 60) {return (j & m) | (j & l) | (m & l);}return j ^ m ^ l;}private int c(int j) {return (j < 20) ? 1518500249 : (j < 40) ? 1859775393: (j < 60) ? -1894007588 : -899497514;}private int e(int j, int m) {int l = (j & 65535) + (m & 65535);int k = (j >> 16) + (m >> 16) + (l >> 16);return (k << 16) | (l & 65535);}private int d(int j, int k) {return (j << k) | (j >>> (32 - k));}private int[] f(String m, int r) {int[] l;int j = (1 << this.g) - 1;int len = ((r + 64 >> 9) << 4) + 15;int k;for (k = 0; k < m.length() * g; k += g) {len = k >> 5 > len ? k >> 5 : len;}l = new int[len + 1];for (k = 0; k < l.length; k++) {l[k] = 0;}for (k = 0; k < m.length() * g; k += g) {l[k >> 5] |= (m.charAt(k / g) & j) << (24 - k % 32);}return l;}}

OK,结束,睡觉!

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

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

    手机版微博单点登录的URL为:http://3g.sina.com.cn/prog/wapsite/sso/login.php 我们先来看一下这个网页源代码: <html><head ...

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

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

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

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

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

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

  5. QQ登录协议php,QQ登录 - web版

    [![](http://static.phpgrace.com/statics/images/downcode.png)](http://www.phpgrace.com/tools/download ...

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

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

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

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

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

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

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

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

最新文章

  1. mysql导出数据到txt太慢_分享:mysql导出数据到txt文件
  2. jboss5 启动时报HsqlException:length must be specified in type definition:VARBINARY错误
  3. awk和cut分割字符区别
  4. 【Python】青少年蓝桥杯_每日一题_4.21_s=a+aa+aaa+aaaa的值
  5. confluence 5 mysql_Centos 6.5 安装 Atlassiana Crowd+JIRA+Confluence(Wiki)之一 数据库篇(MySQL5.1)...
  6. SAP Spartacus component-wrapper自定义指令的实现
  7. TCP三次握手建立连接
  8. python%20是什么东西
  9. 载入样式表单出错: 分析 XSLT 样式表单失败
  10. matlab转python很难吗_MATLAB在逐渐被Python淘汰吗?
  11. linux wine-qq介绍2009版QQ精简
  12. python 读写tiff文件
  13. 什么是 0day 漏洞,1day 漏洞和 nday 漏洞?
  14. 【附源码】Java计算机毕业设计基于微信小程序停车系统(程序+LW+部署)
  15. 用matlab实现任意点图片的旋转_(实验二) --- 图像旋转变换---matlab实现
  16. PsychoPy开源免费刺激呈现软件的下载与安装方法
  17. http://localhost:8080/ 无法访问
  18. 【统计学习方法】朴素贝叶斯
  19. fftshift小技巧
  20. pixel手机升系统

热门文章

  1. C#对磁盘路径字符串的相关操作
  2. 我真的需要读软件工程的硕士吗?
  3. powermock跳过某方法_如何使用powermock验证内部方法调用?
  4. 包围盒算法基本知识(一)
  5. 半导体器件特性曲线测试方法的研究
  6. Cloudflare免费更换节点,加速你的网站
  7. android开发笔记之android.mk文件
  8. 小韦老师@神犇营-my0119-奥运奖牌计数
  9. 毕设--(AS)基于安卓的多功能日记本
  10. 了解你的敌人:跟踪僵尸网络