能问一下大佬们嘛

问大佬们一个问题,查了一下放回<Response [200]>是正常,咋样才能获取到数据嘞

from Crypto.Cipher import AES
from base64 import b64encode
import requests
import json

data = {
    "csrf_token": "",
    "cursor": "-1",
    "offset": "0",
    "orderType": "1",
    "pageNo": "1",
    "pageSize": "20",
    "rid": "R_SO_4_1840256180",
    "threadId": "R_SO_4_1840256180"
}

e = "01001"
f = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
g = "0CoJUm6Qyw8W8jud"
i = "tDW1YqAeRUDE71sD"
url = "https://music.163.com/weapi/comment/resource/comments/get?csrf_token="

def getencSecKey():
    return "32122f4372a042032d2596cab07952173802fe70fa2febfda51623432fc99f86e1235de882d19c51727abb3f8b808b202510bcb34fe678364f0a55676fd1fa60a784f79137bc71e8f9932305dac8202896ecc94b727e7d83790ecb16f82494176078d3df89068c6c87b10152911e66afabd7d1c66638167d3e30ad63888b9591"

def getparams(data):  # 那么字典不能直接整个传了加密,所以一定要把字典变成字符串再进行加密,那么这里的data就默认是字符串
    first = enc_params(data, g)
    second = enc_params(first, i)
    return second  # 返回的第二次加密就是params

def to_16(data):
    pad = 16 - len(data) % 16
    data += chr(pad) * pad
    return data

def enc_params(data, key):  # 加密过程,那么这里的data根据getparams(data)知道也是字符串,网易的加密是AES加密,所以也要模仿AES,看函数b就知道了
    date = to_16(data)
    iv = '0102030405060708'  # 看到b函数里面有一个iv=d,d = CryptoJS.enc.Utf8.parse("0102030405060708"),为了方便直接d="0102030405060708"
    ase = AES.new(key=key.encode('utf-8'), IV=iv.encode("utf-8"),
                  mode=AES.MODE_CBC)  # 首先先创建一个AES加密器,ctrl+b进去函数看到所需要的参数,然后对上就行了
    bs = ase.encrypt(date.encode("utf-8"))  # 加密,通过执行报错可知道,必须是需要16位或16的倍数位的内容长度,所以要处理一下
    # 看回函数b,最后要.toString转换成字符串,那么就要用utf-8去识别,难么加密后的结果utf-8无法识别,所以需要b64处理加密结果
    return str(b64encode(bs), "utf-8")  # 转化成字符串去对应b函数的toString过程,以字符串的形式返回


# 请求到网易,拿到评论
if __name__ == '__main__':
    resp = requests.post(url, data={
        "params": getparams(json.dumps(data)),  # 此时data是字典,要的是字符串,需要转化,导入json模块
        "encSecKey": getencSecKey(),
    })
    print(resp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值