python爬取网易云歌曲评论

查看源代码

截图_2022062520424742SS.png

找到目标url


截图_2022062520425042SS.png

有两个参数被加密了


截图_2022062520415141SS.png

search 加密参数params:
截图_202206252025902SS.png

可以看出这是一个加密函数,并传递了4个参数.

第一个参数是url的参数,其他参数都是定值.


截图_2022062521212021SS.png

第一个参数
data={
    "rid": "R_SO_4_26305527",
    "threadId": "R_SO_4_26305527"}

windows.asrsea()的处理过程

!function() {
    function a(a) {
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length,
            e = Math.floor(e),
            c += b.charAt(e);
        return c
    }
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a)
          , f = CryptoJS.AES.encrypt(e, c, {
            iv: d,
            mode: CryptoJS.mode.CBC
        });
        return f.toString()
    }
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }
    function d(d, e, f, g) {
        var h = {}
          , i = a(16);
        return h.encText = b(d, g),
        h.encText = b(h.encText, i),
        h.encSecKey = c(i, e, f),
        h
    }
    function e(a, b, d, e) {
        var f = {};
        return f.encText = c(a + e, b, d),
        f
    }
    window.asrsea = d,
    window.ecnonasr = e
}();

通过读a函数,我们发现a函数是生成一个a(传进来的参数)位的字符串,也就是说d中的i将会是一个随机数
我们可以让页面继续运行,然后得到i和对应的h.encSecKey这样我们就可以在python中将这两个变量写死。
得到i和encSecKey:

i="gcbRwuLzJcbzxAPC"

def get_ensSecKey():
    return "24caa54f2cccf556753a02162ae1f2c37d9ae4af3289e9b773100a3c2d284b94232ac513680119fdb38b3551f18f1e6bb6fd00d49507502da30df2e0d361e01c702be2dd4b31a97a25e95f00e2cdd5663a6ba0e6b328dd073d1c5e1b2a0278accce59c3645065ef1f61e965ef505e8f9842e8f1e0680242e511b8fc37aadc522"

看b函数可以看出是AES加密CBC模式
模拟b函数获得 params参数

from  Cryptodome.Cipher   import  AES
import json
from   base64  import b64encode
import requests
# 第一个参数
data={
    "rid": "R_SO_4_26305527",
    "threadId": "R_SO_4_26305527"}
# 第二个参数
e = '010001'

# 第三个参数
f = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
# 第四个参数
g = '0CoJUm6Qyw8W8jud'

i="gcbRwuLzJcbzxAPC"

def get_ensSecKey():
    return "24caa54f2cccf556753a02162ae1f2c37d9ae4af3289e9b773100a3c2d284b94232ac513680119fdb38b3551f18f1e6bb6fd00d49507502da30df2e0d361e01c702be2dd4b31a97a25e95f00e2cdd5663a6ba0e6b328dd073d1c5e1b2a0278accce59c3645065ef1f61e965ef505e8f9842e8f1e0680242e511b8fc37aadc522"
def get_params(data):
    first=enc_params(data,g); #d中的第一次加密
    secend=enc_params(first,i);#d中的第二次加密
    return secend;

def to_16(data):
    pad=16-len(data)%16;
    data+=chr(pad)*pad
    return data
#模拟加密过程
def enc_params(data,key):
    #key  密钥,  iv=偏移量,# AES.MODE_CBC 表示模式是CBC模式
    aes = AES.new(key=key.encode('utf-8'),iv="0102030405060708".encode('utf-8'),mode=AES.MODE_CBC)
    data = to_16(data)#需要加密的内容
    bs = aes.encrypt(data.encode('utf-8')) #加密内容,加密的内容长度必须是16的倍数
    return str(b64encode(bs),"utf-8")#加密后得到字节数据,以base64编码方式解码, 得到加密字符串!

爬取评论内容

url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
resp = requests.post(url, data={
    "params": get_params(json.dumps(data)),
    "encSecKey": get_ensSecKey()
})
resp.encoding = 'utf-8'
dic = resp.json();
comments = dic['data']['hotComments']
for comment in comments:
    content = comment['content']
    print(content)
截图_2022062522324432SS.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容