由于工作需要,花了近2天时间成功实现了腾讯微博的模拟登陆,现总结如下供学习和应用者相互交流。

(1)腾讯微博和新浪微博的登陆加密思路很相似,都是要经过两道手续,一是要先获取加密参数,二是要加密计算。

新浪weibo是要获取serverTime和nonce,而腾讯weibo则是先获取verifyCode和pt.uin(是由先传的qq或是微博帐号帐号获取)才可以。

(2)获取verifyCode和pt.uin,通过firebug或是httpWatch等抓取包工具可以分析出方式,如下:

(3)分析加密过程,其加密过程完全依靠js来实现,如下图所示,标红的下方即为加密的js源码,格式化之后,即可看一清而楚,

其它核心在于对密码的加密过程,分析之后,可获取核心加密部分,如下图:

A: 即为取得输入密码的值。

B:用js写的md5算法先对password原始值加密,之后用js的hexchar2bin函数将其加上“\x"16进制化。

C:将上一步的值+刚刚在第2步获取到的pt.uin再做一次md5加密。

D:上一步的值+刚刚在第2步获取到的verifyCode.upperCase之后再一步md5密码,

经A、B、C、D之后最终形成ecoding之后的密码,追加到js中的A变化,即get请求的字符串中。

(4)对于模拟登陆主要是密码加密算法的破解,其它的都很容易拼起来,如腾讯weibo中最后请求串

只有p和verifyCode是变的,而这两个都已通过上边可以获得,故此时用HttpClient等做get请求,会得到如下的内容:

此时代表登陆成功。

以上描述均为正常顺利情况下,当然中间会有很多意想不到的问题,比如分析和加密过程,某些重要参数,如Host和Referer参数的设置等。因为时间原因我就不细说了,但有一个让我费了很大劲的地方我着重提一下,即

(5)加密时候,算法一致总是得不到与抓包时候一致密加密结果。我是用java做的开发,在此重点讲下关于java在这块遇到的问题。

提供2两种思路,

1、将远程的login_div.js下载到本地搭建一个web project,用同样的verifyCode和pt.uin做一个本地的加密测试,看结果是否和浏览器抓包时候一致。

2、将1中的测试成之后,封装成一个js,用java的ScriptEngine去调用,就省去了用java实现一下腾讯用js写的md5加密算法了,我最后也得到了理想的结果。中间有个插曲困扰了我一天之久,java的scriptEngine调用js方法encoding时,传入一个"......"这样的值时,js加密总是不一致,暂未想到真正原因,最后用了这样的方法,即将pt.uin用java方法还原成了112233.....,再通过ScriptEngine调用js的hexchar2bin去封装该串成16进制的方法,再加密时候就完全一致了。

基本是这个情况,若有问题,欢迎交流~

腾讯微博采集器 模拟登陆 2012-11-26版相关推荐

  1. dz3.2火车头 php接口,DiscuzX3.4论坛火车头采集器免登陆发布模块(附测试接口)!...

    今天来分享"DiscuzX3.4论坛火车头采集器免登陆发布接口模块(可测试)"大家可以复制下面的百度云地址进行下载,本接口是亲测的,压缩包无加密,可以直接使用,并且我们附有了使用教 ...

  2. 如何不通过调用官方微博api制作一个第三方微博app---在Android开发模拟登陆微博(weibo.cn)

    前段时间对一个第三方微博app---Share的实现原理非常感兴趣,也想自己实现一个自己的第三方微博app.目标有了,那就去查一下微博数据怎么获取吧.原来微博是有开放第三方接口的,只需要申请一个app ...

  3. dz3.2火车头 php接口,DiscuzX3.4论坛火车头采集器免登陆发布模块(带测试接口)-百度云...

    解压后看到的文件有: 其中discusX3.0.wpm 是发布模块,dz测试接口.ljobx 是用于测试的规则,以后不要问规则该怎么写了,就按照这个格式写. 1,上传接口 根据自己的网站编码选择GBk ...

  4. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...

    之前已经介绍过了网络相关的一些基础知识了: 以及简单的网页内容抓取,用C#是如何实现的: 现在接着来介绍,以模拟登陆百度首页: 为例,说明如何通过C#模拟登陆网站. 不过,此处需要介绍一下此文前提: ...

  5. Dedecms 火车采集器免登陆发布接口,自动生成上下篇、栏目页、首页

    <?php /********密码验证***********/ $password='123456'; //这个密码是登陆验证用的.您需要在模块里设置和这里一样的密码....注意一定需要修改. ...

  6. DiscuzX3.4论坛火车头采集器免登陆发布模块(带测试接口)

    解压后看到的文件有: 在这里插入图片描述 其中discusX3.0.wpm 是发布模块,dz测试接口.ljobx 是用于测试的规则,以后不要问规则该怎么写了,就按照这个格式写. 文件:590m.com ...

  7. 百度云模拟登陆批量保存Python版(一)

    开源地址: 老规矩,多说无益,直接亮成品 一.背景分析 相信做过爬虫的各位都会发现各大网站为了缓解自家服务器压力,而将我们需要的保存在云盘中,仅以分享分享链接的方式来分享文件.其中云盘分享又以百度云盘 ...

  8. c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月29日】

    一.c# WebView2简介   1.一开始使用WebBrowser,因为WebBrowser控件使用的是ie内核,经过修改注册表切换为Edge内核后, 发现Edge内核版本较低,加载一些视频网站提 ...

  9. php selenium模拟登陆,python+selenium自动化实战携带cookies模拟登陆微博

    首先获取cookies,使用手机扫码登录斗鱼,然后利用网页cookies保存在本地 有些同学可能会问,这不是相当于自己登录了吗,还模拟什么呢,其实来说这是一次获取cookies可以使用很久 #!/us ...

最新文章

  1. 自助收银导致货损增加,阿里安全如何用视频识别AI应对?
  2. mysql对数据库的备份和还原
  3. SVM 实现与代码(转)
  4. python 读取csv_python 读取csv 文件
  5. esmini LongSpeedAction修改
  6. 定了!2020年,6种将死的编程语言!
  7. Pytest fixture参数化params
  8. IOT---(4)物联网平台架构设计
  9. 60-100-024-使用-MySQL 表锁
  10. 古诗词知识图谱(一)
  11. 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 ModificationFunctionMapping 元素中没有支持当前操作的 Inse...
  12. python安装后桌面没有显示图标_Win10安装软件后找不到软件图标如何解决
  13. Flea CodeForces - 32C (思维)
  14. 复制网页内容自动添加版权信息的方法
  15. 关于YunFile网盘的一些使用技巧与心得
  16. 批量手机号归属地查询
  17. Python中程序的基本结构
  18. python安装cpickle_python中cPickle
  19. 滴滴出行 DoKit 2.0 - 泛前端开发者的百宝箱
  20. 使用hinfric和hinflmi函数设计H∞输出反馈控制器(含实现程序)

热门文章

  1. 【githubgirl】开源的画板与笔记工具,可用于日常文字记录和头脑风暴等场景,也可绘制草图或图标
  2. python文本自动伪原创_新手一天30篇伪原创,快速在线生成原创文章
  3. Leetcode 02.分式化简
  4. 注册机偷懒写法2、之直接调用源程序的函数
  5. mobiscroll插件(设置时间范围)
  6. 扫描二维码登陆实现原理
  7. c语言课程设计进制转换摘要,C语言课程设计-进制转换.doc
  8. elementui 上传图片转base64
  9. ssd固态硬盘怎么分区
  10. [计算机组成原理]2-4、定点数详解