【原創】Python 特來電充電站資料爬蟲
阿新 • • 發佈:2022-05-24
本文僅供學習交流使用,如侵立刪! |
特來電充電站資料爬蟲
操作環境
- win10 、 mac
- Python3.9
- requests、Crypto、multiprocessing
分析
需求1:城市內所有站點列表
aHR0cHM6Ly9zZy50ZWxkLmNuL2FwaS9pbnZva2U/U0lEPUFBUy1BcHAwNDA3X1NlYXJjaFN0YXRpb24=
需求2:站點詳情資訊
aHR0cHM6Ly9zZy50ZWxkLmNuL2FwaS9pbnZva2U/U0lEPUFBUy1BcHAwNDA3X0dldFN0YXRpb25EZXRhaWxz
需求3:站點充電樁資訊
aHR0cHM6Ly9zZy50ZWxkLmNuL2FwaS9pbnZva2U/U0lEPUJhc2VBcGktQXBwMDMwNF9HZXRUZXJtaW5hbE9mU3RhdGlvbg==
總體來說資料介面還是很容易zhua到的,關鍵點是有兩個加密引數使用的DES加密:
X-token:有效期 15分鐘
AVER: 有效期 十秒
特來電使用了360殼,直接脫殼分析拿到key和iv根據時間戳生成即可
JS生成AVER
# 篇幅過長這兒只貼出關鍵點程式碼,拿到key和iv後使用工具自動生成還原始碼即可 function DES_Encrypt(word) { var srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.DES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); } function DES_Decrypt(word) { var srcs = word; var decrypt = CryptoJS.DES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypt.toString(CryptoJS.enc.Utf8); }
python 生成AVER
def get_AVER(self): """ 根據時間戳生成加密引數AVER """ ats = str(int(time.time())) cipher = DES.new(key.encode(), DES.MODE_CBC, iv.encode()) data = pad(ats.encode('utf8'), 16, style='pkcs7') encryptedbytes = cipher.encrypt(data) res = str(base64.b64encode(encryptedbytes), "utf-8") self.ATS = ats self.AVER = res # print('生成加密引數:AVER') # print(f'時間戳:{self.ATS} 加密後:{self.AVER}')
業務邏輯方面的程式碼就不貼了,根據實際業務寫就可以
效果
資源下載
https://download.csdn.net/download/qq_38154948/85450571
本文僅供學習交流使用,如侵立刪! |