软件工程

【原创】Python 特来电充电站数据爬虫

本文主要是介绍【原创】Python 特来电充电站数据爬虫,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文仅供学习交流使用,如侵立删!

特来电充电站数据爬虫

操作环境

  • 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


本文仅供学习交流使用,如侵立删!

这篇关于【原创】Python 特来电充电站数据爬虫的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!