微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 隐藏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时,用户直接进入文件…是否有任何方法可以禁用该功能……也许是get-file.PHP本身的一些代码

解决方法:

好吧,所以我做了一些我很满意的事情……虽然不是很安全,但它确实帮我模糊了一点.

首先,我使用AudioJS播放器播放音乐 – 可以找到:http://kolber.github.com/audiojs/

基本上我做的是:

>而不是使用“data-src”作为我的歌曲的路径我称之为“关键”,这样人们不一定认为这是一条路径.
>我没有使用“my-song-title”作为歌曲的名称,而是将其更改为7364920这样的数字,这样人们就无法在源代码中查找,并以此方式找到网址.
>我在所有“关键”变量之后将“mp3”添加到javascript代码中,这样我就不必在obfusticated链接中声明它.
>我使用了像“./8273019283/”而不是“your-domain.com/8273019283/”这样的相对路径,这样就很难说我正在显示一个网址.
>添加一个到href的iTunes链接,这样人们可能会对我如何拉动文件感到困惑.

所以,现在我的内联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>

然后,当您使用Web Inspector或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-key.很酷的是,您不能直接从视图源复制链接,也不能直接从Web Inspector / Firebug复制链接.它不是万无一失的,绝对可以被打破,但用户必须知道他们在做什么.它让大多数人远离,但仍然允许玩家获得播放歌曲所需的网址:)

*另外,我从Stack Exchange上的某个地方获得了PHP obfusticate脚本,但不知道在哪里.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐