新浪微博模拟登陆的加密算法

本文详细解析了微博登录过程中的加密算法实现,包括获取随机参数servertime和nonce,使用BASE64编码处理用户名,三次SHA1加密处理密码,并加入额外参数以增加安全性。登录失败后,通过请求特定URL实现成功登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目验收,被人家问道微博爬虫的登陆是怎么实现的,结果加密算法没有说明白,囧死……

本来就是参考的别人的程序,还没整明白,丢人丢大了。这次好好看下吧:

1, 在提交POST请求之前, 需要GET 获取两个参数。
       地址是:http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)
       得到的数据中有 "servertime" 和 "nonce" 的值, 是随机的,其他值貌似没什么用。

2, 通过httpfox 观察POST 的数据, 参数较复杂,其中 “su" 是加密后的username, "sp"是加密后的password。"servertime" 和 ”nonce" 是上一步得到的。其他参数是不变的。
    username 经过了BASE64 计算: username = base64.encodestring( urllib.quote(username) )[:-1];
    password 经过了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值来干扰。
    即: 两次SHA1加密后, 将结果加上 servertime 和 nonce 的值, 再SHA1 算一次。

    将参数组织好, POST请求。 这之后还没有登录成功。
    POST后得到的内容中包含一句 location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=101&reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3");

这是登录失败时的结果, 登录成功后结果与之类似, 不过retcode 的值是0 。接下来再请求这个URL,这样就成功登录到微博了。
记得要提前build 缓存。

以上来自:http://www.douban.com/note/201767245/

SHA1简介:

SHA1的全称是Secure Hash Algorithm(安全哈希算法) ,是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。
       SHA-1比MD5多32位密文,所以更安全。由于同样的原因,MD5比SHA-1的运算速度更快。

以上来自:http://www.cnblogs.com/yank/archive/2008/09/04/1283936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值