Скрыть полный URL-адрес MP3


У меня есть музыкальный проигрыватель, который ссылается на песню, используя следующий синтаксис:

<li><a href="" data-src="http://s3.amazonaws.com/audiojs/02-juicy-r.mp3">title</a></li>

Есть ли какой-либо способ, которым я мог бы выполнить эту серверную часть, а затем отобразить ее как (см. Ниже) для пользователя?

Во время поиска я наткнулся на это...Мне нравится идея создания внешнего файла с данными... например:

<?php
// get-file.php
// call with: http://yoururl.com/path/get-file.php?id=1
$id = (isset($_GET["id"])) ? strval($_GET["id"]) : "1";
// lookup
$url[1] = 'link.mp3';
$url[2] = 'link2.mp3';
header("Location: $url[$id]");
exit;
?>

Затем с помощью: http://yoururl.com/path/get-file.php?id=1 в качестве ссылки... единственная проблема заключается в том, что когда вы вводите http://yoururl.com/path/get-file.php?id=1 пользователь переходит прямо к file...is есть какой-нибудь способ отключить эту способность... может быть, какой-нибудь код на get-file.php сам по себе?

Author: Jason Sundram, 2012-06-25

5 answers

Хорошо, итак, я сделал комбинацию вещей, которыми я доволен... хотя и не совсем безопасно, это определенно помогло мне немного скрыть это.

Прежде всего, я использую проигрыватель AudioJS для воспроизведения музыки, который можно найти: http://kolber.github.com/audiojs/

В основном то, что я сделал, было:

  1. Вместо того, чтобы использовать "data-src" в качестве пути к моим песням, я назвал его "ключом", чтобы люди не обязательно думали, что это путь.
  2. Вместо используя "название моей песни" в качестве названия песен, я изменил его на номер, например 7364920, чтобы люди не могли искать его в источнике и таким образом находить URL-адрес.
  3. Я добавил +"mp3" в код javascript после всех "ключевых" переменных, таким образом, мне не пришлось бы объявлять его в запутанной ссылке.
  4. Я использовал относительный путь, такой как "./8273019283/" вместо "your-domain.com/8273019283 /", таким образом, было бы сложнее определить, что я отображал URL-адрес.
  5. Добавлен Ссылка iTunes на href, таким образом, люди могут запутаться в том, как я вытаскивал файл.

Итак, теперь мой встроенный javascript выглядит так:

<script type="text/javascript">
        $(function() {
            // Play entire album
            var a = audiojs.createAll({
                trackEnded: function() {
                    var next = $("ul li.playing").next();
                    if (!next.length) next = $("ul li").first();
                    next.addClass("playing").siblings().removeClass("playing");
                    audio.load($("a", next).attr("key") + "mp3");
                    audio.play();
                }
            });
            // Load the first song
            var audio = a[0];
            first = $("ul a").attr("key") + "mp3";
            $("ul li").first().addClass("playing");
            audio.load(first);
            // Load when clicked
            $("ul li").click(function(e) {
                e.preventDefault();
                $(this).addClass("playing").siblings().removeClass("playing");
                audio.load($('a', this).attr('key') + "mp3");
                audio.play();
            });
        });
    </script>

Моя ссылка выглядит так:

<a href="<?php $link = 'http://itunes.apple.com/us/album/falling/id504779876?i=504779883&uo=4'; $obfuscatedLink = ""; for ($i=0; $i<strlen($link); $i++){ $obfuscatedLink .= "&#" . ord($link[$i]) . ";"; } echo $obfuscatedLink; ?>" target="itunes_store" key="<?php $link = './8249795872/9273847591.'; $obfuscatedLink = ""; for ($i=0; $i<strlen($link); $i++){ $obfuscatedLink .= "&#" . ord($link[$i]) . ";"; } echo $obfuscatedLink; ?>">Falling</a>

Когда вы загрузите его в браузер и просмотрите исходный код, вы увидите:

<a href="&#104;&#116;&#116;&#112;&#58;&#47;&#47;&#105;&#116;&#117;&#110;&#101;&#115;&#46;&#97;&#112;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#47;&#117;&#115;&#47;&#97;&#108;&#98;&#117;&#109;&#47;&#102;&#97;&#108;&#108;&#105;&#110;&#103;&#47;&#105;&#100;&#53;&#48;&#52;&#55;&#55;&#57;&#56;&#55;&#54;&#63;&#105;&#61;&#53;&#48;&#52;&#55;&#55;&#57;&#56;&#56;&#51;&#38;&#117;&#111;&#61;&#52;" target="itunes_store" key="&#46;&#47;&#56;&#50;&#52;&#57;&#55;&#57;&#53;&#56;&#55;&#50;&#47;&#57;&#50;&#55;&#51;&#56;&#52;&#55;&#53;&#57;&#49;&#46;">Falling</a>

Затем, когда вы используете веб-инспектор или Firebug, вы увидите:

<a href="http://itunes.apple.com/us/album/falling/id504779876?i=504779883&amp;uo=4" target="itunes_store" key="./8249795872/9273847591.">Falling</a> - *which doesn't completely give the url away

В основном я сделал так, чтобы ссылка выглядела так, как будто это какой-то api-ключ. Самое классное, что вы не можете просто скопировать ссылка прямо из источника просмотра или прямо из веб-инспектора/Firebug. Он не является надежным и определенно может быть взломан, но пользователь должен знать, что он делает. Это удерживает большинство людей на расстоянии, но все же позволяет проигрывателю получить URL-адрес, необходимый для воспроизведения песни:)

*кроме того, я получил php-скрипт запутывания откуда-то на Stack Exchange, просто не уверен, где.

Спасибо за всю помощь! Я надеюсь, что это поможет кому-то другому, пытающемуся сделать то же самое!

Джош

 5
Author: Josh Rodgers, 2012-07-01 23:05:29

Вместо перенаправления заголовка добавьте правильные заголовки и включите аудиофайл в свой PHP-код. Затем в файле .htaccess вы можете запретить доступ к каталогу, в котором находятся ваши аудиофайлы.

 1
Author: Quantastical, 2012-06-25 18:58:52

Если вы используете сервис amazon s3, вы можете использовать подписанный URL-адрес для своих файлов. Это будет более безопасно, так как вы должны быть подписанным пользователем, а также срок действия URL-адреса может истечь. Прочитайте это.

 0
Author: Ruben Nagoga, 2012-06-25 19:02:50

Нет. Это невозможно, так как именно браузер интерпретирует HTML-код для правильной работы страницы. Поэтому, если клиент (браузер) не знает, откуда берется mp3, то его там не будет для использования.

С другой стороны, если вы хотите, чтобы музыка переключала песни, нажав на ссылку, я предлагаю вам изучить некоторые инструменты, такие как http://jplayer.org/

РЕДАКТИРОВАТЬ: Единственный способ, вероятно, предотвратить прямой доступ к самому файлу, - это прочитать файл вместо ссылки на него из скрипта. Например, на моем сайте размещения изображений http://www.tinyuploads.com/images/CVN5Qm.jpg и если бы вы посмотрели на фактический путь к файлу на моем сервере, файл CVN5Qm.jpg находится вне поля зрения из папки public_html. Прямого доступа к файлу нет. Я использую базы данных, чтобы получить идентификатор изображения, посмотреть, где оно хранится, а затем прочитать его() в сценарий и отобразить соответствующие заголовки для вывода изображения.

Надеюсь, что это помогает

 0
Author: MasterGberry, 2012-06-25 19:20:19

Я использую http_referer и могу контролировать процедуру ссылки

<?php
// key.php
// call with: http://yoururl.com/path/key.php?id=1
$page_refer=$_SERVER['HTTP_REFERER'];


if ($page_refer=="http://www.yourdomine.com/path/page.html")
    {
    $id = (isset($_GET["id"])) ? strval($_GET["id"]) : "1";
    // lookup
    $url[1] = 'link1.mp3';
    $url[2] = 'link2.mp3';
    header("Location: $url[$id]");
    exit;
    }
else
    {
    exit;
    }
?>
 0
Author: scatal, 2013-07-23 10:32:36