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

Наскоро забелязах, че някои уебсайтове, които посещавам, могат да открият устройството, което използвам, за да преглеждам уебсайта, но не съм сигурен как могат да го направят.

Например 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 за възпроизвеждане на песните; може би работи на Android? Също така, ISTM, че User-Agent е много по-малко проблем за измама от screen.width... Можете да добавите проверка, когато нещата не работят, ако докладваната ширина на екрана е по-малка от, да речем, 1280 px. - person Dagg Nabbit; 24.04.2013