Skip to content
This repository has been archived by the owner on Nov 21, 2023. It is now read-only.

私信相关 API #11

Open
jixunmoe opened this issue Sep 21, 2016 · 1 comment
Open

私信相关 API #11

jixunmoe opened this issue Sep 21, 2016 · 1 comment

Comments

@jixunmoe
Copy link

发送私信:

var enc = window.asrsea(JSON.stringify({"type":"text","msg":"测试信息 [大笑]","userIds":"[\"<目标用户ID>\"]","time":"-1","csrf_token":"<token>"}), "010001", "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7", "0CoJUm6Qyw8W8jud");
req.data = urlencode({
  params: enc.encText,
  encSecKey: enc.encSecKey
});
req.url = "http://music.163.com/weapi/msg/private/send";
req.post();

关于 asrsea 的 python 实现可以参考这里

def aesEncrypt(text, secKey):
    pad = 16 - len(text) % 16
    text = text + pad * chr(pad)
    encryptor = AES.new(secKey, 2, '0102030405060708')
    ciphertext = encryptor.encrypt(text)
    ciphertext = base64.b64encode(ciphertext)
    return ciphertext


def rsaEncrypt(text, pubKey, modulus):
    text = text[::-1]
    rs = int(text.encode('hex'), 16)**int(pubKey, 16) % int(modulus, 16)
    return format(rs, 'x').zfill(256)


def createSecretKey(size):
    return (''.join(map(lambda xx: (hex(ord(xx))[2:]), os.urandom(size))))[0:16]

# ...

    text = {} # 放入数据
    modulus = '00e0b50...' # 放入完整的
    nonce = '0CoJUm6Qyw8W8jud'
    pubKey = '010001'
    text = json.dumps(text) # json.stringify
    secKey = createSecretKey(16)
    encText = aesEncrypt(aesEncrypt(text, nonce), secKey)
    encSecKey = rsaEncrypt(secKey, pubKey, modulus)

注意:请求需要带上 Cookie。


抓取私信:

http://music.163.com/weapi/msg/private/users
=> {"uid":"<bot 用户 id>","getcounts":"true","offset":"0","total":"true","limit":"20","csrf_token":"<csrf_token>"}

抓取某个人的私信:

http://music.163.com/weapi/msg/private/history
=> {"getcounts":"true","userId":"<目标用户 id>","offset":"0","total":"true","limit":"20","csrf_token":"<csrf_token>"}
@misaka00251
Copy link
Member

感谢阁下!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants