Как обойти хеш скачивания музыки ВКонтакте

Discussion in 'PHP' started by dirtybiz, 12 Jan 2011.

  1. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Не вы один, я писал класс для поиска музыки. Все предельно просто, единственная проблема это кол-во серверов для парсинга, иначе банят бывает акаунты и IP с которых много частых запросов. Вот можно оценить, но там полурабочая бета версия http://yeblan.net/vk_music/

    PS Насчет выдачи файла, я беру трэк, и отдаю его курлом, не сохраняя у себя. Нагрузки на сервер пока что не замечал.

    PHP:
    <?php
    @session_start();
    if(!isset(
    $_SESSION['email']) || !isset($_SESSION['pass'])) {
        exit;
    }

    include_once(
    'vk_music_class.php');
    $vkm = new vk_music_class($_SESSION['email'], $_SESSION['pass']);

    $url = empty($_GET['url']) ? die('Файл не указан') : $_GET['url'];
    $url base64_decode($url);


    if(!
    preg_match('#^http://cs\d+\.vkontakte\.ru/u\d+/audio/[a-f0-9]{12}\.mp3$#i'$url)) {
        die(
    'Качать можно только с хоста ВК.');
    }

    if(!empty(
    $_GET['filename'])) {
    header('Content-type: audio/mpeg3');
    header('Content-Disposition: attachment; filename="'.$_GET['filename'].'"');
    }
    echo 
    $vkm->download_mp3($url);
    ?>
    ЗЫ а вот функция на JS с vkopt, для получения ссылки:
    PHP:
    function GetLinkToMp3(aid,with_name){
      var 
    lnk="";
      
    img=ge("imgbutton"+aid);
      if (
    img)
      if (
    img.getAttribute('onclick').split('operate')[1]) {
        if (
    img.getAttribute('onclick').split('operate(')[1])
            
    params img.getAttribute('onclick').split('operate(')[1].split(')')[0];
        if (
    img.getAttribute('onclick').split('operateWall(')[1])
            
    params img.getAttribute('onclick').split('operateWall(')[1].split(')')[0];

            
    params params.split(',');
            
    server params[1];
            
    user params[2]; while(user.length<5user='0'+user;

            if (
    params.length==3name=params[1];
            else 
    name params[3];
            
    name=name.substring(1name.length 1);
            if (
    params.length>3lnk='http://cs' server '.vkontakte.ru/u' user '/audio/' name '.mp3';    else lnk=name;
            if (
    with_name) {lnk=lnk+'?/'+(ge('performer'+aid).innerText+'-'+ge('title'+aid).innerText)+'.mp3'}; //  //GetAudioName(aid,'fdw')
            
    return lnk;
            } else return 
    false;
    }
     
    #21 b3, 19 Jan 2011
    Last edited: 19 Jan 2011
  2. 3lancer

    3lancer New Member

    Joined:
    18 Jan 2011
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Спасибо за информацию.
    Однако, такие приложения банят на раз-два. На хабре где-то проходил список сайтов, реализующих поиск музыки таким образом, походил вчера по ссылкам - все мертвы.