天天看點

用python實作自動簽到腳本

1. 閑來無事,于是乎寫個腳本研究一下自動打卡。

2. 簽到原理:

模拟使用者進行自行輸入,然後登入,然後簽到,在研究過程中使用到了python的​

​selenium​

​包,本人在win10環境中進行測試使用,可以實作基本的自動打卡。

3. 需要的環境selenium

pip install selenium      

4. 安裝模拟的插件

需要從網上下載下傳模拟點選浏覽器的google浏覽器插件​

​chromedriver.exe​

​​,下載下傳連結:​​https://npm.taobao.org/mirrors/chromedriver/​​,需要找到與自己浏覽器适配的插件。(如何檢視自己Chrome适配的插件版本?如圖:)

用python實作自動簽到腳本

5. 下載下傳好後将插件放到Chrome.exe所在的檔案夾下,如圖:

用python實作自動簽到腳本

6. 開始工作結束,接下來進入代碼正題:

import time
import datetime
import random
from selenium import webdriver


def morning_clockin():
    # 找到插件的路徑,使用它驅動操作
    browser = webdriver.Chrome('C:\Program Files\Google\Chrome\Application\chromedriver.exe')
    
    # 選擇需要打卡的網址,填入你的簽到網頁
    browser.get('https://www.baudu.login')
    
    # 找到郵件和密碼輸入框的xpath,并在對應的位置送入賬号密碼
    browser.find_element_by_xpath('//*[@id="email"]').send_keys("724183***@qq.com")
    browser.find_element_by_xpath('//*[@id="passwd"]').send_keys("zhan******")
    
    # 找到登入按鈕的xpath,模拟點選
    browser.find_element_by_xpath('//*[@id="login"]').click()
    time.sleep(2)
    # 找到簽到按鈕的xpath,模拟簽到
    browser.find_element_by_xpath('/html/body/div[3]/div[7]/div/button').click()


if __name__ == '__main__':
    # 擷取當天的星期,周六日不打卡
    today = datetime.datetime.now().weekday() + 1
    if (today % 7 == 0) or (today % 7 == 6):
        print("今天是本周的第 {} 天,無需打卡!".format(datetime.datetime.now().weekday() + 1))
    # 工作日打卡
    else:
        # 早上打卡---設定0-300秒之間随機數打卡
        print(datetime.datetime.now())
        random_time = random.randint(0, 60)
        time.sleep(random_time)
        # 進行打卡
        morning_clockin()
        print(datetime.datetime.now())      

7. 完工!

如果有驗證碼,可以使用帶驗證碼的百度插件api進行調用,我是純内部系統無驗證碼,沒研究驗證碼部分。最後剩下的就是寫定時任務了,參考網上部落格即可!

附帶一篇寫的很詳細的Selenium WebDriver教程!​​傳送門​​

8. 更新,建立定時任務運作腳本