返回

jsRPC 之旅:网易云音乐评论解密

后端

在这个信息爆炸的时代,我们经常会在社交媒体上看到各种各样精彩的评论。这些评论不仅反映了网友们的思想和观点,也为我们提供了了解社会风向的窗口。然而,由于某些平台的评论系统采用了加密措施,我们无法直接获取评论的原始内容。

今天,我们就来揭秘网易云音乐评论加密的奥秘,踏上一段激动人心的 jsRPC 逆向之旅。

环境搭建

在开始逆向之前,我们需要搭建好必要的环境:

  1. Python 3.6+
  2. Selenium
  3. BeautifulSoup4

获取请求数据

首先,我们需要使用 Selenium 模拟浏览器行为,获取网易云音乐评论请求的数据。代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def get_request_data():
    # 打开网易云音乐评论页
    driver = webdriver.Chrome()
    driver.get("https://music.163.com/#/comment?id=xxxx")
    
    # 等待评论加载完毕
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "srch_form")))
    
    # 获取请求数据
    request_data = driver.execute_script("return window.__INITIAL_DATA__")
    return request_data

request_data = get_request_data()

分析请求数据

获取到请求数据后,我们需要分析其结构,找到包含评论加密信息的字段。在 request_data 中,找到如下字段:

"commentThread": {
    "ugcResponseVO": {
        "song": {
            "commentId": "123456"
        },
        "comments": []
    }
}

commentId 字段包含了评论的 ID,而 comments 字段则包含了评论的加密内容。

解密评论

网易云音乐评论采用 jsRPC 方式加密,我们需要编写代码对其进行逆向解密。首先,找到 jsRPC 的加密函数:

function Jsrpc(params) {
    // 加密代码...
}

然后,使用 Python 中的 exec 函数执行这段 JavaScript 代码,并将加密函数赋值给变量:

jsrpc_func = """
function Jsrpc(params) {
    // 加密代码...
}
"""
exec(jsrpc_func)

最后,使用 Jsrpc 函数对评论进行解密:

import base64
def decrypt_comment(comment):
    params = {"params": base64.b64decode(comment), "encType": "aes"}
    decrypted_comment = Jsrpc(params)["result"]["content"]
    return decrypted_comment

示例代码

# 获取评论加密内容
comments = request_data["commentThread"]["ugcResponseVO"]["comments"]
encrypted_comments = [comment["content"] for comment in comments]

# 解密评论
decrypted_comments = []
for comment in encrypted_comments:
    decrypted_comment = decrypt_comment(comment)
    decrypted_comments.append(decrypted_comment)

# 输出解密后的评论
print(decrypted_comments)

总结

通过这篇教程,我们成功逆向了网易云音乐评论加密算法,并提取到了评论的原始内容。jsRPC 逆向技术在实际场景中有着广泛的应用,掌握这一技术可以极大地提高我们的爬虫能力。