base64: "aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9pbmRleC9uZXcv"
某新闻网练习项目——主要获取内容,在此之前你需要学习:base64、MD5、 AES加密和解密、断点的使用
我不喜欢废话,我们直接看怎么实现的:
比如我想要这个数据我们要怎么办呢?
粘贴
请求成功了
我直接给出代码了:
import json
import time
import requests
import urllib.parse
from hashlib import md5
cookies = {
'ASP.NET_SessionId': 'yia0gk1jwug2xfesgxkqoc3u',
}
headers = {
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Content-Type': 'application/json;charset=UTF-8',
# 'Cookie': 'ASP.NET_SessionId=yia0gk1jwug2xfesgxkqoc3u',
'Origin': 'https://ggzyfw.fj.gov.cn',
'Pragma': 'no-cache',
'Referer': 'https://ggzyfw.fj.gov.cn/index/new/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
# 'portal-sign': 'd733ad65e764ab590ce3a14eb43a3927',
'sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
}
json_data = {
"IS_IMPORT": 1,
'pageSize': 8,
'ts': int(time.time() * 1000),
'type': '12',
}
a = json.dumps(json_data, separators=(",", ":"))
print(a)
json_data_str = urllib.parse.urlencode(json_data).replace("=", "").replace("&", "")
print("json_data_str:", json_data_str)
s = "B3978D054A72A7002063637CCDF6B2E5" + json_data_str
m = md5()
m.update(s.encode())
sign = m.hexdigest()
print(sign)
headers["portal-sign"] = sign
response = requests.post('?', cookies=cookies, headers=headers,
data=a)
print(response.text)
import base64
import json
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import AES
# 一、 base64的解码
base64_encrypt_data = response.json().get("Data")
encrypt_data = base64.b64decode(base64_encrypt_data)
print("encrypt_data:", encrypt_data)
# 二、解密数据
# (1) 确认key和iv必须保证是16或者24,或者32
key = 'EB444973714E4A40876CE66BE45D5930'.encode()
iv = 'B5A8904209931867'.encode()
# (2) 构建一个aes对象
aes = AES.new(key, AES.MODE_CBC, iv)
# (3) 对数据解密
data = aes.decrypt(encrypt_data)
print(data)
print(data.decode())
data = unpad(data, 16)
print("data:", data.decode())
print(json.loads(data.decode()))