前段時間一直癡迷小說,但是苦于ta建立用硬幣下載小說的功能,每每看到想看的小說,卻被銀幣余額勸退,所以我簡單寫了一個自動登錄的腳本,銀幣從此媽媽再也不用擔心我是個沒有銀幣的孩子了,
總而言之,我剛好學了一點逆向,同時我又不想每天費勁登錄水銀幣,于是就寫了這么一個腳本,
登錄分析:
(1) 找到登錄api

可以看到是一個post請求,我們只需模擬請求就可以完成登錄,
(2) 分析引數

如果你多請求幾次可以發現, 這里的表單資料基本上都是不變的,除了fromhash這個引數,而formhash又可以從html頁面直接匹配,
到這里登錄就分析完畢了,接下來就是代碼實作了
# -*- coding:utf-8 -*- import re import requests class Comment: def __init__(self, user_name, user_password, c_url): """ 自動登錄賬號 :param user_name: 用戶名 :param user_password: 用戶密碼 :param c_url: 評論書籍url """ self.user_name = user_name self.user_pwd = user_password self.c_url = c_url self.base_url = "https://www.feb.sbooook.com/" self.session = requests.session() self.user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.76" self.logging_api = f"{self.base_url}member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 " # 登錄介面 self.headers = { "Cache-Control": "no-cache", "Content-Type": "application/x-www-form-urlencoded", "Pragma": "no-cache", "Referer": self.base_url, "User-Agent": self.user_agent } self.book_page = self.session.get(url=self.c_url, headers=self.headers).text # 匹配fromhash self.formhash = re.findall('<input type="hidden" name="formhash" value="https://www.cnblogs.com/my-daily/p/(.*)" />', self.book_page)[0] # 表單引數 data =https://www.cnblogs.com/my-daily/p/ { 'username': self.user_name, 'password': self.user_pwd, 'formhash': self.formhash, 'quickforward': "yes", 'handlekey': "ls"} # 登錄賬號 res = self.session.post(url=self.logging_api, headers=self.headers, data=https://www.cnblogs.com/my-daily/p/data).text if f"window.location.href='https://www.cnblogs.com/my-daily/p/{self.base_url}';" in res: print(f'賬號:{self.user_name} 登錄成功!!!') else: print('出現錯誤,請重試!!!') if __name__ == '__main__': comment_url = "https://www.feb.sbooook.com/forum.php?mod=viewthread&tid=342446&extra=" # 評論書籍 Comment('your_name', 'your_pwd', comment_url)
至此登錄已經完畢,不要問我光登錄有什么用,登錄都已經那其他的評論、下載等功能是不是就可以,,,
順帶提一下,它的服務器很容易崩潰,也就是說在現實其他功能的時候,盡量不用使用執行緒或多行程,用的話也最好控制一下最大行程/執行緒數,不要給人家服務器搞崩了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543648.html
標籤:Python
上一篇:Python 發展趨勢:與 Rust 深度融合、更易于撰寫 Web 應用
下一篇:Python 型別注解
