Как ограничить страницу прямой трансляции одним подключением на пользователя?

Я хочу ограничить количество пользователей, которые подключаются к моей странице потокового вещания, чтобы пользователи не могли обмениваться паролями и входить в систему несколько раз под одной и той же учетной записью из разных мест.

Я не против, если один пользователь войдет в систему на двух разных устройствах у себя дома, например, на компьютере и в Google TV. Это заставляет меня думать, что ограничение на основе IP-адреса источника - это правильный способ справиться с этим.

Проблема в том, что если пользователь входит в систему, а я записываю его IP-адрес и ограничиваю его входом только с этого IP-адреса, он не может изменить местоположение.

С HTTP, после того, как они вошли в систему, это без установления соединения, поэтому я потерял отслеживание того, смотрят ли они поток из CDN или нет.

Это заставляет меня думать, что я должен использовать JavaScript на клиенте, чтобы отключить плеер, если пользователь входит в другое место.

Это означает, что мне нужен способ связи с вошедшими в систему клиентами разумно масштабируемым способом.

Можете ли вы предложить подходящий способ решения этой проблемы? Я чувствую, что для этого должно быть простое и масштабируемое решение.

1 ответ

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

Если вы согласны с тем, что некоторые люди обходят их, вы можете выполнить контроль доступа на стороне клиента, и клиент будет пинговать сервер каждые 60 секунд или около того, сообщая серверу о том, что он все еще выполняет потоковую передачу. Затем на сервере сохраните IP-адрес пользователя в истекающей очереди. Таким образом, IP-адрес истечет из очереди, скажем, через 3 минуты, если игрок прекратит пинговать сервер. Под пингом на сервере я имею в виду отправку простого http GET-запроса, чтобы оставить сеанс открытым. Когда пользователь закрывает клиент, эхо-запросы прекращаются, и ваш сервер истекает через 3 минуты IP-адрес для этого клиента. В этот момент пользователь может войти с другим IP-адресом.

Важно помнить, что опытные пользователи смогут наблюдать за сетевыми событиями в браузере, таком как Chrome, и видеть, откуда подается ваш контент, и легко обойти любые ограничения, поскольку вы не можете контролировать сам CDN.

Если вам нужен более строгий контроль, вам необходимо обслуживать контент с вашего сервера. Тогда вы будете абсолютно точно знать, когда клиент прекратил доступ к потоку.

Там может быть золотая середина. Если вы беспокоитесь о скорости потоковой передачи без CDN, вы можете взглянуть на CloudFlare.com. CloudFlare - это слой CDN, который находится перед всеми вашими http-запросами, даже динамическими. Статические запросы обслуживаются с периферии, как обычные CDN, но динамические запросы передаются через прокси через сеть CloudFlare, каждый раз обратно на ваш сервер. Если вы настроите ваши потоковые запросы так, чтобы они выглядели как динамический контент для CloudFlare, то вы получите потенциальную выгоду от потоковой передачи через низкоскоростное соединение с высокой пропускной способностью к конечной точке, при этом сохраняя возможность индивидуального отслеживания пользователей.

Другие вопросы по тегам