【動彈有獎】——OSC登陸併發送動彈分析(附python源碼)

1、登陸流程分析

    混OSC的都知道,想發動彈,首先你帶先登陸了才行,那麼咱們先來看下OSC的登陸。
    這裏咱們直接經過chrome查看登陸請求,就不分析頁form代碼了。打開登錄頁,登陸後以下: java

    能夠看到登陸地址爲:https://www.oschina.net/action/user/hash_login,表單提交了三個字段:email、pwd、save_login,分別對應頁面上的帳號、密碼和記住登陸信息。
    這個過程彷佛很簡單,只要用程序提交對應值就能夠了。然而,細心的同窗可能就會發現,pwd並非咱們填寫的密碼值,而是一個40位的字符串。那麼這個字符串是怎麼來的呢?咱們來看一下網頁源碼,會發現表單form_user綁定了一個form-pre-serialize事件:
python


    能夠一眼看到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。
linux

2、發動彈流程分析

    登錄完了就能夠發動彈了,仍是老方法,直接查看登陸請求。咱們發送一條動彈,能夠看到請求信息以下: git


    仍是看url和form data,可一看到此次仍是提交了三個參數,第三個就是動彈內容,前兩個經測試對應用戶帳戶,user_code應該是帳號加密後的結果(各類解碼無效,只有用base64解碼爲亂碼,可是能夠看出是"XXXX:帳號"的格式),user應該是用戶惟一id,不明白這裏爲何不直接用帳號。
    到這一步,咱們已經能夠用代碼模擬發動彈了。
github

3、python實現代碼

    見http://www.oschina.net/code/snippet_1183145_32921
    弄了個github,用的還不熟練,也上傳了一份:https://github.com/NotBadPad/osc-dongtan
chrome

4、定時執行

    最終目的是能再春節期間天天定時發動彈的,可是如今代碼只能自動登陸和發動彈,卻不能定時執行,那麼是否是要寫一個timer呢?其實否則,咱們用系統的定時計劃就能搞定(前提是裝好了python環境):
    linux:crontab不解釋
    windows:http://blog.csdn.net/gisinfo/article/details/6673100 (好像有點麻煩,也能夠寫個bat設置定時計劃,bat裏直接調用python命令執行) windows

哎,這是畢業以後第一篇博客,要戒驕戒躁沉下心,但願之後能堅持下去。 cookie

相關文章
相關標籤/搜索