Генератор на произволни потребителски агенти за тестване на уеб разработки
Генерирайте реалистични низове на потребителски агенти на браузъри с опции за филтриране по тип устройство, браузърска фамилия и операционна система. Перфектно за тестване на уеб разработки и проверки на съвместимост.
Генератор на случайни потребителски агенти
Генерирайте случайни, реалистични низове на браузърски потребителски агенти за тестване на уеб разработка.
Генериран потребителски агент
Документация
Генератор на случайни User Agent-и
Въведение
Стрингът на User Agent е специфичен текстов идентификатор, който уеб браузърите и други приложения изпращат на уебсайтове, за да се идентифицират. Този стринг обикновено съдържа информация за браузъра, операционната система, типа устройство и рендериращия двигател, който се използва. За уеб разработчиците и тестерите, достъпът до разнообразие от реалистични стрингове на User Agent е съществен за тестване на съвместимостта, отзивчивостта и функционалността на уебсайтовете на различни платформи.
Този инструмент за генерация на случайни User Agent-и създава автентични изглеждащи стрингове на User Agent на базата на избраните от вас параметри. Можете да филтрирате по тип устройство (десктоп или мобилен), семейство браузъри (Chrome, Firefox, Safari или Edge) и операционна система, за да генерирате User Agent-и, които отговарят на вашите изисквания за тестване. Инструментът предоставя прост интерфейс с опции за копиране на генерирания стринг с едно кликване и незабавно генериране на нови случайни стрингове.
Структура на User Agent
Стрингът на User Agent следва специфични модели в зависимост от браузъра и платформата, но обикновено съдържа няколко общи компонента:
- Идентификатор на браузъра: Обикновено започва с "Mozilla/5.0" по исторически причини за съвместимост
- Информация за платформата/ОС: Подробности за операционната система (Windows, macOS, Android, iOS)
- Двигател на браузъра: Рендериращият двигател (като Gecko, WebKit или Blink)
- Детайли за браузъра: Специфичното име и версия на браузъра
Ето разбивка на типичните структури на User Agent за основните браузъри:
Chrome
1Mozilla/5.0 (platform; details) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/version Safari/537.36
2
Firefox
1Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
2
Safari
1Mozilla/5.0 (platform) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion
2
Edge
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2
Секцията за платформата варира значително между десктоп и мобилни устройства:
Примери за десктоп:
- 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 Agent-ите обикновено включват специфична информация за операционната система, детайли за архитектурата (като x86_64 или Win64) и понякога предпочитания за език. Те обикновено са по-консистентни между браузърите, отколкото мобилните User Agent-и.
Мобилни User Agents
Мобилните User Agent-и съдържат информация за модела на устройството, версии на мобилната операционна система и често включват думата "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-и има няколко важни приложения в уеб разработката и тестването:
-
Тестване на съвместимост между браузъри: Тествайте как вашият уебсайт се визуализира и функционира на различни браузъри, без да е необходимо да инсталирате множество браузъри или да използвате множество устройства.
-
Тестване на отзивчивия дизайн: Уверете се, че вашият уебсайт правилно разпознава мобилни и десктоп устройства и предоставя подходящия изглед.
-
Валидиране на открития на функции: Уверете се, че механизмите за открития на функции на вашия уебсайт работят правилно за различни възможности на браузъра.
-
QA и автоматизирано тестване: Включете различни User Agent-и в автоматизирани тестови скриптове, за да симулирате различни потребителски среди.
-
Тестване на производителността: Анализирайте как вашият уебсайт се представя, когато се достъпва от различни браузърни среди.
-
Отстраняване на проблеми, специфични за браузъра: Възпроизведете и поправете бъгове, които се появяват само в специфични браузъри или версии.
-
Тестване на API: Тествайте как вашият API обработва заявки от различни клиентски приложения.
Алтернативи
Въпреки че нашият генератор на случайни User Agent-и е полезен за много сценарии на тестване, съществуват алтернативни подходи:
-
Услуги за тестване на браузъри: Платформи като BrowserStack, Sauce Labs или LambdaTest предоставят действителни браузърни инстанции за тестване, а не просто симулиране на User Agent.
-
Инструменти за разработчици на браузъри: Повечето съвременни браузъри позволяват да замените User Agent чрез инструментите за разработчици, което може да е полезно за бързи тестове.
-
Разширения за смяна на User Agent: Разширения на браузъра, които ви позволяват да превключвате между предварително зададени User Agent-и, докато сърфирате.
-
Виртуални машини или контейнери: Изпълняване на действителни инстанции на различни операционни системи и браузъри за най-точно тестване.
-
Тестване с безглави браузъри: Използване на инструменти като 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 на различни програмни езици:
1// JavaScript: Откриване на типа браузър от стринг на User Agent
2function detectBrowser() {
3 const userAgent = navigator.userAgent;
4
5 if (userAgent.indexOf("Firefox") > -1) {
6 return "Firefox";
7 } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8 return "Samsung Browser";
9 } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10 return "Opera";
11 } else if (userAgent.indexOf("Trident") > -1) {
12 return "Internet Explorer";
13 } else if (userAgent.indexOf("Edge") > -1) {
14 return "Edge";
15 } else if (userAgent.indexOf("Chrome") > -1) {
16 return "Chrome";
17 } else if (userAgent.indexOf("Safari") > -1) {
18 return "Safari";
19 } else {
20 return "Unknown";
21 }
22}
23
24// Използване
25console.log("Използвате: " + detectBrowser());
26
1# Python: Задаване на собствен User Agent в requests
2import requests
3
4def fetch_with_user_agent(url, user_agent):
5 headers = {
6 'User-Agent': user_agent
7 }
8 response = requests.get(url, headers=headers)
9 return response.text
10
11# Пример за използване
12chrome_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
13content = fetch_with_user_agent('https://example.com', chrome_ua)
14print(content[:100]) # Печат на първите 100 символа от отговора
15
1<?php
2// PHP: Откриване на мобилни устройства с помощта на User Agent
3function isMobileDevice() {
4 $userAgent = $_SERVER['HTTP_USER_AGENT'];
5 $mobileKeywords = array('Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone');
6
7 foreach ($mobileKeywords as $keyword) {
8 if (stripos($userAgent, $keyword) !== false) {
9 return true;
10 }
11 }
12 return false;
13}
14
15// Използване
16if (isMobileDevice()) {
17 echo "Използвате мобилно устройство.";
18} else {
19 echo "Използвате десктоп устройство.";
20}
21?>
22
1// Java: Генериране на случаен User Agent
2import java.util.Random;
3
4public class UserAgentGenerator {
5 private static final String[] CHROME_VERSIONS = {"96.0.4664.110", "95.0.4638.69", "94.0.4606.81"};
6 private static final String[] OS_VERSIONS = {"Windows NT 10.0; Win64; x64",
7 "Macintosh; Intel Mac OS X 10_15_7",
8 "X11; Linux x86_64"};
9
10 public static String generateRandomChromeUserAgent() {
11 Random random = new Random();
12 String osVersion = OS_VERSIONS[random.nextInt(OS_VERSIONS.length)];
13 String chromeVersion = CHROME_VERSIONS[random.nextInt(CHROME_VERSIONS.length)];
14
15 return "Mozilla/5.0 (" + osVersion + ") AppleWebKit/537.36 (KHTML, like Gecko) " +
16 "Chrome/" + chromeVersion + " Safari/537.36";
17 }
18
19 public static void main(String[] args) {
20 System.out.println(generateRandomChromeUserAgent());
21 }
22}
23
1# Ruby: Парсване на стринг на User Agent
2require 'user_agent_parser'
3
4def parse_user_agent(user_agent_string)
5 parser = UserAgentParser::Parser.new
6 client = parser.parse(user_agent_string)
7
8 {
9 browser_name: client.family,
10 browser_version: client.version.to_s,
11 os_name: client.os.family,
12 os_version: client.os.version.to_s,
13 device: client.device.family
14 }
15end
16
17# Пример за използване
18ua = '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'
19info = parse_user_agent(ua)
20puts info
21
1// C#: Задаване на User Agent в HttpClient
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // Създаване на HttpClient с собствен User Agent
11 using (var httpClient = new HttpClient())
12 {
13 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";
14 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
15
16 try
17 {
18 // Извършване на заявка с собствен User Agent
19 HttpResponseMessage response = await httpClient.GetAsync("https://example.com");
20 response.EnsureSuccessStatusCode();
21 string responseBody = await response.Content.ReadAsStringAsync();
22
23 Console.WriteLine($"Получен отговор с код на статус: {response.StatusCode}");
24 Console.WriteLine(responseBody.Substring(0, 100) + "..."); // Първите 100 символа
25 }
26 catch (HttpRequestException e)
27 {
28 Console.WriteLine($"Грешка при заявката: {e.Message}");
29 }
30 }
31 }
32}
33
1// Go: Създаване на HTTP заявки с персонализирани User Agent-и
2package main
3
4import (
5 "fmt"
6 "io/ioutil"
7 "net/http"
8)
9
10func main() {
11 // Създаване на нова заявка
12 req, err := http.NewRequest("GET", "https://example.com", nil)
13 if err != nil {
14 fmt.Printf("Грешка при създаване на заявката: %s\n", err)
15 return
16 }
17
18 // Задаване на собствен User Agent
19 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")
20
21 // Изпращане на заявката
22 client := &http.Client{}
23 resp, err := client.Do(req)
24 if err != nil {
25 fmt.Printf("Грешка при изпращане на заявката: %s\n", err)
26 return
27 }
28 defer resp.Body.Close()
29
30 // Четене на отговора
31 body, err := ioutil.ReadAll(resp.Body)
32 if err != nil {
33 fmt.Printf("Грешка при четене на отговора: %s\n", err)
34 return
35 }
36
37 fmt.Printf("Статус на отговора: %s\n", resp.Status)
38 fmt.Printf("Преглед на съдържанието на отговора: %s\n", body[:100])
39}
40
Чести шаблони на User Agent
Ето някои примери за реални стрингове на User Agent за различни браузъри и платформи:
Десктоп браузъри
Chrome на Windows:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
Firefox на macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
Safari на macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
2
Edge на Windows:
1Mozilla/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
2
Мобилни браузъри
Chrome на Android:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
Safari на iPhone:
1Mozilla/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
2
Firefox на Android:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
Samsung Internet на Galaxy:
1Mozilla/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
2
Референции
-
"User Agent." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
-
"Browser User Agent Strings." WhatIsMyBrowser.com, https://www.whatismybrowser.com/guides/the-latest-user-agent/
-
"HTTP User-Agent Header Explained." KeyCDN, https://www.keycdn.com/support/user-agent
-
"Client Hints." MDN Web Docs, Mozilla, https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
-
"History of the browser user-agent string." WebAIM, https://webaim.org/blog/user-agent-string-history/
-
"Browser Detection Using the User Agent." Google Developers, https://developer.chrome.com/docs/multidevice/user-agent/
Обратна връзка
Кликнете върху обратната връзка, за да започнете да давате обратна връзка за този инструмент
Свързани инструменти
Открийте още инструменти, които може да бъдат полезни за вашия работен процес