Главная

Tuesday, 26 March 2013

Кто подставил агента IE6 ?


         При изучении нового видеокурса получил напоминание о том что у меня устаревший web-браузер. Это был Internet Explorer 8.0. Разумеется он не последний, но ведь так часто мы слышим призывы к кроссбраузерности контента, а тут такой пас. Конечно тут же было предложено перейти на новую 9-ю версию Internet Explorer-a либо перейти на альтернативный web-браузер Firefox, Opera или Chrome. Есть у меня все три альтернативы, 9-ку IE не поставлю потому как знаю что для этого понадобится и поменять ОС с Windows ХР на Windows 7. Я не против апдейта, но не в этом случае. 

            А так ли важна версия web-браузера в моем случае или автор курса просто в дань моде поднял планку при финальной сборке? Поскольку сообщение про устаревший web-бразуер версии 6.0 (хотя давно использую 8.0) при серфинге в инете получаю на сайтах периодически решил выяснить вопрос детально. Оказывается при использовании jQuery с версии 1.3 метод $.browser.version отдает неправильную версию для IE. Возможно сейчас этот баг исправлен, но претензии по поводу версии 6.0 случаются даже от youtube-a !  


Автор курса действительно исключил IE web-браузеры до 8-й версии включительно. Зачем, не знаю, но я подозревал что он зря выдавил 8-ку. Так оно и оказалось. После недолгих поисков решение для IE оказалось простым – в ветке реестра [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent] надо создать три строковых переменные Compatible, Version, Platform cо значениями compatible, MSIE 9.0 и Windows NT 5.0 соответственно. Вот переменная Version теперь и будет подсовывать жадным чекерам версию 9.0! Как вы догадываетесь после этого видеокурс запустился как ни в чем не бывало.) 

Отлично, а что же по поводу версий альтернативных web-браузеров ? 

Тут на поверку нашлись красивые решения. Оказалось задача с подменой переменной User Agent очень даже актуальна. В двух словах про саму переменную - при посещении веб-сайта клиентский web-браузер обычно посылает веб-серверу информацию о себе. Это текстовая строка, являющаяся частью HTTP запроса, начинающаяся с User-agent: или User-Agent:, и обычно включающая такую информацию, как название и версию web-браузера, операционную систему компьютера и язык. 

Оказалось что способы изменения User Agent-ов для нижеследующих web-браузеров одинаковы, как в Linux так и в Windows. 

Начнём с Mozilla Firefox. 

 В адресной строке набираем about:config и после предупреждения попадаем в настроеки фаерфокса. Набираем в фильтре (сверху) слово general.useragent и видим, что разработчики особо не балуют трудящихся широтой выбора, и полностью изменить UserAgent с помощью появившихся полей не получится. К счастью, для этого предусмотрена одна хитрая настройка, которая по умолчанию в Firefox отсутствует, называется она general.useragent.override, и если создать настройку с таким названием (правой кнопкой мыши > создать > строка) и запихнуть в неё, например, строку «Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5″, то проверив мозиллу на этой чекалке user agent-ов увидим наш новый фейковый юзерагент. На будущее, если понадобится настоящий UserAgent, то для этого достаточно очистить строку в general.useragent.override. То же самое можно сделать и плагинами, например, User Agent Switcher-ом, который добавляет пункт в меню «Инструменты», для переключения юзерагентов на ходу. 

Теперь на очереди Opera

Опера еще беднее, в плане настроек User Agent-а, чем FireFox, в чём легко можно убедиться, набрав в панели адреса opera:config и открыв пункт «User Agent», поле «Spoof UserAgent ID», где цифрами обозначаются разные варианты UserAgent-ов: 
1) представляться как Opera (по умолчанию) 
2) представляться как Mozilla 
3) представляться как Internet Explorer 
4) маскироваться под Mozilla (Opera не упоминается) 
5) маскироваться под Internet Explorer (кроме отсутствия упоминания Оперы, в качестве операционной системы показывается Windows). 

Однако замечу, что пункт «Spoof UserAgent ID» не работает и глобального действия не имеет, по крайней мере, в версии 10.10. Opera позволяет менять юзерагент, лишь для конкретных сайтов, через меню «Инструменты» > «Быстрые настройки» > «Настройки для сайтов» > закладка «Сеть» > пункт «Идентификация браузера» либо щелкнув правой кнопкой по странице нужного сайта > «Настройки для сайтов» и далее, так же, как и в первом случае. Для добавления нужных данных к существующим UserAgent-ам Оперы, в opera:config можно использовать поле «Id» пункта «ISP» и поле «Allow Components In UA String Comment» пункта «User Agent». Они понадобятся, если нужно зайти на сайт, требующий наличия в User Agent-е определенной строки, например, операционной системы мобильника, при заходе на сайт для мобильных телефонов. 

И напоследок Google Chrome. 

Для Хрома, мне известен только один нормальный способ изменить User Agent — это запуск с опцией ‘-user-agent’. Для Windows, для этого можно модифицировать ярлык Google Chrome, чтобы в поле «Объект», где указывается полный путь до программы, было следующее: «C:\Documents and Settings\ВашПользователь\Local Settings\Application Data\Google\Chrome\Application\chrome.exe» ‘-user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)’ 

Аналогично и в Linux, в консоль либо в ярлык запуска Google Chrome на используемой рабочей среде, вставляем следующее: 
/opt/google/chrome/google-chrome ‘-user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)’ 

В обоих примерах, опция -user-agent с параметром, обрамлена обычными одинарными или двойными кавычками, а не фигурными ! Теперь проверить User Agent в Chrome можно, если набрать в адресной строке браузера команду about:version.

No comments:

Post a Comment

А что вы думаете по этому поводу?