混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
登錄完了就能夠發動彈了,仍是老方法,直接查看登陸請求。咱們發送一條動彈,能夠看到請求信息以下: git
仍是看url和form data,可一看到此次仍是提交了三個參數,第三個就是動彈內容,前兩個經測試對應用戶帳戶,user_code應該是帳號加密後的結果(各類解碼無效,只有用base64解碼爲亂碼,可是能夠看出是"XXXX:帳號"的格式),user應該是用戶惟一id,不明白這裏爲何不直接用帳號。
到這一步,咱們已經能夠用代碼模擬發動彈了。
github
見http://www.oschina.net/code/snippet_1183145_32921
弄了個github,用的還不熟練,也上傳了一份:https://github.com/NotBadPad/osc-dongtan
chrome
最終目的是能再春節期間天天定時發動彈的,可是如今代碼只能自動登陸和發動彈,卻不能定時執行,那麼是否是要寫一個timer呢?其實否則,咱們用系統的定時計劃就能搞定(前提是裝好了python環境):
linux:crontab不解釋
windows:http://blog.csdn.net/gisinfo/article/details/6673100 (好像有點麻煩,也能夠寫個bat設置定時計劃,bat裏直接調用python命令執行) windows
哎,這是畢業以後第一篇博客,要戒驕戒躁沉下心,但願之後能堅持下去。 cookie