天天看點

Python 網頁自動登入(簽到)

背景:因為某些原因,每天上網必須登入某個網頁,覺得很麻煩 是以就寫了這樣一個自動登入網頁的東西

使用軟體Fiddler.exe

注:無法識别https時,可安裝Fiddler  https證書,具體怎樣安裝 百度一下你就知道

  • 在網頁填寫好賬号密碼,準備登陸
  • 打開Fiddler軟體, 設定好監控的浏覽器
Python 網頁自動登入(簽到)

更新: 2020年5月,突然發現抓不到浏覽器請求, 360急速的抓不到了,可以換成IE或edge不進行指定程序,即可抓到

  • 在準備好的網頁上點選登陸
  • 在Fiddler中檢視截獲的資訊
Python 網頁自動登入(簽到)
  • 如圖所示,檢視此類型請求,點選軟體右側web圖表選項,進行檢視
Python 網頁自動登入(簽到)
  • 找到帶有賬号密碼的資料連接配接 ,按照下面的代碼,将之對照填寫
  • 将下面代碼中的URL替換為目前資料的URL
Python 網頁自動登入(簽到)

Python代碼:

import urllib.request
import urllib
import gzip
import http.cookiejar
import sys
import os

# 定義一個方法用于生成請求頭資訊,處理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

# 定義一個方法來解壓傳回資訊

def ungzip(data):
    try:        # 嘗試解壓
        print('正在解壓.....')
        data = gzip.decompress(data)
        print('解壓完畢!')
    except:
        print('未經壓縮, 無需解壓')
    return data

# 封裝頭資訊,僞裝成浏覽器,将連接配接标頭内的鍵值對複制于此
header = {
    'Connection': 'keep-alive',
    'Host': '20.20.20.2',
    # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'
    # 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}

url = 'http://20.20.20.2/ac_portal/login.php'#右鍵點選選中連接配接,将複制的URL粘貼于此
opener = getOpener(header)

id = 'admin'  # 你的使用者名
password = '*******'  # 你的密碼,需要填寫!!
postDict = {
    'opr': 'pwdLogin',
    'userName': id,
    'pwd': password,
    'rememberPwd': '0',
}

postData = urllib.parse.urlencode(postDict).encode()
try:
    op = opener.open(url, postData)
except:
    print("登入失敗")
    os.system('pause')  # 按任意鍵繼續
    sys.exit(0)

data = op.read()
data = ungzip(data)

print(data)
           

也可以用pyinstaller打包成exe檔案  放其他電腦上都可以用

學習來源:https://blog.csdn.net/u283056051/article/details/49946981/