【动弹有奖】——OSC登录并发送动弹分析(附python源码)

一、登录流程分析

    混OSC的都知道,想发动弹,首先你带先登录了才行,那么我们先来看下OSC的登录。
    这里我们直接通过chrome查看登录请求,就不分析页form代码了。打开登陆页,登录后如下:

    可以看到登录地址为:https://www.oschina.net/action/user/hash_login,表单提交了三个字段:email、pwd、save_login,分别对应页面上的账号、密码和记住登录信息。
    这个过程似乎很简单,只要用程序提交对应值就可以了。然而,细心的同学可能就会发现,pwd并不是我们填写的密码值,而是一个40位的字符串。那么这个字符串是怎么来的呢?我们来看一下网页源码,会发现表单form_user绑定了一个form-pre-serialize事件:


    可以一眼看到CryptoJS.SHA1(pwd),真像大白form-pre-serialize实在表单序列化之前触发,在方法中将pwd进行SHA1加密(其实如果经验丰富的话,看到字符串基本上就能猜出来,常用的几种加密,SHA1是40位,而MD5是16或32位的,用工具试下就能出来)。
    总结一下,我们登陆只需要将账号、SHA1加密的密码、save_login(0或1,也可不用管)提交到https://www.oschina.net/action/user/hash_login即可,然后记录下cookie中的oscid值,以保持登陆状态。此外如py的cookielib或java的httpclient4对于同一session都能自动管理cookies,我们只需要完成登录请求即可,无需再去处理cookie。

二、发动弹流程分析

    登陆完了就可以发动弹了,还是老方法,直接查看登录请求。我们发送一条动弹,可以看到请求信息如下:


    还是看url和form data,可一看到这次还是提交了三个参数,第三个就是动弹内容,前两个经测试对应用户账户,user_code应该是账号加密后的结果(各种解码无效,只有用base64解码为乱码,但是可以看出是"XXXX:账号"的格式),user应该是用户唯一id,不明白这里为什么不直接用账号。
    到这一步,我们已经可以用代码模拟发动弹了。

三、python实现代码

    见http://www.oschina.net/code/snippet_1183145_32921
    弄了个github,用的还不熟练,也上传了一份:https://github.com/NotBadPad/osc-dongtan

四、定时执行

    最终目的是能再春节期间每天定时发动弹的,但是现在代码只能自动登录和发动弹,却不能定时执行,那么是不是要写一个timer呢?其实不然,我们用系统的定时计划就能搞定(前提是装好了python环境):
    linux:crontab不解释
    windows:http://blog.csdn.net/gisinfo/article/details/6673100 (好像有点麻烦,也可以写个bat设置定时计划,bat里直接调用python命令执行)

哎,这是毕业之后第一篇博客,要戒骄戒躁沉下心,希望以后能坚持下去。

转载于:https://my.oschina.net/goodtemper/blog/196021

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值