JPlayer Stream MP3, но предотвращает загрузку и hotlinking
Я создаю сайт, похожий на thefuture.fm. Ди-джеи могут загружать файлы MP3 и устанавливать, может ли файл быть потоковым или потоковым и загружен.
Посетителям сайта не нужно входить в систему, чтобы слушать музыку. Они должны иметь возможность транслировать/загружать эти MP3-композиции в зависимости от настроек пользователя.
Я использую jPlayer для воспроизведения песен. Я искал по всей сети, но не могу найти решение. Есть ли у jPlayer какие-либо средства, такие как предотвращение загрузки файлов MP3? Или я могу предотвратить это?
Ответы
Ответ 1
На самом деле невозможно предотвратить загрузку. Вы можете сделать его труднее для кого-то, но ему все равно нужно загрузить все данные, чтобы услышать песню. Поэтому, даже если вы используете какое-то шифрование для отправки данных на флеш-плеер, который вы сами записываете, плеер должен будет расшифровать его и воспроизвести аудио. И так как вы можете декомпилировать flash, вам не сложно будет найти алгоритм. Он мог также просто записывать музыку снова, когда играл в нее (подобно первым инструментам для дешифрования DVD, которые просто сделали снимок экрана 30 раз/сек, чтобы пройти миллионные измерения безопасности)
Таким образом, цель состоит в том, чтобы сделать это сложнее, а не невозможно.
Лично я хотел бы использовать временные доступные ссылки в сочетании с файлом cookie, поэтому я все еще могу использовать jplayer и не нужно изобретать колесо. Также используйте некоторые обфускации, чтобы затруднить чтение URL-адреса.
Когда кто-то запрашивает основной URL-адрес (где вы показываете плеер) генерируете уникальный ключ и сохраняете его в файле cookie. Уникальный ключ должен ссылаться на IP-адрес и запрашивать время, сохраненное в сеансе.
Теперь создайте ссылку на музыкальный файл, такой как playfile.php? file = music.mp3 или что-то еще. Просто убедитесь, что PHP будет обрабатывать запрос файла. Если вы обфускаете эту ссылку, будет немного сложнее ее найти.
В playfile.php проверьте уникальный код в файле cookie и проверьте, соответствует ли он IP-адресу в сеансе, а время запроса меньше EG за 15 секунд (дольше и музыка не будет играть в любом случае при медленном подключении к Интернету), Если это так, перелейте файл. Если это не так, заблокируйте его.
Теперь, если кто-то напишет программу / script, чтобы загрузить музыку, он может. Но если у кого-то есть знания и время для этого, ничто не остановит его от его загрузки.
Это предотвратит загрузку обычного пользователя.
Ответ 2
Предотвращение хотлинкинга немного проще, так как в общем случае у вас будет строка реферера для проверки. Если это присутствует, вы будете знать, что не будете обслуживать контент. Здесь - пример кода.
Предотвращение загрузки с другой стороны намного сложнее - лучший подход для приложения Flash для дешифрования данных в реальном времени - если вы используете простую схему шифрования, большинство клиентских устройств должно быть достаточно быстрым. Я не мог найти многого для этого в Интернете, поэтому я задаюсь вопросом, нужно ли вам самому сделать разработку Flash/Flex самостоятельно: загрузите данные MP3 в куски, примените процедуры дешифрования из библиотеки и отправьте их в какой-то MP3 буфер декодирования. Я подозреваю, что пароль будет жестко закодирован.
Приложение: Я обнаружил, что в более поздних версиях Flash вы можете воспроизводить динамически генерируемые звуки из буфера (см. здесь). Итак, если вы готовы застрять в разработке Flash/Flex, то это решение видно. Я не мог найти ничего доступного для низкоуровневых MP3-подпрограмм, но не забывайте, что файлы не должны быть MP3, передаваемые с вашего сервера, - конвертируйте их в нужное вам приложение.
Ответ 3
То, что вы ищете, не может быть достигнуто с помощью решения JavaScript. Если вы хотите, чтобы javascript воспроизводил что-то, он должен загрузить его, и для его загрузки JavaScript нуждается в URL-адресе.
Наиболее распространенным способом решения этой проблемы является использование Adobe Flash и создание в нем игрока. Вы можете сделать контент вашего проигрывателя (mp3 в вашем случае) без явного отображения фактического местоположения данных для пользователя.
Ответ 4
Поместите файл в место, которое недоступно в браузере, и используйте PHP, чтобы выпустить их в виде серии кусков с помощью HTTP/1.1 206 Partial Content
. Затем используйте метод this, чтобы отредактировать контекстное меню, чтобы добавить/удалить "сохранить как".
Используйте сеанс var, чтобы устранить прямую ссылку.