微博登录及删除粉丝/转发/评论的脚本[更新中]
来源:互联网 发布:黑暗之魂3优化 编辑:程序博客网 时间:2024/06/06 14:09
恩,慢慢更新,先挖个坑
写这个的主要原因是自己的微博被许多卖片的小姐姐们关注了,很恶心,准备一次清理掉
/*******--***********/
首先还是老样子,分析一下网站对账号密码的加密操作
老规矩,能从移动端入手就不从PC端入手,但是这次直接从PC入手,weibo.com(移动端weibo.cn)
当输入完账号按下tab切到密码框时,我们会捕捉到一个get请求,打开看看
https://login.sina.com.cn/sso/prelogin.php?checkpin=1&entry=mweibo&su=MTU2MDYxMzAwMDk=&callback=jsonpcallback1508381565848
返回的一个json串
retcode
0挨个分析一下,retcode毫无疑问是返回的状态值,servertime顾名思义是时间,对这个敏感的同学应该发现这是一个去除小数点的时间戳,即time.time()*1000
中间几个后面会用到,这边先不说,showpin是对验证码是否弹出的一个设定,前两天测试的时候总是会弹出一个验证码图片,即showpin=0,今天测试的时候不知道为什么这个值变成了0,即没有验证码,不清楚触发的条件是什么
再对域名传过去的值进行分析
checkpin=1&entry=mweibo&su=MTU2MDYxMzAwMDk=&callback=jsonpcallback1508381565848
checkpin应该是检验是否请求验证码的值(猜测),entry入口是手机版微博,callback即我们上面截图里的json串,下面就是这个su了
su是什么值呢,根据我们申请的时间分析,毫无疑问这就是我们的账号进行了加密之后的显示
在js中寻找一下给账号加密的函数(用mac的同学可以尝试一下Charles,很不错的软件,LInux下不清楚怎么用,所以直接firebug慢慢找了)
我们在js中找到了这么一句
opt.data.su = utf8_to_b64(trim(that.loginName.value));
OK,这就是对我们用户名的加密的过程了,trim是js包中的一个函数,寻找一下他的定义
function trim(str) {
return (!str) ? '' : str.toString().replace(/^\s+|\s+$/g, '');
}
utf8_to_b64即是base64的加密方法
总结一下我们可以获得 su = base64.b64encode(urllib.parse.quote_plus(user_name).encode('utf-8')).decode('utf-8')
那么第一个函数可以着手写了
def get_username(self): """ get legal username """ username_quote = urllib.parse.quote_plus(self.user_name) username_base64 = base64.b64encode(username_quote.encode("utf-8")) return username_base64.decode("utf-8")
那么用户名获取写完了后面毫无疑问要写密码的加密了
我们先尝试进行一次登录,看一下到底一次登录post了哪些数据
encoding
UTF-8
entryweibo
from gateway1
nonceZ3BWVX
pagerefer prelt54
pwencodersa2
qrcode_flagfalse
returntypeMETA
rsakv1330428213
savestate7
servertime1508384126
serviceminiblog
spb223228fbe8bd7510d338871081ca1e01b346e9ea0c47dff16f7a72432ebac05f3064c65e07d97d1a48d747c4db3b2b0d94e
7b109db80f1e9e430a4c2780f8b3e3a721723a30db41c951c03af6ea04d35c6f48e597fbf32e770fe574af1941bf6d348444
3d3c83d2114f83d3b649c01d25d57b779efa031169ac880b5ac3e694
sr1920*1080
suMTU2MDYxMzAwMDk=
urlhttp://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack
useticket1
vsnf1
其他就不看了,直接看到了sp,即加密之后的密码,我们拎出来看一下b223228fbe8bd7510d338871081ca1e01b346e9ea0c47dff16f7a72432ebac05f3064c65e07d97d1a48d747c4db3b2b0d94e
7b109db80f1e9e430a4c2780f8b3e3a721723a30db41c951c03af6ea04d35c6f48e597fbf32e770fe574af1941bf6d348444
3d3c83d2114f83d3b649c01d25d57b779efa031169ac880b5ac3e694
因为看到了rsakv这个列,所以我们几乎可以确定,加密过程中必然有rsa的参与,让我们看看js里能否找到加密的过程
if(me.service){request.service=me.service}if((me.loginType&rsa)&&me.servertime
&&sinaSSOEncoder&&sinaSSOEncoder.RSAKey){request.servertime=me.servertime;request.nonce=me.nonce;request
.pwencode="rsa2";request.rsakv=me.rsakv;var RSAKey=new sinaSSOEncoder.RSAKey();RSAKey.setPublic(me.rsaPubkey
,"10001");password=RSAKey.encrypt([me.servertime,me.nonce].join("\t")+"\n"+password)}else{if((me.loginType
&wsse)&&me.servertime&&sinaSSOEncoder&&sinaSSOEncoder.hex_sha1){request.servertime=me.servertime;request
.nonce=me.nonce;request.pwencode="wsse";password=sinaSSOEncoder.hex_sha1(""+sinaSSOEncoder.hex_sha1(sinaSSOEncoder
.hex_sha1(password))+me.servertime+me.nonce)}}request.sp=password;
有点乱,下午继续写
/*********************************************/
无意间看了看别人的博客,真是好看啊.........
继续/***********************************/
上面的对密码的加密我们可以看到几个熟悉的字眼, rsa,sha1,都是加密方式
代码已经基本写完了,丢在github上了,突然想把代码丰富成舆情分析类的,择日继续写
- 微博登录及删除粉丝/转发/评论的脚本[更新中]
- 爬取改版后的新浪微博粉丝评论,利用pandas存储。
- (python)热门话题的某些微博评论和转发数的抓取
- Dojo微博正式成立,粉丝招集中!
- (droid分享)新浪微博开发系列【十三】之微博的评论转发
- android 仿新浪微博转发 评论悬浮框的功能
- Android新浪微博获取评论信息、发表评论、转发微博等.
- hive的更新和删除操作脚本
- 微博粉丝
- QQ空间自动评论自动转发 微博自动自动转发神器带源码(超简单) 升级版
- Session的保存、删除及更新方法
- MongoDB的用户创建更新及删除
- Java抓取新浪微博及评论
- 在Linux中创建文本更新及回滚的shell脚本
- C++调用Python脚本碰到的问题及解决方法【更新中】
- 如何增加微博粉丝
- 微博粉丝-爬虫-记录
- 新浪微博(二十四)评论、转发、收藏一条微博
- Redis、Memcache和MongoDB的区别
- mysql ==SET FOREIGN_KEY_CHECKS==用法
- 2017.10.16 利用Xshell登录学校服务器
- ovirt4 The redirection URI for client is not registered
- js倒计时代码实现
- 微博登录及删除粉丝/转发/评论的脚本[更新中]
- 弹性与性能兼俱_阿里云神龙云服务器全解析
- JavaScript中操作Mysql数据库实例
- MySQL中使用表别名与字段别名的基本教程
- JBoss 7.1.1启动时遇到Address already in use: bind /127.0.0.1:9990的处理办法
- 利用 HashSet不重复特性返回素组中重复元素
- react map遍历
- 【spring】关于location路径的设置(相对路径和绝对路径)
- 你应该要掌握的7种回归分析方法