User agent
User Agent в обчислювальній техніці — програмний агент, який діє від імені користувача. Наприклад, пристрій, що зчитує листи електронної пошти, є поштовим клієнтом. Термін зазвичай використовується для додатків, які здійснюють доступ до вебсайтів, таким як браузери, пошукові роботи, мобільні телефони та інші пристрої.
У багатьох випадках User Agent виступає як клієнт у комунікаційному протоколі, який використовується у зв'язках в клієнт-сервері розподіленої комп'ютерної системи. Зокрема, Hypertext Transfer Protocol (HTTP) ідентифікує клієнтське програмне забезпечення, формуючи запит, за допомогою заголовка «User-Agent», навіть якщо клієнт не керується користувачем.
Ідентифікація
Коли програмний агент працює в мережевому протоколі, він часто ідентифікує себе, свій тип програми, операційну систему, виробника програмного забезпечення, або версії програмного забезпечення, представивши характерний рядок ідентифікації своєму операційному партнеру. У протоколах HTTP, SIP, і NNTP ця ідентифікація передається в поле заголовка User-Agent. Боти, такі як вебсканери, також часто містять в собі URL-адресу та / або адресу електронної пошти, так що вебмайстер може звернутися до оператора бота.
Використання в HTTP
У HTTP рядок User-Agent часто використовується для узгодження вмісту (механізм автоматичного визначення необхідного ресурсу при наявності декількох різнотипних версій документа), де вихідний сервер вибирає відповідний контент або робочі параметри для отримання відповіді. Наприклад, рядок User-Agent може використовуватися вебсервером, щоб вибрати варіанти, які базуються на відомих можливостях конкретної версії клієнтського програмного забезпечення.
Рядок User-agent також використовується вебмайстрами для запобігання індексування «пошуковими павуками» деяких сторінок сайту, наприклад коли індексування певних сторінок не має сенсу або конкретний «павук» використовує занадто багато трафіку. Вебмайстер може використовувати спеціальний файл robots.txt для рекомендацій «павука» або просто налаштувати вебсайт не віддавати «павуку» ці сторінки.
Інформація в рядку «User-Agent» робить свій внесок в інформацію, яку клієнт посилає на сервер, оскільки рядок може мати відчутні відмінності від одного користувача до іншого.
Формат для неавтоматизованих веббраузерів
Формат рядка User-Agent нині визначається розділом 5.5.3 по HTTP / 1.1 Семантика і зміст. Цей формат рядка являє собою список лексем продукції (ключові слова) з додатковими коментарями. Наприклад, якщо продукт компанії називався WikiBrowser, їх рядок User-Agent може бути WikiBrowser/1,0 Gecko/1,0. Першим в списку ставиться «важливіший» компонент продукту.
Частини цього рядка полягають в наступному:
- назва продукту і його версія (WikiBrowser/1.0)
- браузерний рушій і версія (Gecko/1.0)
Під час першої війни браузерів багато вебсерверів були налаштовані тільки відправляти вебсторінки, які вимагають додаткових функцій, в тому числі кадрів для клієнтів, які були ідентифіковані як деякі версії Mozilla. Інші браузери вважалися більш старішими продуктами, такі як Mosaic, Cello або Samba.
З цієї причини більшість веббраузерів використовують рядок User-Agent наступним чином:
Mozilla / [версія] ([система і інформація про браузер]) [платформа] ([подробиці платформи]) [розширення]
Наприклад, Safari на IPAD використовував наступне:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
Компоненти цього рядка:
- Mozilla/5.0: Раніше використовувались для позначення сумісності з рушієм виконання Mozilla.
- (IPAD; U; CPU OS 3_2_1, як Mac OS X; EN-US): Детальна інформація про систему, в якій працює браузер.
- AppleWebKit/531.21.10: Ідентифікатор рушія.
- (KHTML, like Gecko): Safari WebKit заснований на рушії KHTML, Gecko — кодове ім'я рушія останніх версій Mozilla Firefox.
- Mobile/7B405: це використовується браузером для вказівки конкретних поліпшень, які доступні безпосередньо в браузері. Прикладом цього є Microsoft Live Meeting, який реєструє його розширення, так що служба Live Meeting знає, якщо програмне забезпечення вже встановлено, що означає, що він може забезпечити упорядкований досвід приєднання зустрічей.
Перед перенесенням до кодової бази Chromium Opera був найбільш широко використовуваним веббраузер, який не мав рядок User-Agent «Mozilla» (замість «Opera»). З 15 липня 2013 року рядок User-Agent Opera починається з «Mozilla / 5.0» і, щоб уникнути зіткнення правил старого сервера, більше не містить слово «Opera».
Формат для автоматизованих агентів (ботів)
Автоматизовані інструменти вебсканування можуть використовувати спрощену форму, де важливе поле є контактною інформацією в разі виникнення проблем. Умовно слово «бот», яке входить в ім'я агента. Наприклад:
Googlebot/2.1 (+http://www.google.com/bot.html)
Автоматизовані агенти повинні слідувати правилам в спеціальному файлі з ім'ям «robots.txt».
Підробка User Agent
Популярність різних продуктів веббраузер варіювалася протягом всієї історії Web, і це вплинуло на дизайн вебсайт, таким чином, що вебсайт іноді призначені добре працювати тільки з певними браузерами, а не за єдиними стандартами Консорціуму Всесвітньої павутини (W3C) або Task Force Internet Engineering (IETF). Вебсайт часто містять код для виявлення версії браузера, щоб налаштувати дизайн сторінки, що відправляється згідно з отриманим рядком користувальницького агента. Це може означати, що менш популярні браузери не надсилають вміст (попри те, що вони могли б бути в змозі впоратися з нею правильно) або, в крайньому разі, відмовитися від всього контенту. Таким чином, різні браузери мають особливість «приховувати» або «підроблювати» їх ідентифікацію. Наприклад, Android браузер ідентифікує себе як Safari з метою надання допомоги сумісності.
Інші клієнтські програми HTTP, як менеджери завантажень і оффлайн-браузерів, часто мають можливість змінити рядок агента користувача.
Spam bots і Web scrapers часто використовують підроблені користувальницькі агенти.
Одним з результатів підробки значення User-Agent є переоцінка популярності відповідного (зазвичай і без того популярного) браузера в статистиці і недооцінка популярності інших браузерів і, як наслідок, відсутність у розробників вищеописаних сайтів стимулу до виправлення проблем сумісності. Підробка значення User-Agent також може привести до загрози безпеки.
Шифрування «U» / «I» / «N»
Netscape, Mozilla, Opera і деякі інші використовують одну з цих букв для вказівки підтримуваного рівня шифрування. Позаяк уряд США раніше не дозволяв експорт систем шифрування з ключем понад 40-біт, випускалися різні версії з різним рівнем шифрування. «U» означало «USA» (США) (для версій з ключем шифрування в 128-біт), «I» означало «International» (міжнародна) (браузер мав можливість шифрувати з ключем в 40-біт і міг використовуватися в будь-якій точці світу), «N» означало «None» (без шифрування). Спочатку версії з літерою «U» було дозволено завантажувати тільки жителям США, але відтоді, як уряд США послабило свою політику, експорт систем шифрування високого рівня тепер дозволено в більшість країн. Тепер браузери поширюються тільки у версії з літерою «U» з підтримкою шифрування з ключем до 256-біт, через те необхідність в міжнародній версії відпала.