2013-10-09 4 views
13

Я хочу открыть мой сайт только на iPhone и iPod с браузером Safari. Для любого другого браузера, такого как Chrome, Dolphin и т. Д., Он не должен открываться.User Agent для браузера Safari на iOS 7

Но в настоящее время я получаю один и тот же агент пользователя практически из всех устройств:

Для Safari:

User Agent String :: mozilla/5.0 (iphone; cpu iphone os 7_0_2 like mac os x) applewebkit/537.51.1 (khtml, like gecko) version/7.0 mobile/11a501 safari/9537.53 

Для Chrome:

User Agent String :: mozilla/5.0 (iphone; cpu iphone os 7_0_2 like mac os x) applewebkit/537.51.1 (khtml, like gecko) crios/30.0.1599.16 mobile/11a501 safari/8536.25 

Для браузера Mercury:

User Agent String :: mozilla/5.0 (iphone; cpu iphone os 6_0_1 like mac os x) applewebkit/536.26 (khtml, like gecko) mercury/7.4.2 mobile/10a523 safari/8536.25 

Для Дельфин браузер:

User Agent String :: mozilla/5.0 (iphone; cpu iphone os 7_0_2 like mac os x) applewebkit/537.51.1 (khtml, like gecko) version/6.0 mobile/10a523 safari/8536.25 

С Chrome можно увидеть, проверив crios и Меркурия по mercury струны, но как насчет других браузеров, которые, как представляется, имеют тот же агент пользователя, как Safari?

+0

Да человека это расстраивает. Я просто столкнулся с той же проблемой. –

ответ

28

Ответ other не соответствует действительности. В iOS Apple блокирует любые конкурирующие браузеры, включая собственно механизм рендеринга; все должны использовать стандартный веб-просмотр.

Итак, все эти сторонние браузеры (с такими функциональными возможностями, как синхронизация избранных и т. Д.) - это просто обертки вокруг веб-браузера Safari, которые фактически отображают страницу, поэтому все они имеют строку пользовательского агента Safari.

+1

Это не совсем так. Если мы проведем сравнение строк между useragent, используемым Safari на iphone, и uiwebview/wkwebview на iphone, они не совпадают. Обратитесь к первому ответу на этот вопрос SO http://stackoverflow.com/questions/2143763/does-uiwebview-send-the-same-user-agent-in-the-request-headers-as-mobile-safari – shrutim

+0

конечная часть пользовательского агента изменится, как указано выше, на основе конкретного браузера (Safari, UIWebView, Dolphin и т. д.), но основная часть, указывающая на платформу браузера, будет такой же. (См. Https://en.wikipedia.org/wiki/User_agent#Format_for_human-operated_web_browsers) –

+0

Согласен. Но есть много сайтов, которые плохо себя ведут, если часть Safari строки пользовательского агента отсутствует. Некоторые веб-сайты, которые отлично отображаются в iOS Safari, неправильно используют UIWebView или WKWEbview. Например: http://m.gasbuddy.com. Мне пришлось обновить строку useragent WKWebview для веб-страницы, чтобы она отображалась точно так же, как и Safari в IOS. Все, о чем я говорю, это то, что мы должны быть осторожны, когда говорим, что пользовательские агенты одинаковы для Safari и всех мобильных веб-просмотров, используемых в iOS, учитывая, что есть сайты, которые ведут себя по-разному – shrutim

5

Браузеры делают это очень преднамеренно, чтобы люди не делали то, что вы пытаетесь сделать. Их разработчики считают, что, поскольку они используют один и тот же веб-движок (WebKit, blink или gecko), как и другие, они будут явно отображать страницы, оптимизированные для похожих браузеров, просто отлично (что вполне вероятно).

Так что, скорее всего, невозможно сказать.

0

Решает ртуть, оперу, хром н светлячка, но не дельфин

(
    (/(iPad|iPhone|iPod)/gi).test(userAgent) && 
    !(/CriOS/).test(userAgent) && 
    !(/FxiOS/).test(userAgent) && 
    !(/OPiOS/).test(userAgent) && 
    !(/mercury/).test(userAgent) 
) 
Смежные вопросы