我们如果对网易云音乐进行爬虫的话,我们会发现,提交的参数是(params,encSecKey),然而这两个参数是一串很长的东西

我们要对网易云进行爬虫,那么就一定要将这两个参数弄明白,然后才可以进行爬虫,不然这两个参数将限制着我们很多事情,下面是我对这两个参数的分析,参考了知乎大神的方法,这里将原帖地址写上来https://www.zhihu.com/question/36081767

主要参考 作者:平胸小仙女 的分析

下面进行分析:

我在分析中要用到的几个软件,Google浏览器,火狐浏览器,burpsuite,Fiddler4,sublmie text3,notepad,pycharm

例子是:周杰伦的告白气球,爬取评论

首先我们用Google浏览器查看(F12)

点击第一个name,然后选择response

看里面的内容,然后一直再name里面找,知道找到一个在response里面评论的地址

这里可以看到

Name为R_SO_4_418603077?csrf_token=

Response里面为评论

查看headers知道url为

http://music.163.com/weapi/v1/resource/comments/R_SO_4_418603077?csrf_token=

参数为

params:

4xP7F7cUOXDMzOaAFyjO59O+7BqsoAZYlRPUmMcRc7TEyXU74Myk+RHOhsiKB7leysTntGMRFrg3g5YGuYDvYLKmOqtzMFc4uB/YZYs5SENhFgFsVfjYGK/ej16PGp4ZUkFc8dDpTY/oXn1R0C6AGlsDbPkwn1vOxk3EH2P2qsabp1cOAlfgjxNWE4eY+iVa

encSecKey:

7a10fea1b79811ec8b0dd0a85cc0326a18b6e32c5c9ff5e3c07606d0c8f96f92e0c6fa8ea025db59e55746713122c7dcb5a74259c11b0dc32038cac3c5799d9e0da5f394cb9ef72e69f97e0d9b051270e9c9d38ee50f23e04662b2bd3dec63ec1583ef1761186557c9fd0d0be200c53a3a19f10011c5d4c81b6c87c0d0311d3e

复制到火狐浏览器查看一下(使用hackbar插件)

确定这个url是对的

然后就可以尝试用脚本跑出来

但是这里的参数只能跑前面第一页的,不能全部将评论爬出来

接下来分析参数

继续用Google浏览器

看到使用了js,那就是要分析js文件了

点击这个js文件

右键另存为core.js

然后用notepad打开

看到这么乱,我们只要查找一下就好了

查找params

不断地找,然后再第90行找到我们所要地params值

确定这个就是我们要找地js代码,复制出来分析

这里的params和encSecKey都是经过asrsea加密的,然后asrsea里面的内容是什么,和怎样子加密是我们要搞明白的问题

这里有个方便的方法,就是在线调试

使用Fiddler4

使用火狐浏览器打开那首歌的链接http://music.163.com/#/song?id=418603077

然后设置火狐浏览器的代理为系统代理

然后刷新那个链接

找到这个core.js

点击右边的AutoResponder

将那个js拉过来

然后选中它,点击下面的rule,替换js为本地的js,然后点击save

就是这个样子

返回火狐浏览器,点击F12,然后选着控制台,选中日志

然后就用notepad修改js文件测试

在我们需要的代码前面输入window.console.info(j0x);然后保存

刷新火狐浏览器

发现出来了很多数据,这个就是j0x那个参数了

然而{ rid: "R_SO_4_418603077", offset: "0", total: "true", limit: "20", csrf_token: "" }这个就是我们要的参数,记录下来

尝试点击第二页

又出现了一个json但是里面的参数不一样,offset变成了20,total变成了false

再尝试第三页

得到结论就是offset就是页数,而且是一个等差数列,offset =(页数-1)*20

total除了第一页是true之外,其他都是false

Limit猜测是评论的数量,后面验证

观察

发现那个asrsea的内容又4个,第一个就是刚才的json,第二个是一个固定的值,第三个不知道是不是固定值,第四个也是固定值,现在只要找到第三个,就可以解决了

查看core.js

第89行发现

那就是说第三个参数也是个固定值,

那只要将全部参数都找出来,就可以了

唯一是变量的也就是第一个参数了

同样方式将那3个参数列出来

第二个

第三个

第四个

然后就可以得到全部的参数了

知道了参数然后就是看asrsea的程序了

点击asrsea发现就是等于d方法

然后找出所有相关的代码程序

然后按照加密,用python写一遍,就可以了

部分代码(完整代码在最后面的链接)

可以看到我们用那些参加加密,然后可以得到评论,最热的有15条,最新的有20条,

尝试修改里面的limit参数

改为30

得到30个最新评论

也就是我们之前的猜测是对的

然后去掉rid尝试

发现还是可以得到那些评论,也就是和那个rid是否有参数没有关系

经过测试,那个limit的最大值为100

前面一直没有说另外一个参数(encSecKey),因为这个相当于一个常量

观察

发现e为第二个参数,f为第三个参数,也就是这两个都是常量,

i为16为随机数,

这里可以发现是随意产生随机数

两个参数都用到这个i,但是,一旦我们把i就设计为16位随机字母,将它固定了,然后传给两个参数进行加密 ,那么得到的encSecKey就是一个常量,所以我们直接找出一个i就

可以了,用刚才的在线调试,可以找出来。

代码GitHub链接

https://github.com/niechaojun/NetEaseCloudCrawer

分析文件在

https://github.com/niechaojun/Analysis-of-the-NetEase-cloud-comment-parameters

对网易云音乐参数(params,encSecKey)的分析的更多相关文章

  1. NetCloud——一个网易云音乐评论抓取和分析的Python库

    在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...

  2. Java爬取网易云音乐民谣并导入Excel分析

    前言 考虑到这里有很多人没有接触过Java网络爬虫,所以我会从很基础的Jsoup分析HttpClient获取的网页讲起.了解这些东西可以直接看后面的"正式进入案例",跳过前面这些基 ...

  3. 网易云音乐APP分析

    网易云音乐-感受音乐的力量 你选择的产品是?  网易云音乐 为什么选择该产品作为分析? 之前用的一直是QQ音乐,但是有一天一个朋友分享了一首网易云上的音乐(顺便分享一下歌名:Drop By Drop) ...

  4. WPF仿网易云音乐系列(序)

    1.简介 由于之前做了一个播放器,苦于不懂界面设计,只得去借鉴借鉴一些成功的作品,网易云音乐就甚合朕心,哈哈,最后做出来的效果如下: 本系列文章就来和大家讨论以下,如何用WPF去仿制一个网易云音乐来: ...

  5. UWP仿网易云音乐之1-TitleBar

    首先,创建一个UWP的项目.我使用的是Visual Studio 2017 社区版. 如图,我们将项目命名为UWP-Music. 现在我们先标题栏的配色调整与网易云音乐一致. 我们先分析一下标题栏,默 ...

  6. Python 获取 网易云音乐热门评论

    最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧.获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据.但是有的时候我们想要 ...

  7. 【Python3爬虫】网易云音乐爬虫

    此次的目标是爬取网易云音乐上指定歌曲所有评论并生成词云 具体步骤: 一:实现JS加密 找到这个ajax接口没什么难度,问题在于传递的数据,是通过js加密得到的,因此需要查看js代码. 通过断掉调试可以 ...

  8. python爬取网易云音乐歌曲评论信息

    网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了“它比我还懂我的音乐喜好”.“小清新的界面设计”就是它独有的评论区了——————各种故事汇,各种金句频出.我们可以透过歌曲的评 ...

  9. python3-使用requests模拟登录网易云音乐

    # -*- coding: utf-8 -*- from Crypto.Cipher import AES import base64 import random import codecs impo ...

随机推荐

  1. iptables snat和dnat

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  2. 工作笔记--自动切换host的python code

    修改host代码: #coding:utf-8import os,timepwd = os.path.dirname(__file__) #获取当前文件夹的绝对路径pull_host_cmd = 'a ...

  3. PV IP UV

    PV(访问量) Page View,页面浏览量. 具体的说,就是在一天内,该网站的页面总共访问了多少次 IP(独立IP) 一天内访问网站的IP数量 UV(独立访客) Unique Visitor 一般 ...

  4. ARM平台的虚拟化介绍

    本篇博文主要介绍虚拟化的基本思想以及在arm平台如何做虚拟化,arm提供的硬件feature等等. 虚拟化技术简介 虚拟化技术 虚拟化是一个概念,单从这个概念的角度来看,只要是用某一种物品去模拟另一种 ...

  5. [译]前端JS面试题汇总 Part 1(事件委托/this关键字/原型链/AMD与CommonJS/自执行函数)

    原文:https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/javascript-questio ...

  6. 版本工具:truck tag branch区别

    truck(主干):项目开发的主体,一直处于活跃阶段 tag(标签):用来标示主干或者分支的某个状态,代表某个项目的稳定状态 branch(分支):从主干中分离出来的代码拷贝,在这里进行重大bug修复

  7. 用batch调用DB2 CLPPlus执行多个SQL文

    不啰嗦直接上技能. 大概三部分组成: 1.bat文件.(run.bat) 2.辅助SQL文.(AllRun.sql) 3.要执行的SQL文.(S1.sql,S2.sql,S3.sql) +++++++ ...

  8. Mysql主从复制_模式之日志点复制

    MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...

  9. Egret学习笔记 (Egret打飞机-6.实现敌机飞起来)

    有了子弹,总得有敌人来打吧,不然游戏有啥意思呢?今天我们来实现敌机从屏幕上边往下飞 参考微信打飞机游戏里面,敌机分为3种 1是特小飞机,2是小飞机,还有一种就是大飞机 面向对象编程提倡抽象,实现代码复 ...

  10. LeetCode第二天&第三天

    leetcode 第二天 2017年12月27日 4.(118)Pascal's Triangle JAVA class Solution { public List<List<Integ ...