Whiz Tools

Генератор случайных User Agent

Генерируйте случайные, реалистичные строки user agent браузера для тестирования веб-разработки.

Сгенерированный User Agent

Копировать

Генератор случайных User Agent

Введение

Строка User Agent — это специфический текстовый идентификатор, который веб-браузеры и другие приложения отправляют на веб-сайты для идентификации себя. Эта строка, как правило, содержит информацию о браузере, операционной системе, типе устройства и используемом рендеринговом движке. Для веб-разработчиков и тестировщиков доступ к разнообразным реалистичным строкам user agent имеет важное значение для тестирования совместимости, адаптивности и функциональности веб-сайтов на различных платформах.

Этот инструмент Генератора случайных User Agent создает аутентичные строки user agent на основе выбранных вами параметров. Вы можете фильтровать по типу устройства (настольный или мобильный), семейству браузеров (Chrome, Firefox, Safari или Edge) и операционной системе, чтобы генерировать user agent, соответствующие вашим требованиям к тестированию. Инструмент предоставляет простой интерфейс с возможностью копирования сгенерированной строки одним щелчком мыши и мгновенной генерации новых случайных строк.

Структура User Agent

Строки User Agent следуют определенным шаблонам в зависимости от браузера и платформы, но, как правило, содержат несколько общих компонентов:

  1. Идентификатор браузера: Обычно начинается с "Mozilla/5.0" по историческим причинам совместимости
  2. Информация о платформе/ОС: Подробности об операционной системе (Windows, macOS, Android, iOS)
  3. Движок браузера: Рендеринговый движок (например, Gecko, WebKit или Blink)
  4. Детали браузера: Конкретное название и версия браузера

Вот разбивка типичных структур user agent для основных браузеров:

Chrome

Mozilla/5.0 (platform; details) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/version Safari/537.36

Firefox

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion

Safari

Mozilla/5.0 (platform) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion

Edge

Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion

Раздел платформы значительно варьируется между настольными и мобильными устройствами:

Примеры для настольных ПК:

  • Windows: Windows NT 10.0; Win64; x64
  • macOS: Macintosh; Intel Mac OS X 10_15_7
  • Linux: X11; Linux x86_64

Примеры для мобильных устройств:

  • Android: Linux; Android 12; SM-G998B
  • iOS: iPhone; CPU iPhone OS 15_4 like Mac OS X

Различия в типах устройств

User Agents настольных ПК

User agents настольных ПК обычно включают конкретную информацию об операционной системе, детали архитектуры (такие как x86_64 или Win64) и иногда языковые предпочтения. Они, как правило, более последовательны между браузерами, чем мобильные user agents.

Мобильные User Agents

Мобильные user agents содержат информацию о модели устройства, версиях мобильной операционной системы и часто включают слово "Mobile" в конце. Мобильный Safari на устройствах iOS будет включать идентификаторы "iPhone" или "iPad", в то время как устройства Android включают производителя и номер модели.

Шаблоны версий браузеров

Каждый браузер следует различным шаблонам версии:

  • Chrome: Использует четырехчастные номера версий (например, 96.0.4664.110)
  • Firefox: Обычно использует двух- или трехчастные номера версий (например, 95.0 или 95.0.2)
  • Safari: Использует простые номера версий, такие как 15.2
  • Edge: Использует номера версий, аналогичные Chrome, но с собственным номером версии Edge (например, 96.0.1054.62)

Сценарии использования

Генерация случайных user agent имеет несколько важных приложений в веб-разработке и тестировании:

  1. Тестирование кросс-браузерной совместимости: Тестируйте, как ваш веб-сайт отображается и функционирует в различных браузерах, не устанавливая несколько браузеров или не используя несколько устройств.

  2. Тестирование адаптивного дизайна: Убедитесь, что ваш веб-сайт правильно распознает мобильные и настольные устройства и предоставляет соответствующий макет.

  3. Проверка обнаружения функций: Убедитесь, что механизмы обнаружения функций вашего веб-сайта работают правильно для различных возможностей браузеров.

  4. QA и автоматизированное тестирование: Включите различные user agents в ваши автоматизированные тестовые скрипты, чтобы смоделировать различные пользовательские среды.

  5. Тестирование производительности: Анализируйте, как ваш веб-сайт работает при доступе из различных браузерных сред.

  6. Отладка проблем, специфичных для браузера: Воспроизводите и исправляйте ошибки, которые возникают только в определенных браузерах или версиях.

  7. Тестирование API: Тестируйте, как ваш API обрабатывает запросы от различных клиентских приложений.

Альтернативы

Хотя наш генератор случайных user agent полезен для многих сценариев тестирования, существуют альтернативные подходы:

  1. Сервисы тестирования браузеров: Платформы, такие как BrowserStack, Sauce Labs или LambdaTest, предоставляют реальные экземпляры браузеров для тестирования, а не просто имитируют user agent.

  2. Инструменты разработчика браузера: Большинство современных браузеров позволяют вам переопределять user agent через свои инструменты разработчика, что может быть полезно для быстрых тестов.

  3. Расширения переключателя user agent: Расширения браузера, которые позволяют вам переключаться между предопределенными user agents во время просмотра.

  4. Виртуальные машины или контейнеры: Запуск реальных экземпляров различных операционных систем и браузеров для наиболее точного тестирования.

  5. Тестирование безголовых браузеров: Использование инструментов, таких как Puppeteer или Selenium, для программного управления браузерами с различными настройками user agent.

Каждая альтернатива имеет свои преимущества и может быть более подходящей в зависимости от ваших конкретных потребностей в тестировании и ресурсов.

История

Концепция строки user agent восходит к ранним дням Всемирной паутины. Термин "user agent" происходит из спецификации HTTP, где он относится к клиентскому приложению, отправляющему запрос на веб-сервер.

Ранние дни (1990-е)

Первый широко используемый браузер, NCSA Mosaic, включал простую строку user agent, которая идентифицировала название и версию браузера. Когда был выпущен Netscape Navigator, он использовал аналогичный формат. Однако, когда веб-серверы начали доставлять различный контент в зависимости от браузера, возникла практика, известная как "сниффинг браузера".

Войны браузеров и подделка user agent (Конец 1990-х)

Во время войн браузеров между Netscape и Internet Explorer веб-сайты часто предоставляли оптимизированный контент исключительно для определенных браузеров. Чтобы обеспечить совместимость, браузеры начали включать строки, которые идентифицировали их как другие браузеры. Именно поэтому большинство современных браузеров все еще включают "Mozilla" в свои строки user agent, что является отсылкой к кодовому имени Netscape Navigator.

Мобильная революция (2000-е - 2010-е)

Рост мобильных устройств привел к новой сложности строк user agent. Мобильные браузеры должны были идентифицировать себя как мобильные, чтобы получать соответствующий контент, что привело к добавлению идентификаторов устройств и мобильных токенов.

Современные проблемы (2010-е - настоящее время)

Поскольку веб-экосистема стала более сложной, строки user agent стали все более запутанными. Они теперь содержат ссылки на несколько рендеринговых движков (таких как "AppleWebKit" и "Gecko") по причинам совместимости, даже если эти движки на самом деле не используются.

Эта сложность привела к проблемам с точным анализом строк user agent, и некоторые группы стандартов веба предложили отказаться от или упростить строки user agent в пользу более структурированных подсказок клиента. Однако, по причинам обратной совместимости, традиционная строка user agent остается важной частью веб-серфинга.

Примеры кода

Вот примеры того, как работать со строками user agent на различных языках программирования:

// JavaScript: Обнаружение типа браузера из строки user agent
function detectBrowser() {
  const userAgent = navigator.userAgent;
  
  if (userAgent.indexOf("Firefox") > -1) {
    return "Firefox";
  } else if (userAgent.indexOf("SamsungBrowser") > -1) {
    return "Samsung Browser";
  } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
    return "Opera";
  } else if (userAgent.indexOf("Trident") > -1) {
    return "Internet Explorer";
  } else if (userAgent.indexOf("Edge") > -1) {
    return "Edge";
  } else if (userAgent.indexOf("Chrome") > -1) {
    return "Chrome";
  } else if (userAgent.indexOf("Safari") > -1) {
    return "Safari";
  } else {
    return "Неизвестно";
  }
}

// Использование
console.log("Вы используете: " + detectBrowser());
# Python: Установка пользовательского user agent в запросах
import requests

def fetch_with_user_agent(url, user_agent):
    headers = {
        'User-Agent': user_agent
    }
    response = requests.get(url, headers=headers)
    return response.text

# Пример использования
chrome_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
content = fetch_with_user_agent('https://example.com', chrome_ua)
print(content[:100])  # Печать первых 100 символов ответа
<?php
// PHP: Обнаружение мобильных устройств с помощью строки user agent
function isMobileDevice() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    $mobileKeywords = array('Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone');
    
    foreach ($mobileKeywords as $keyword) {
        if (stripos($userAgent, $keyword) !== false) {
            return true;
        }
    }
    return false;
}

// Использование
if (isMobileDevice()) {
    echo "Вы используете мобильное устройство.";
} else {
    echo "Вы используете настольное устройство.";
}
?>
// Java: Генерация случайного user agent
import java.util.Random;

public class UserAgentGenerator {
    private static final String[] CHROME_VERSIONS = {"96.0.4664.110", "95.0.4638.69", "94.0.4606.81"};
    private static final String[] OS_VERSIONS = {"Windows NT 10.0; Win64; x64", 
                                               "Macintosh; Intel Mac OS X 10_15_7",
                                               "X11; Linux x86_64"};
    
    public static String generateRandomChromeUserAgent() {
        Random random = new Random();
        String osVersion = OS_VERSIONS[random.nextInt(OS_VERSIONS.length)];
        String chromeVersion = CHROME_VERSIONS[random.nextInt(CHROME_VERSIONS.length)];
        
        return "Mozilla/5.0 (" + osVersion + ") AppleWebKit/537.36 (KHTML, like Gecko) " +
               "Chrome/" + chromeVersion + " Safari/537.36";
    }
    
    public static void main(String[] args) {
        System.out.println(generateRandomChromeUserAgent());
    }
}
# Ruby: Парсинг строки user agent
require 'user_agent_parser'

def parse_user_agent(user_agent_string)
  parser = UserAgentParser::Parser.new
  client = parser.parse(user_agent_string)
  
  {
    browser_name: client.family,
    browser_version: client.version.to_s,
    os_name: client.os.family,
    os_version: client.os.version.to_s,
    device: client.device.family
  }
end

# Пример использования
ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1'
info = parse_user_agent(ua)
puts info
// C#: Установка user agent в HttpClient
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Создание HttpClient с пользовательским user agent
        using (var httpClient = new HttpClient())
        {
            string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
            httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
            
            try
            {
                // Выполнение запроса с пользовательским user agent
                HttpResponseMessage response = await httpClient.GetAsync("https://example.com");
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                
                Console.WriteLine($"Ответ получен с кодом состояния: {response.StatusCode}");
                Console.WriteLine(responseBody.Substring(0, 100) + "..."); // Первые 100 символов
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine($"Ошибка запроса: {e.Message}");
            }
        }
    }
}
// Go: Создание HTTP-запросов с пользовательскими user agents
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    // Создание нового запроса
    req, err := http.NewRequest("GET", "https://example.com", nil)
    if err != nil {
        fmt.Printf("Ошибка при создании запроса: %s\n", err)
        return
    }
    
    // Установка пользовательского user agent
    req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")
    
    // Отправка запроса
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Printf("Ошибка при отправке запроса: %s\n", err)
        return
    }
    defer resp.Body.Close()
    
    // Чтение ответа
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("Ошибка при чтении ответа: %s\n", err)
        return
    }
    
    fmt.Printf("Статус ответа: %s\n", resp.Status)
    fmt.Printf("Предварительный просмотр тела ответа: %s\n", body[:100])
}

Распространенные шаблоны User Agent

Вот некоторые примеры реальных строк user agent для различных браузеров и платформ:

Настольные браузеры

Chrome на Windows:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Firefox на macOS:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0

Safari на macOS:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

Edge на Windows:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62

Мобильные браузеры

Chrome на Android:

Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36

Safari на iPhone:

Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1

Firefox на Android:

Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0

Samsung Internet на Galaxy:

Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/16.0 Chrome/92.0.4515.166 Mobile Safari/537.36

Ссылки

  1. "User Agent." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

  2. "Строки User Agent браузера." WhatIsMyBrowser.com, https://www.whatismybrowser.com/guides/the-latest-user-agent/

  3. "HTTP User-Agent Header Explained." KeyCDN, https://www.keycdn.com/support/user-agent

  4. "Client Hints." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints

  5. "История строки user agent браузера." WebAIM, https://webaim.org/blog/user-agent-string-history/

  6. "Обнаружение браузера с использованием User Agent." Google Developers, https://developer.chrome.com/docs/multidevice/user-agent/

Обратная связь