聲明:沃貝簽到網(wǎng)站已經(jīng)在10月初歸西, 但技術(shù)是不過時的哦。
final 前言叨B叨
前兩篇文章已經(jīng)和大家分享了驗證碼識別的關(guān)鍵兩個環(huán)節(jié): 圖像處理和機器識別. 今天這篇給大家說下登錄簽到這塊.拙劣地分析下沃貝簽到登錄頁面的拙劣, 以實現(xiàn)自動登錄簽到功能.
獲取登錄地址及請求參數(shù)
由于此網(wǎng)站走的是http, 并未加密, 所以可以很容易看到來回的傳參.
登錄頁面分析(地址大家看截圖哈)
納尼?短信驗證碼?? 怎么搞? 以上是我發(fā)現(xiàn)網(wǎng)站改版后的心情. 之前是支持密碼和短信驗證碼兩種登錄方式的, 現(xiàn)在只能短信驗證碼. 看看前端源碼發(fā)生了什么:
看嘛, 大段代碼注釋掉了, 原封不動開發(fā)人員的懶惰造就了我們的省心. 放開看看效果
吶, 東西都還在.
再看看相關(guān)js, 艾瑪, 愛死你了, 也是簡單注釋, 所有接口都還在.
把這個checkbox 的js 注釋拿掉, 在控制臺執(zhí)行下, 然后前端頁面選擇密碼登錄, 隨便輸個手機號,和密碼, 執(zhí)行提交.查看請求和返回:
好東西來咯: Request header 拿到了, Requst URL 拿到了, FormData 拿到了.接下來, 只需要寫幾行代碼, 嵌入我們之前寫好的驗證碼識別程序, 自動登錄就妥妥的啦. (關(guān)于簽到頁面也是同理, 我們可以正常登錄網(wǎng)頁之后簽到,然后查看請求和返回, 這里就不再重復(fù)說一遍了, 反正簽到的url我已經(jīng)拿到了, 如果你看了我GitHub上的代碼就曉得了)
python 登錄和簽到
我用的是requests去登錄的網(wǎng)站, 大家機器上如果沒有就 pip install 一下.
下面簡單說下登錄代碼
1. 首先因為是登錄簽到兩步走, 必須得有個session來保持你的登錄狀態(tài), 所以用了requests.session()
2. 在登錄之前,先保存驗證碼后進行識別, 識別好之后將最后組合好的參數(shù)post到登錄接口
3. 得到返回的登錄成功消息后, 繼續(xù)請求簽到接口地址. 然后依據(jù)返回數(shù)據(jù)判斷簽到成功與否.
至此, 我們的簽到任務(wù)完成.
linux 定時任務(wù)
當(dāng)我們需要定時去執(zhí)行腳本或其他程序時, linux下有個叫cron的東東可以幫我們實現(xiàn). 具體用法:
查看當(dāng)前配置: crontab -l
修改當(dāng)前配置: crontab -e
具體格式為:
* * * * * /bin/execute/this/script.sh
5個星星不是指酒店, 按順序分別代表以下:
minute (from 0 to 59)
hour (from 0 to 23)
day of month (from 1 to 31)
month (from 1 to 12)
day of week (from 0 to 6) (0=Sunday)
更多詳細(xì)用法參考 http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/
我捏,是把簽到腳本放在了樹莓派上, 每天早晨7點運行腳本:
0 7 * * * cd /home/pi/wowsign/ && python autosign.py > /dev/null
結(jié)語
好了, 這自動簽到三部曲算是結(jié)束了. 還是那句話,歡迎關(guān)注,歡迎交流.