生活随笔
收集整理的這篇文章主要介紹了
每日自动签到工具的制作思路
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
背景
很多網(wǎng)站和app都使用簽到的方式來增加用戶的黏度和活躍度,每次給一點(diǎn)小獎勵。這的確是個有效的方式。于是就想,能不能做一個自動簽到的工具,直接放服務(wù)器上,定時執(zhí)行,這樣就不用自己每天去打開網(wǎng)站進(jìn)行簽到了。
理論
瀏覽器與web服務(wù)器的交互,本質(zhì)上都是通過http協(xié)議來實(shí)現(xiàn)。理論上用戶在瀏覽器上的所有行為,都可以通過構(gòu)造http數(shù)據(jù)包來模擬。由于http是無狀態(tài)的協(xié)議,所以服務(wù)器要通過cookie來識別不同的用戶。通常用戶首次訪問網(wǎng)站時,服務(wù)器會通過http頭SetCookie下發(fā)cookie,而瀏覽器每次向這個域名發(fā)起請求時,會帶上這個cookie(在未過期的時間內(nèi))。服務(wù)器通常用根據(jù)cookie,找到對應(yīng)的session,然后定位用戶。一些權(quán)限控制基本也是按這種方式(還有就是http頭帶上相應(yīng)的鑒權(quán)字段)。
思路
抓包。分析包。重放簽到數(shù)據(jù)包進(jìn)行驗(yàn)證。
聽起來像 ”把大象放到冰箱的三步“。實(shí)際的確不會這么簡單。
準(zhǔn)備
還要思考的問題
怎么進(jìn)行抓包和重放?如果進(jìn)行了簽到了,一天只有一次簽到。那么重放數(shù)據(jù)包,怎么知道,這個重放數(shù)據(jù)有沒有效果。如果要等到第二天再驗(yàn)證的話,時間過長。自己代碼寫錯了等別的錯誤,會不會要多次驗(yàn)證?抓到的數(shù)據(jù)包,進(jìn)行重放的時候,會不會有一些參數(shù)?這些參數(shù)是否會變化?如果變化,要怎么得到這個變化的值?自己登錄的cookie怎么拿到,如果發(fā)生了變化,怎么傳到重放的代碼中。長時間在服務(wù)器上實(shí)時執(zhí)行,出錯了,成功了怎么友好的通到自己,怎么樣好維護(hù)。
這樣一個小功能,怎么會有這么多問題?其實(shí)大部分程序員在為樣類似的事時,問題是想到了,同進(jìn)馬上解決方案也有了,所以可能沒有意識到這也會是一個問題。
問題的解決方案
有過抓包經(jīng)驗(yàn)的人,才會想到用這個思路解決問題。其實(shí)不是一個問題。常用的抓包工具有Fidder,burpsuite,wireshark 。Fidder 容易上手,burpsuite功能強(qiáng)大,但操作復(fù)雜。wireshark 比較底層,都可以看到http的分幾次的tcp的數(shù)據(jù)包,也可以看到tcp的握手過程。對于模擬http請求,java的可以用httpclient4,python可以用requests,如果處理的數(shù)據(jù)不多,用shell 調(diào)curl都可以。這個要分不同的情況來說,比如貼吧,可以對多個吧進(jìn)行簽到,可以驗(yàn)證多次,就改改參數(shù)。還有的論壇,一天只能簽收一次,就要用burpsuite的斷點(diǎn)功能,把這個請求斷下來,不真發(fā)給服務(wù)器。等驗(yàn)證好程序自己的重放程序沒別的問題之后。簡單的,就是一個url不變。如果有變化的值,就要去頁面中去找,這個參數(shù)由什么計(jì)算而來,然后在程序中進(jìn)行計(jì)算。這樣在代碼中又會多一道對源頁面進(jìn)行解析的過程。這個目前沒有想到好的解決方法,要么連登錄也一起模擬了,但有時候這個比較難,會有驗(yàn)證碼。目前的做法是,把cookie當(dāng)配置文件提出來,如果cookie過期了,更新下配置文件。拿cookie就用瀏覽器的調(diào)試工具。這是一個非功能性問題,如果是自己的玩具代碼,簡單的做一個日志,自己抓下日志,就知道過程。如果是做給別的用的,可以就要做一些額處的工作,配置文件說明,輸入?yún)?shù)據(jù)的有效性檢查,程序中的錯誤處理與記錄,最后的運(yùn)行結(jié)果通報(bào)。現(xiàn)在也有很多現(xiàn)成的方案,日志庫中可能配置郵件提醒。
實(shí)踐
等我實(shí)踐完了,再把過程放上來。
總結(jié)
可能知道的越多,可以選擇的就越多,可能實(shí)現(xiàn)起來就越簡單。
對小功能,也應(yīng)該用工程性的思維去想。如何快速實(shí)現(xiàn)基本功能,后面再改進(jìn)和迭代。
總結(jié)
以上是生活随笔為你收集整理的每日自动签到工具的制作思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。