關於這一部分, 我首先介紹下如何實現使用Python腳本實現簽到功能其實,linux下有個命令叫做curl,完全可以完成模擬簽到的功能.有這個想法完全是因為實驗室的學長開發了一款App,上邊有個起床簽到,還有排名,為了能拿個首簽...當然,我也只用過一次,並不想為學長開發的東西帶來任何的規則上的擾亂.
言歸正傳
首先,因為是手機上的App, 所以,我們需要抓包看下它具體的URL以及發送的內容是什么,關於這部分內容我就不在贅述了,我實現的功能主要有模擬發布狀態和模擬簽到兩種功能,兩個的URL也是不同的.如何在特定的時間段內簽到呢? 我們可以隨機出一個0-900的數t,然后sleep(t), 比如說我在5.00的時候執行這個腳本,那么我就會在5.00-5.15之內簽到了.
另外, 我如何查看我的腳本是否執行成功了呢?或者說是我的腳本執行結果是什么?所以我打印了一下簽到后返回的requests.text,但是重定向的時候發現有錯誤,一查原來是編碼的問題,他返回的是ASCII編碼的,但是其中含有中文字符,所以需要把他編碼成utf-8的形式就可以成功顯示了.
# coding=utf-8 import requests import random import time topic_url = "http://XXXX.XXXX.com/XXXX/XXXX/XXXX/XXXX" sign_url="http://XXX.XXXXX.com/xxx/xxxx/xxxx/" content = "你想說的內容" headers = { "AUTHORIZATION": "TOKEN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Host": "XXX.XXXXX.com", "Connection": "Keep-Alive", "Accept-Encoding": "gzip", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "User-Agent": "okhttp/3.2.0" } def topic(): requests.post(topic_url,data={"content": content}, headers=headers) def sign(): r = requests.post(sign_url, data={"rise_rank":"1"}, headers=headers) print r.text.encode('UTF-8') t = random.randrange(0, 900) print t time.sleep(t) for i in range(0, 20): sign() time.sleep(1)
好了,我們已經寫完了腳本,那么我們如何讓他在早上的時候(比如說5點)自動執行呢?
Linux下有一個命令叫做crontab
首先
crontab -e
編輯你的定時任務,編輯格式如下
# min hour day mon week command # * * * * * python /home/yourdir/yourpf.py >> /home/youdir/log 0 5 * * * python /home/yourdir/yourpf.py >> /home/youdir/log
這樣寫就可以了,具體的用法可以到網上去查一查
#列出所有的任務 crontab -l #刪除所有的任務 crontab -r
只是用來討論技術,希望看這篇博客的人不要對他人的網站或者APP帶來困擾.