虾米mp3破解程序(php)

十度 wordpress 2015年12月20日 收藏

前面在讲到:wordpress添加mp3播放器有朋友问虾米mp3怎么po,jie,以下即是php的po,jie程序:

<?php
//author:wordpress教程网(shouce.ren)

header("Content-type: text/html; charset=utf-8");
date_default_timezone_set('Asia/Shanghai');
error_reporting(0);
//http://www.xiami.com/song/play?ids=/song/playlist/id/1769771075/object_name/default/object_id/0

 function parse_xml($play_url)
 {

 	$play_url_attr = str_replace('http://www.xiami.com/song/play?ids=' , '' , $play_url);
 	$play_url_arr = explode('/', $play_url_attr);
 	$id = $play_url_arr[4];
	$url = 'http://www.xiami.com/widget/xml-single/uid/0/sid/' . $id;
  	$xmlString = file_get_contents($url);
   	$xml = new DOMDocument();
	$xml->loadXML($xmlString);
	$mp3_url  = $xml->getElementsByTagName("location");
	$mp3_url = $mp3_url->item(0)->nodeValue;
	$mp3_url = xiami_decode($mp3_url);

    return $mp3_url;

 }

function xiami_decode($str = ''){
   // $str = '9hFaF76%6t%m17%59t2i162E%pF.6%545%fn4222E31e%F%3.A.t2%5_m%x%F5E7p2i25E743';
    $totle = (int)$str;
    $newString = substr($str, 1);
    $chu = floor(strlen($newString) / $totle);
    $yu = strlen($newString) % $totle;
    $stor = array();
    $i = 0;
    for($i=0; $i<$yu; $i++){
        $stor[$i] = substr($newString, ($chu + 1) * $i, $chu + 1);
    }
    for($i=$yu; $i<$totle; $i++){
        $stor[$i] = substr($newString, $chu * ($i - $yu) + ($chu + 1) * $yu, $chu);
    }
    $pinString = '';
    for($i=0; $i<strlen($stor[0]); $i++){
        for($j=0; $j<count($stor); $j++){
            $pinString .= substr($stor[$j], $i, 1);
        }
    }
    $pinString = rawurldecode($pinString);
    $returnString = '';
    for($i=0; $i<strlen($pinString); $i++){
        if(substr($pinString, $i, 1) == '^'){
            $returnString .= '0';
        }else{
            $returnString .= substr($pinString, $i, 1);
        }
    }
    return $returnString;
}
$play_url =  'http://www.xiami.com/song/play?ids=/song/playlist/id/1771291147/object_name/default/object_id/0';
$mp3_url = parse_xml($play_url);
echo    $mp3_url;



?>