Как веб-серверы надежно определяют устройство, отправляющее запросы?

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

Например, www.rdio.com, приложение для потоковой передачи музыки, предлагает два разных сервиса; один для мобильных устройств и один для ноутбуков и настольных компьютеров. Они берут 10 долларов в месяц за мобильные устройства и 5 долларов в месяц за настольные компьютеры и ноутбуки.

Очевидно, у них должен быть довольно хороший метод обнаружения устройства, отправляющего запросы, поскольку часть их бизнес-модели зависит от этого. Как rdio и другие компании достигают этого? Все, о чем я до сих пор думал, кажется довольно плохим. Например, если они зависят от переменных заголовка в HTTP-запросах, как они защищаются от спуфинга? Или, если они используют javascript на стороне клиента для изучения функций браузера, какие функции вы можете изучить, чтобы точно определить тип устройства? Вы смотрите на разрешение экрана, наличие гироскопа или что-то в этом роде, потому что что делать, если у меня есть мобильное устройство с разрешением в стиле ноутбука или ноутбук с гироскопом?

Какие функции HTTP-запросов или браузеров изучают веб-серверы, чтобы точно определить тип устройства?


person martega    schedule 24.04.2013    source источник
comment
Вы подписались на услугу? Мне кажется, что у них может быть веб-сайт и мобильное приложение, хотя они, кажется, не говорят об этом прямо ни в одном из своих рекламных материалов.   -  person Dagg Nabbit    schedule 24.04.2013
comment
Такой язык может быть намеком на то, что существует отдельное мобильное приложение (выделено мной): выберите музыку, которую вы хотите воспроизвести, и слушайте столько, сколько хотите - из Интернета или со своего телефона, даже когда вы не в сети < / b>. Разделение Интернета и телефона может означать, что в телефоне используется не веб-браузер (собственное приложение), а что-то другое. Плюс, конечно, немного о прослушивании в автономном режиме.   -  person Dagg Nabbit    schedule 24.04.2013
comment
@DaggNabbit Я не думал о том, что у них может быть отдельное мобильное приложение. У меня нет службы, поэтому я не уверен в этом.   -  person martega    schedule 24.04.2013
comment
просто пытаюсь подумать, что бы я сделал в этом положении. Вы правы, ни один из обычных методов не является достаточно надежным, чтобы предотвратить спуфинг, и с такой бизнес-моделью, я думаю, вы захотите убедиться, что вас не обманут.   -  person Dagg Nabbit    schedule 24.04.2013
comment
@DaggNabbit. Даже если у них есть отдельное мобильное приложение, это не решит проблему полностью. Например, я все еще могу попробовать использовать службу на своем мобильном устройстве с помощью браузера мобильного устройства.   -  person martega    schedule 24.04.2013
comment
хороший момент, но пробовали ли вы когда-нибудь слушать, например, soundcloud в мобильном браузере? Это отстой. Я бы заплатил несколько дополнительных долларов за приложение. Я думаю, что этого плюс обычное обнаружение браузера должно быть достаточно. Однако на самом деле невозможно узнать, что они делают, не подписавшись на это.   -  person Dagg Nabbit    schedule 24.04.2013
comment
В прошлый раз, когда я проверял, rdio изменила свою модель ценообразования на 10 долларов в месяц для Интернета / браузера и 12 долларов в месяц для Интернета / браузера / мобильных устройств / устройств ... так что, похоже, даже они отказались от попыток проверить устройство. Теперь возникает вопрос: «Поступил ли этот запрос через приложение (которое должно иметь возможность подписывать или хэшировать запросы) или через Интернет?   -  person thefrontender    schedule 24.04.2013


Ответы (1)


Они зависят от User-Agent браузера, чтобы определить, какое устройство использует клиент.

Конечно, пользовательские агенты можно подделать, и вы мало что можете сделать, чтобы предотвратить это.

Хотя были попытки определить реальные типы браузеров, пытаясь вызвать функции, характерные для этих браузеров, это ненадежно.

Вы можете узнать больше о User-Agent здесь.

person Pradeep Pati    schedule 24.04.2013
comment
Фактически, некоторые веб-сайты полагаются на клиента (браузер), чтобы предоставить им возможности браузера (размер экрана, механизм рендеринга, ОС и т. Д.) И отправить их обратно на сервер. Этого можно добиться в HTML / JS. Многие веб-сайты перенаправляют вас на мобильную версию на основе первой страницы. - person Traveling Tech Guy; 24.04.2013
comment
Откуда вы знаете, что это метод, который использует rdio? Вы только что переформулировали часть OP (если они зависят от переменных заголовка в HTTP-запросах ...), не отвечая на конкретный вопрос, связанный с ним (как они защищаются от спуфинга?). - person Dagg Nabbit; 24.04.2013
comment
@TravelingTechGuy User-Agent также является значением, предоставляемым браузером. - person Pradeep Pati; 24.04.2013
comment
@ galuano1 да, но все, что он предоставляет, это строка, которую становится все труднее и сложнее анализировать (например, посмотрите на Chrome на Mac) и не включает информацию о разрешении и глубине экрана. Сценарии на стороне клиента могут предоставить больше информации и избавить вас от анализа и предположений. - person Traveling Tech Guy; 24.04.2013
comment
@TravelingTechGuy Да, есть, и есть библиотеки, которые выполняют весь синтаксический анализ. Вы можете получить размер экрана, но не DPI, из браузера. Что касается пикселей, нет большой разницы между ПК прошлого года и смартфоном этого года. (Кроме того, на ПК браузер может работать не в полноэкранном режиме, поэтому количество пикселей может быть меньше по сравнению с телефоном.) - person Pradeep Pati; 24.04.2013
comment
@ galuano1 вы все еще не ответили на его вопрос. Смотрите мой последний комментарий. Если они используют заголовки, отправленные из браузера, как они предотвращают спуфинг? Также почти вся вторая половина вашего предыдущего комментария дико неточна (подсказка: вы должны проверять ширину устройства, а не ширину окна). - person Dagg Nabbit; 24.04.2013
comment
@DaggNabbit Обновленный ответ. - person Pradeep Pati; 24.04.2013
comment
@ galuano1 вы заявляете, что они используют заголовок User-Agent, как будто это факт. У вас есть доказательства? Если нет, я бы предложил переформулировать это (они могут это сделать, и они могут принять другие меры, или они могут сделать что-то совершенно другое, AFAIK). - person Dagg Nabbit; 24.04.2013
comment
У меня есть базовая услуга, которая позволяет вам использовать веб-клиент Rdio в веб-браузере настольного компьютера / ноутбука, и я попытался использовать его на iPad. Если вы посетите сайт на iPad, он перенаправит вас на страницу, где вас попросят загрузить приложение rdio. Если вы подмените User-Agent, он отправит вас в обычный настольный веб-клиент, где вы сможете делать все, что обычно кроме воспроизведения песен. Вы можете поставить песни в очередь для воспроизведения, но они останутся приостановленными. - person martega; 24.04.2013
comment
@martega Интересно, использует ли он Flash для воспроизведения песен; может он работает на Андроиде? Кроме того, ISTM, который User-Agent гораздо менее проблематичен для подделки, чем _2 _... Вы можете добавить проверку, где что-то не работает, если заявленная ширина экрана меньше, например, 1280 пикселей. - person Dagg Nabbit; 24.04.2013