Js逆向案例—网易云音乐

在这里插入图片描述
首先找到所需响应所在位置,点开Initiator。点开第一个js文件。
url未登录状态csrf_token为空,不影响操作
点开第一个js文件之后,在弹出的页面所选行打上断点,刷新页面,第一个url并不是我们所要的url,这里我们按F8往下走
在这里插入图片描述
出现如上图url即为我们要分析的请求,此处data中有两个参数,此处参数既然已经加密完成,那么我们就需要往下走,继续按上图箭头方向往下查找相关加密位置
找到window.asrsea函数即可,此为加密入口
取消掉原来的断点,在新的位置打上断点再次刷新
进入asrsea函数内部即为相关js代码,下方为python还原代码:

def aes(text, i):
    text = text.encode('utf-8')
    aes = AES.new(i.encode('utf-8'), mode=AES.MODE_CBC, iv='0102030405060708'.encode('utf-8'))  # ECB一般不需要iv
    text_len = 16 - len(text) % 16
    text += (text_len * chr(text_len)).encode('utf-8')
    resp = aes.encrypt(text)
    return base64.b64encode(resp).decode()


def main(id):
    h = {}
    data_text = '{"rid":"R_SO_4_%s","threadId":"R_SO_4_%s","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}' % (id, id)
    const1 = "010001"
    const2 = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
    const3 = "0CoJUm6Qyw8W8jud"
    i = "DEpPIq7Alyv6xXOk"
    h['encText'] =aes(data_text, const3)
    h['encText'] = aes(h['encText'], i),
    # h['encSecKey'] = c(i, e, f)
    h['encSecKey'] = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
    headers = {
        'Cookie': '_ntes_nnid=73220b7ba7a407e037463c0626da2d6a,1628652294087; _ntes_nuid=73220b7ba7a407e037463c0626da2d6a; vinfo_n_f_l_n3=0a12faba88adcf4d.1.0.1632972543466.0.1632972549420; _iuqxldmzr_=32; NMTID=00OSGcCcKEHBX3B9Eb6rpq_6AOig24AAAF-4nrJgQ; WEVNSM=1.0.0; WNMCID=ofqpdv.1644477203609.01.0; WM_TID=6JuzaA2c8dVEQVUVREc%2B%2Be0ML53zCRyS; playerid=22620139; WM_NI=wzSm80PLVdp%2F%2FWgeVyJDMCqbgwNHk9e1nWUcGfuHPH%2Bq3XMs0rX4dN11eHw9hnawA9e8zChjb3YxTcVYFV%2FVXME7WIAStL1ksfhoWqctSsf5VAizp0M0z8KW86sTbc6UOWs%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eeaec4539689a7b2e940ade78eb7d45b868b9fbbf17aa2b1b791fb48a5e9b682e62af0fea7c3b92ab5a69d8ebb3c94949a85f325ed89a986d5738a9c83a4f46aa5a982a9ea33a7efa2b8d86985babba9d344e9affdb9d079f4ae98d5e746f3efaba9f633acb2af98c433a7e8b6a4eb62a2ed9799d76996878ab7ae5e9c938bd8d643838dbcadb461b1baa890d67ba1ac9d94e53f969fa79bf33c8ff0b6d9ca5dfceabdb5e169f68b81b8f237e2a3; JSESSIONID-WYYY=aTAoTpqsMM3el36ZfBUW2Q0zfQ2V9aANY2WXy%5CBPQ2djJSBqUXVOQIaEo9T%2FUe0%2BYbuI%5CigkkOvx8OS5f9UYwRCsq0y8HfS%2ByRCuC44SMRmKvfkmGpenqqdXBPbEGyEibKS5zCyXU8aa3w8z5qfcu%2FN0Iqrr4Wysz5GwKTX23n7RdXTw%3A1644808290336',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
        'Content-Type': 'application/x-www-form-urlencoded',
    }
    data = {
        'params': h['encText'][0],
        'encSecKey':"01cee9438db0034b2262ca105a2ad831b409761f7de8799b4aa63c20f8c7ea3759292e1145988db4787465ec9c47a0a87df0e5d95809f31a30e99d77fa4d301c8c3d1e73078687314a5fd67fc6f709ddbbdbe678644260ce88b10d9f08a6ae81bd47f7bed43efb7d646b7d9157c591b9cc8f53fee6facab63a4eb6f6320b31b7"
    }
    resp = requests.post(comment_url, data=data, headers=headers, verify=False)
    resp = resp.json()
    print(resp)
    hotComments = resp['data']['hotComments']
    for com in hotComments:
        content = com['content']
        print(content)


if __name__ == '__main__':
    comment_url = '评论的url'
    main('1851652156')

版权问题,很多图没办法贴出来,有疑问可评论提问。

嗨!对于爬虫中的 JavaScript 逆向案例,我可以给你提供一个简单的示例。请注意,这个示例只是为了帮助你理解逆向过程,真实的应用中可能涉及法律和伦理问题,请合法使用爬虫技术。 假设我们要爬取一个网站上的某个页面数据,但是该页面通过 JavaScript 动态生成。我们可以通过分析网页的 JavaScript 代码来逆向工程,获取所需数据。 首先,打开 Chrome 浏览器并进入开发者工具(按 F12 键或右键点击页面并选择“检查”)。然后切换到“网络”选项卡。 接下来,在浏览器地址栏中输入目标网页的 URL 并按下回车,浏览器将开始加载页面。在网络选项卡中,你将看到所有请求和响应的列表。 查找其中一个请求,该请求可能包含我们所需的数据。点击该请求并查看其请求头、响应头和响应体。 在响应体中,你可能会看到一些 JavaScript 代码,这些代码负责生成页面上的内容。你可以仔细阅读该代码,并找到生成目标数据的部分。 如果你发现目标数据是通过 Ajax 请求获取的,你可以查看该 Ajax 请求的 URL 和参数,然后使用 Python 的 requests 库或其他适当的方法模拟该请求,并解析响应获取数据。 如果你发现目标数据是在 JavaScript 代码中直接生成的,你可以尝试分析代码逻辑并编写相应的 Python 代码来模拟该过程。这可能涉及到使用 JavaScript 解释器或库来执行 JavaScript 代码。 需要注意的是,JavaScript 逆向工程是一项复杂的任务,需要对 JavaScript 和网络协议有一定的理解。同时,网站所有者可能会采取一些反爬虫措施来阻止你的行为,所以请务必遵守法律法规和网站的使用规则。 希望这个示例能够帮助你入门 JavaScript 逆向工程。如果你有任何其他问题,欢迎继续提问!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值