【前端破解系列之一】一分钟教你破解下载虾米音乐

虾米音乐网站上有很多高品质的音乐和精心组织的精选集,但普通用户只能试听,不能下载,下载的话需要使用“米”,这个“米”除了极少数的新手任务可以获得之外,基本上都要靠付费来购买,很多人没有网银或者没有银行卡,支付相当不方便。对于普通用户,既想把音乐放到手机或者mp3里欣赏,又不愿反复折腾的话,如何找到下载链接把歌曲下载下来呢?让我们来研究一下虾米音乐网站的代码逻辑。

如下图:打开一个精选集:

 精选集页面

        我们来看一下这个网页的源码,找到第一首歌曲Iris and Jasper –Hans Zimmer部分的html代码,搜索Iris andJasper即可:

 html源码

        懂html的可以看看,其实也不需要理解,这段代码大体上看来点击试听的时候,调用了一个js函数play,参数有三个,很明显第一个是歌曲id,后面两个不知道是做什么用,但这没有什么影响,我们来继续看看play函数的代码:

 

 

        这段js代码非常简单,懂点程序的人都能看出来,最后的结果就是:/song/playlist/id/+第一个参数+/object_name/+第二个参数+/object_id/+第三个参数,第一个参数是百分百有的,第二个如果不存在,则为default,第三个如果不存在,则为0。因为没有特殊字符,所以那个escape函数的作用可以忽略。然后前面再拼上虾米的网址http://www.xiami.com就得到一个url链接:http://www.xiami.com/song/playlist/id/2562206/object_name/collect/object_id/11060023,这么简单?这就是歌曲链接?No,显然没那么容易,我们把这个地址复制到浏览器访问一下看看返回什么内容:

<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/"><trackList><track><title><![CDATA[Iris and Jasper]]></title><song_id>2562206</song_id><album_id>217126</album_id><album_name><![CDATA[The Holiday (Original Motion Picture Soundtrack)]]></album_name><object_id>11060023</object_id><object_name>collect</object_name><insert_type>1</insert_type><background>#eeeeee</background><grade>-1</grade><artist><![CDATA[Hans Zimmer]]></artist><location>8h2xt622265tFi%%6%5_Et%a22%2643p2mFF252%5%Fi32F225.3f.51%%%EmA1n575552p%.e41EEE%3</location><ms>http://f1.xiami.net</ms><lyric>http://www.xiami.com/song/lyrictxt/id/2562206</lyric><pic>http://img.xiami.com/images/album/img46/35546/2171261295514339_1.jpg</pic></track></trackList><type>collect</type><type_id>11060023</type_id><clearlist></clearlist>
</playlist>

 

        是一段xml,看起来这才是歌曲的真正信息,刚才的url就是用歌曲id等来请求歌曲信息的方法,从xml里可以看到歌曲信息和播放背景歌词地址专辑图片等内容。那么歌曲的下载地址到底在哪里呢?xml里并没有歌曲的url。仔细看xml,有个location看着很可疑,看起来是一段加密过的内容,怎么解密呢?这段解密代码在js里是找不到。

但是找不到如何破解呢?不用担心,网上已经有相应的破解方法,地址:http://www.winhex32.com/xiami/

 

 

        把location里的那段加密后的字符串复制到输入框里,输入验证码,点击尝试解码,ok,看到了吗?完整的mp3下载链接就出来了,直接复制到浏览器或者迅雷里下载吧~~

 

上了的不算分析的分析就讲完了,我们再来回顾一下该过程:

1.打开一个歌曲的页面,查看源文件

2.ctrl+f打开搜索框,输入“play(”,不包括引号,就可以找到每一首歌曲的play函数,记下函数的几个参数。

3.根据上面提到的规则,http://www.xiami.com/song/playlist/id/+第一个参数+/object_name/+第二个参数+/object_id/+第三个参数,得到歌曲信息的获取路径,比如http://www.xiami.com/song/playlist/id/2562206/object_name/collect/object_id/11060023,用浏览器打开这个路径,得到一段xml文本内容。

4.把xml里的location段里的加密内容复制,打开www.winhex32.com/xiami,粘贴进去,输入验证码解密,就可以得到mp3文件的下载路径了。

 

对于这个Location内部的解密算法,如果大家有兴趣,以后再继续发帖分析。

本博文仅供技术交流,请勿用于商业目的,否则后果自负。如果有兴趣的话欢迎跟帖讨论。

转载于:https://www.cnblogs.com/pkuoliver/archive/2012/05/09/crack-xiami-music.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程常用接口的内核实现----sys_listen()

listen()函数仅在TCP服务器端调用&#xff0c;它做两个事情&#xff1a;将套接字转换到LISTEN状态和设置套接上的最大连接队列。listen()对应的内核实现为sys_listen()&#xff0c;下面开始对其实现作具体的分析。 一、sys_listen()函数 sys_listen()的源码实现及分析如下所示…

linux查看启动配置文件内容,Linux开机启动项的查看和设置方法总结

一、查看开机自启项1.Centos7自启项查看方式从Centos6的chkconfig改为&#xff1a;systemctl list-unit-files2.用grep过滤查看&#xff0c;比如&#xff1a;查看启动项&#xff1a;systemctl list-unit-files | grep enable查看sshd服务自启动情况&#xff1a;systemctl list-…

sql SET DATEFORMAT对日期处理的影响

--1./*--说明SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响但不影响明确指定了style的CONVERT处理。--*/--示例 &#xff0c;在下面的示例中&#xff0c;第一个CONVERT转换未指定style&#xff0c;转换的结果受SET DATAFORMAT的影响&#xff0c;第二…

linux怎么设置tomcat自动启动,linux添加tomcat服务并设置开机启动

一&#xff0c;脚本文件&#xff0c;编辑好后放在/etc/rc.d/init.d/下面#!/bin/sh#chkconfig: 2345 10 90# description: Starts and Stops the Tomcat daemon.#by jj###############################################Startup script for Tomcat on Linux#filename tomcat.sh#M…

Linux操作系统内核启动参数详细解析

Linux内核在启动的时候&#xff0c;能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值&#xff0c;可以通过这种方式手动将这些参数传递给内核。 如果不使用启动管理器&#xff0c;比如直接从BIOS或者把内核文…

XP Embedded:不同的用户使用不同的外壳程序

摘要&#xff1a; 能够使应用程序成为外壳程序是 Windows XP Embedded 的关键功能之一。设备可以在自定义外壳程序而不是 Explorer 外壳程序中启动&#xff0c;这提供了两个好处。第一个好处是系统能够更快地启动。Explorer 外壳程序需要花费大量的时间来加载所有支持库和文件…

linux系统中 库分为静态库和,Linux系统中“动态库”和“静态库”那点事儿-【经典好文】...

今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在这之前&#xff0c;我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情。在linux操作系统中&#xff0c;普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式。ELF(Exec…

u-boot环境变量设置

这是我uboot的环境变量设置&#xff0c;在该设置下可以运行initram内核&#xff08;从内存下载到nandflash再运行&#xff09;&#xff0c;但是运行nfs根文件系统的时候一直出错&#xff0c;各种错误。查看了很多资料后猜想应该是uboot传递给linux内核的参数有问题&#xff0c;…

RHEL6 下Cfengine V3 安装测试1

Cfengine 是一种 GNU 开源配置管理框架&#xff0c;用于计算机系统自动化。此框架是轻量的&#xff0c;可针对几乎所有平台构建。它能运行在所有常见平台上&#xff0c;其中包括 AIX、Linux、UNIX、Apple 和 Windows。 cf-promises 承诺的检验者和编译者&#xff0c;在试图执行…

linux下grpc安装编译,linux下安装grpc插件 (c++和go语言)

在debian/ubuntu系统下&#xff0c;需要做如下准备操作&#xff1a;$ [sudo] apt-getinstallbuild-essential autoconf libtoolpkg-config如果你想要从源码编译并且运行测试&#xff0c;同时运行下面的安装&#xff1a;$ [sudo] apt-getinstalllibgflags-dev libgtest-dev$ [su…

SIP资料汇总

SIP协议 SIP协议过程概念及分析 SIP入门开发之路(含SIP开发需要学习的资源及网址) SIP揭密&#xff08;中文版&#xff09; 使用Java的SIP Servlet进行SIP开发 Asterisk: Asterisk安装及测试 Asterisk十问十答 Asterisk入门教程 Asterisk介绍-Asterisk RealTime SIP asterisk配…

Nand Flash Yaffs系统大量写入数据失败问题的解决方法。

一个朋友的问题&#xff0c;我们共同分析后搞定。其实以前也遇到过同样问题&#xff0c;时间长了&#xff0c;没总结。 事发&#xff1a;在Nand Flash上使用2.6.14的linux kernel&#xff0c;三星2440的板子&#xff0c;连续写入文件&#xff0c;到一定大小限制就删除&#xff…

linux上的壁纸软件下载,Ubuntu 17.10上安装开源壁纸工具Wallch 4.0

在Ubuntu 17.04上安装WallchWallch是一款免费的开源通用壁纸更换器&#xff0c;用户可以在设置的时间更改桌面背景图片。它会在桌面上更改并显示随机图片或维基百科的当天图片。它还具有一个实时地球Living Earth壁纸&#xff0c;每30分钟更换桌面背景&#xff0c;以显示阳光和…

Asp.NET 获取网站根目录

http://www.cnblogs.com/Leo_wl/archive/2010/06/12/1757148.html转载于:https://www.cnblogs.com/imihiroblog/archive/2012/05/23/2514649.html

小议同步IO :fsync与fdatasync

对于提供事务支持的数据库&#xff0c;在事务提交时&#xff0c;都要确保事务日志&#xff08;包含该事务所有的修改操作以及一个提交记录&#xff09;完全写到硬盘上&#xff0c;才认定事务提交成功并返回给应用层。 一个简单的问题&#xff1a;在*nix操作系统上&#xff0c;怎…

linux c++ queue 多线程,C++多线程,消息队列用法

进程是没有活力的&#xff0c;它只是一个静态的概念。为了让进程完成一些工作&#xff0c;进程必须至少占有一个线程&#xff0c;所以线程是描述进程内的执行&#xff0c;正是线程负责执行包含在进程的地址空间中的代码。实际上&#xff0c;单个进程可以包含几个线程&#xff0…

获取磁盘类型

1. GetLogicalDriveStrings获取所以的分区字符串 2. GetDriveType("C:\\"); 对每个分区字符串分别调用GetDriveType获得分区所在磁盘的磁盘类型。 0 DRIVE_UNKNOWN未知的磁盘类型   1 DRIVE_NO_ROOT_DIR说明lpRootPathName是无效的   2 DRIVE_REM…

css3 (2)

Php1情景模拟&#xff1a;如果是在C盘&#xff0c;遇到熊猫&#xff0c;数据丢失。我们要重装系统&#xff0c;格C盘。我们要更改对应的访问的目录。需要改apache下面的配置文件Appserv 是集成环境包&#xff0c;里面也是apache服务器在运行网页请求。Apache目录下面有一个conf…

linux find显示文件的基本信息,命令find搜索文件,命令stat查看文件的详细信息

命令stat命令语法stat(选项)(参数)命令描述命令stat用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。命令选项-L&#xff1a;支持符号连接&#xff1b;-f&#xff1a;显示文件系统状态而非文件状态&#xff1b;-t&#xff1a;以简洁方式输出信息&#…

C# String.Format格式说明

C#格式化数值结果表 字符 说明 示例 输出 C货币string.Format("{0:C3}", 2)&#xff04;2.000D十进制string.Format("{0:D3}", 2)002E科学计数法1.20E0011.20E001G常规string.Format("{0:G}", 2)2N用分号隔开的数字string.Format("{0:N}…