七麦数据爬虫 analysis解析
直接贴代码,需要学习的自己看。如有权益问题请联系我删除,q:1847858794
效果图:
# -*- coding: utf-8 -*-
# @Time : 2018/11/18 11:57
# @Author : Haley
import base64
import requests
import time
import json
class QiMai(object):
def __init__(self):
self.string = 'a12c0fa6ab9119bc90e4ac7700796a53'
def params_b64(self, path, params=None):
"""
b64编码
:param params: {
'brand': "all",
'country': "cn",
'date': "2018-11-17",
'device': "iphone",
'genre': "36",
'page': '8',
}
:param path: '/rank/indexPlus/brand_id/0'
:return:
"""
if not params:
t = int(time.time() * 1000) - 1515125653845
return '@#' + path + '@#' + str(t) + '@#1'
params_list = []
for key in params:
params_list.append(params[key])
params_list.sort()
params = ''.join(params_list)
params_b64 = base64.b64encode(params.encode()).decode()
t = int(time.time() * 1000) - 1515125653845
params = params_b64 + '@#' + path + '@#' + str(t) + '@#1'
return params
def data_encrypt(self, data):
"""
加密函数 异或运算
:param data: '@#/rank/indexPlus/brand_id/[email protected]#[email protected]#1'
:return:
"""
data_list = list(data)
for i in range(0, len(data_list)):
data_list[i] = chr(ord(data_list[i]) ^ ord(self.string[i % len(self.string)]))
return base64.b64encode(''.join(data_list).encode()).decode()
def data_decrypt(self, data):
"""
解密函数
:param data: 'IRIdEVEIChkVDV1QSHlBUQ4DVANSVAcBAQZ3Ggc='
:return:
"""
data_list = list(base64.b64decode(data.encode()).decode())
string = ''
for i in range(len(data_list)):
data_ord = ord(data_list[i])
str_ord = data_ord ^ ord(self.string[i % len(self.string)])
string += chr(str_ord)
return string
if __name__ == '__main__':
params = {
'brand': "all",
'country': "cn",
'date': "2018-11-17",
'device': "iphone",
'genre': "36",
'page': '8',
}
path = '/rank/indexPlus/brand_id/0'
Q = QiMai()
params_b64 = Q.params_b64(path, params)
analysis = Q.data_encrypt(params_b64)
string = Q.data_decrypt(analysis)
headers = {
"Accept": "application/json, text/plain, */*",
"Referer": "https://www.qimai.cn/",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/59.0"
}
url = 'https://api.qimai.cn' + path + '?analysis=' + analysis
r = requests.get(url, headers=headers)
print(json.loads(r.text))