Windows系統中Python實現每日定時自動登陸簽到

以前說要每週寫的。。而後最近忙着畢業就一直沒動。>.<感受月更都困難了。前端

問題描述

在天天好比10點到11點之間定時自動登錄網站,簽到python

實現思路

  1. 使用fiddler抓包工具先登錄一遍,把請求的地址,header等信息都拿到。web

  2. 使用python寫一個腳本,模擬瀏覽器向服務器發送登錄,簽到請求chrome

  3. 使用批處理bat來寫幾句話,隨機在一小時內運行python腳本json

  4. 使用Windows自帶的計劃任務,定時每日10點運行bat腳本瀏覽器

另外,以前不想那麼麻煩寫代碼,還去找了一個叫作按鍵精靈的軟件來模擬執行。不過那個軟件是模擬鼠標和鍵盤,因此執行的時候會有界面出現,並且你的鼠標和鍵盤不能動,因此後來放棄了。若是以爲這個麻煩也能夠試試那個。能夠生成一個按鍵小精靈的exe,用計劃任務定時執行。這個軟件也很邪教啊,還能夠自動截圖。服務器

實現過程

1、fiddler抓包

這個直接下載而後上手作就能夠了,打開工具,而後進行正常的登錄,每個請求的過程都有。主要目的是找到每一個發送請求的url和header信息。
好比我練習網站的登錄請求發送的url是http://XXX.com/Home/Login/log...cookie

這個具體的url也能夠用谷歌瀏覽器chrome進入審查元素去選取按鈕,簡陋一些的網站能夠看到js代碼是怎麼跳轉過去的。若是遇到一些按鈕點擊一次之後沒法再點,能夠用這個辦法找它的url。app

2、python寫請求腳本

這裏用這裏用python3寫的,這部分總結晚點寫:Pdom

import urllib.request  
import urllib  
import gzip  
import http.cookiejar  
import time
  
# generate request header, deal with cookie  
def getOpener(head):  
    # deal with the Cookies  
    cj = http.cookiejar.CookieJar()
    pro = urllib.request.HTTPCookieProcessor(cj)  
    opener = urllib.request.build_opener(pro)  
    header = []  
    for key, value in head.items():  
        elem = (key, value)  
        header.append(elem)  
    opener.addheaders = header  
    return opener  
  
#encapsulate the header as the browser
header = {  
    'Connection': 'Keep-Alive',  
    'Accept-Language': 'zh-CN',  
    'Accept': 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*',  
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)',  
    'Accept-Encoding': 'gzip, deflate',  
    'X-Requested-With': 'XMLHttpRequest',  
    'Host': 'http://XXX.com/',  
}  


url = 'http://XXX.com/Home/Login/login_submit'  
opener = getOpener(header)  
  
id = 'xxxx'#你的用戶名  
password = 'fddafda'#你的密碼,抓包是什麼就輸什麼,有時候是md5加密的
postDict = {  
        'logname': id,  
        'passwd': password,  
}  
#這裏的post數據的json能夠檢查fiddler的webform裏會有。

postData = urllib.parse.urlencode(postDict).encode()  
op = opener.open(url, postData)  
data = op.read()  
print(data)

#簽到
url = 'http://XXX.com/index/index/sign/P/in'
op = opener.open(url)
data = op.read()
print(data)

3、bat調用python腳本

@echo off
rem 這裏就是先用cd命令轉到.py文件所在的地址
C:
cd C:\Windows\

rem 用random生成一個數字對3600秒取餘獲得一個一小時內的隨機秒數存在rd中
set /a rd=%random%%%3600
rem ping用於等待若干秒
ping -n %rd% 127.0.0.1 > nul 
python test.py

rem 生成日誌
set  today=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo login at %today%_%time:~0,2%:%time:~3,2%  >> E:\LogFile\log%today%.txt
exit

rem是註釋能夠刪,python裏面還有一個pythonw.exe調用這個能夠徹底不出現界面。若是命令行cmd裏面沒有python,去環境變量path裏面加一下python所在的地址。

總結

實現這個小任務,讓我發現python的功能確實很大,並且能夠用的庫也很是多。這裏主要是在廖雪峯的python教程中查看的python基本的東西。而後搜了一個例子。模仿着作的。

另外,對前端的啓發也蠻大的。防止這些爬蟲去解析前端的信息,主要能夠有如下措施:

  • 對全部發布的網站中JS進行壓縮混淆加密

  • 一些關鍵數據能夠用圖片展現,增長一點爬取難度

  • 登錄設置驗證碼和動態token

相關文章
相關標籤/搜索