Linux下使用crontab命令以及Python腳本實現自動簽到


  關於這一部分, 我首先介紹下如何實現使用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帶來困擾. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM