웹 개발 테스트를 위한 랜덤 사용자 에이전트 생성기
장치 유형, 브라우저 계열 및 운영 체제별로 필터링할 수 있는 옵션과 함께 현실적인 브라우저 사용자 에이전트 문자열을 생성합니다. 웹 개발 테스트 및 호환성 검사를 위한 완벽한 도구입니다.
무작위 사용자 에이전트 생성기
웹 개발 테스트를 위한 무작위이고 현실적인 브라우저 사용자 에이전트 문자열을 생성합니다.
생성된 사용자 에이전트
문서화
랜덤 사용자 에이전트 생성기
소개
사용자 에이전트 문자열은 웹 브라우저 및 기타 애플리케이션이 웹사이트에 자신을 식별하기 위해 전송하는 특정 텍스트 식별자입니다. 이 문자열은 일반적으로 사용 중인 브라우저, 운영 체제, 장치 유형 및 렌더링 엔진에 대한 정보를 포함합니다. 웹 개발자와 테스터에게 다양한 현실적인 사용자 에이전트 문자열에 접근하는 것은 웹사이트의 호환성, 반응성 및 기능을 다양한 플랫폼에서 테스트하는 데 필수적입니다.
이 랜덤 사용자 에이전트 생성기 도구는 선택한 매개변수를 기반으로 진짜 같은 사용자 에이전트 문자열을 생성합니다. 장치 유형(데스크톱 또는 모바일), 브라우저 계열(Chrome, Firefox, Safari 또는 Edge) 및 운영 체제별로 필터링하여 테스트 요구 사항에 맞는 사용자 에이전트를 생성할 수 있습니다. 이 도구는 생성된 문자열을 한 번의 클릭으로 복사할 수 있는 간단한 인터페이스와 즉시 새로운 랜덤 문자열을 생성하는 옵션을 제공합니다.
사용자 에이전트 구조
사용자 에이전트 문자열은 브라우저 및 플랫폼에 따라 특정 패턴을 따르지만 일반적으로 몇 가지 공통 구성 요소를 포함합니다:
- 브라우저 식별자: 역사적 호환성 이유로 일반적으로 "Mozilla/5.0"으로 시작합니다.
- 플랫폼/운영 체제 정보: 운영 체제에 대한 세부정보(Windows, macOS, Android, iOS)
- 브라우저 엔진: 렌더링 엔진(예: Gecko, WebKit 또는 Blink)
- 브라우저 세부정보: 특정 브라우저 이름 및 버전
다음은 주요 브라우저에 대한 전형적인 사용자 에이전트 구조의 분해입니다:
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
장치 유형 차이
데스크톱 사용자 에이전트
데스크톱 사용자 에이전트는 일반적으로 특정 운영 체제 정보, 아키텍처 세부정보(x86_64 또는 Win64 등) 및 때때로 언어 기본 설정을 포함합니다. 이들은 모바일 사용자 에이전트보다 브라우저 간에 더 일관된 경향이 있습니다.
모바일 사용자 에이전트
모바일 사용자 에이전트는 장치 모델 정보, 모바일 운영 체제 버전 및 종종 끝에 "Mobile"이라는 단어를 포함합니다. iOS 장치의 모바일 Safari는 "iPhone" 또는 "iPad" 식별자를 포함하고, Android 장치는 제조업체 및 모델 번호를 포함합니다.
브라우저 버전 패턴
각 브라우저는 서로 다른 버전 패턴을 따릅니다:
- Chrome: 네 부분 버전 번호를 사용합니다(예: 96.0.4664.110)
- Firefox: 일반적으로 두 개 또는 세 개의 부분 버전 번호를 사용합니다(예: 95.0 또는 95.0.2)
- Safari: 15.2와 같은 간단한 버전 번호를 사용합니다.
- Edge: Chrome과 유사한 버전 번호를 사용하지만 자체 Edge 버전이 있습니다(예: 96.0.1054.62)
사용 사례
랜덤 사용자 에이전트 생성은 웹 개발 및 테스트에서 여러 중요한 응용 프로그램을 가지고 있습니다:
-
크로스 브라우저 호환성 테스트: 여러 브라우저를 설치하거나 여러 장치를 사용할 필요 없이 웹사이트가 다양한 브라우저에서 어떻게 렌더링되고 기능하는지 테스트합니다.
-
반응형 디자인 테스트: 웹사이트가 모바일 및 데스크톱 장치를 올바르게 감지하고 적절한 레이아웃을 제공하는지 확인합니다.
-
기능 감지 검증: 웹사이트의 기능 감지 메커니즘이 다양한 브라우저 기능에 대해 올바르게 작동하는지 확인합니다.
-
QA 및 자동화 테스트: 자동화된 테스트 스크립트에 다양한 사용자 에이전트를 통합하여 다양한 사용자 환경을 시뮬레이션합니다.
-
성능 테스트: 다양한 브라우저 환경에서 액세스할 때 웹사이트가 어떻게 성능을 발휘하는지 분석합니다.
-
브라우저 특정 문제 디버깅: 특정 브라우저나 버전에서만 발생하는 버그를 재현하고 수정합니다.
-
API 테스트: 다양한 클라이언트 애플리케이션에서 요청을 처리하는 방법을 테스트합니다.
대안
우리의 랜덤 사용자 에이전트 생성기는 많은 테스트 시나리오에 유용하지만 대체 접근 방식이 있습니다:
-
브라우저 테스트 서비스: BrowserStack, Sauce Labs 또는 LambdaTest와 같은 플랫폼은 사용자 에이전트를 시뮬레이션하는 대신 실제 브라우저 인스턴스를 제공합니다.
-
브라우저 개발자 도구: 대부분의 최신 브라우저는 개발자 도구를 통해 사용자 에이전트를 재정의할 수 있게 해 주며, 이는 빠른 테스트에 유용할 수 있습니다.
-
사용자 에이전트 스위처 확장: 브라우징 중에 미리 정의된 사용자 에이전트 간에 전환할 수 있는 브라우저 확장 프로그램입니다.
-
가상 머신 또는 컨테이너: 다양한 운영 체제와 브라우저의 실제 인스턴스를 실행하여 가장 정확한 테스트를 수행합니다.
-
헤드리스 브라우저 테스트: Puppeteer 또는 Selenium과 같은 도구를 사용하여 다양한 사용자 에이전트 설정으로 브라우저를 프로그래밍 방식으로 제어합니다.
각 대안은 고유한 장점이 있으며 특정 테스트 요구 사항 및 리소스에 따라 더 적합할 수 있습니다.
역사
사용자 에이전트 문자열의 개념은 월드 와이드 웹의 초기 시절로 거슬러 올라갑니다. "사용자 에이전트"라는 용어는 HTTP 사양에서 유래되었으며, 웹 서버에 요청을 하는 클라이언트 애플리케이션을 지칭합니다.
초기 시절 (1990년대)
첫 번째로 널리 사용된 브라우저인 NCSA Mosaic은 브라우저 이름과 버전을 식별하는 간단한 사용자 에이전트 문자열을 포함했습니다. 넷스케이프 내비게이터가 출시되었을 때 유사한 형식을 사용했습니다. 그러나 웹 서버가 브라우저에 따라 서로 다른 콘텐츠를 제공하기 시작하면서 "브라우저 스니핑"이라는 관행이 등장했습니다.
브라우저 전쟁 및 사용자 에이전트 스푸핑 (1990년대 후반)
넷스케이프와 인터넷 익스플로러 간의 브라우저 전쟁 동안, 웹사이트는 종종 특정 브라우저에 최적화된 콘텐츠만 제공했습니다. 호환성을 보장하기 위해 브라우저는 다른 브라우저로 자신을 식별하는 문자열을 포함하기 시작했습니다. 이것이 현대 브라우저들이 여전히 사용자 에이전트 문자열에 "Mozilla"를 포함하는 이유입니다. 이는 넷스케이프 내비게이터의 코드명에 대한 참조입니다.
모바일 혁명 (2000년대-2010년대)
모바일 장치의 출현은 사용자 에이전트 문자열에 새로운 복잡성을 도입했습니다. 모바일 브라우저는 모바일 콘텐츠를 수신하기 위해 자신을 모바일로 식별해야 했으며, 이로 인해 장치 식별자와 모바일 전용 토큰이 추가되었습니다.
현대의 도전 과제 (2010년대-현재)
웹 생태계가 더욱 복잡해짐에 따라 사용자 에이전트 문자열은 점점 더 복잡해졌습니다. 이제는 호환성 이유로 여러 브라우저 엔진(예: "AppleWebKit" 및 "Gecko")에 대한 참조를 포함하고 있으며, 실제로 사용되지 않는 엔진에 대한 참조도 포함하고 있습니다.
이러한 복잡성은 사용자 에이전트 문자열을 정확하게 구문 분석하는 데 어려움을 초래했으며, 일부 웹 표준 그룹은 사용자 에이전트 문자열을 더 구조화된 클라이언트 힌트로 대체하거나 단순화할 것을 제안했습니다. 그러나 하위 호환성 이유로 전통적인 사용자 에이전트 문자열은 웹 브라우징의 필수적인 부분으로 남아 있습니다.
코드 예제
다음은 다양한 프로그래밍 언어에서 사용자 에이전트 문자열을 사용하는 방법의 예입니다:
1// JavaScript: 사용자 에이전트에서 브라우저 유형 감지
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: 요청에서 사용자 에이전트 설정
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: 사용자 에이전트를 사용하여 모바일 장치 감지
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: 랜덤 사용자 에이전트 생성
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: 사용자 에이전트 문자열 구문 분석
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#: HttpClient에서 사용자 에이전트 설정
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // 사용자 에이전트로 HttpClient 생성
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 // 사용자 에이전트를 사용하여 요청하기
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 요청 생성
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 // 사용자 에이전트 설정
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
일반적인 사용자 에이전트 패턴
다음은 다양한 브라우저 및 플랫폼에 대한 실제 사용자 에이전트 문자열의 예입니다:
데스크톱 브라우저
Windows의 Chrome:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
macOS의 Firefox:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
macOS의 Safari:
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
Windows의 Edge:
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
모바일 브라우저
Android의 Chrome:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
iPhone의 Safari:
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
Android의 Firefox:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
갤럭시의 삼성 인터넷:
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
참고 문헌
-
"사용자 에이전트." MDN 웹 문서, 모질라, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
-
"브라우저 사용자 에이전트 문자열." WhatIsMyBrowser.com, https://www.whatismybrowser.com/guides/the-latest-user-agent/
-
"HTTP 사용자 에이전트 헤더 설명." KeyCDN, https://www.keycdn.com/support/user-agent
-
"클라이언트 힌트." MDN 웹 문서, 모질라, https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
-
"브라우저 사용자 에이전트 문자열의 역사." WebAIM, https://webaim.org/blog/user-agent-string-history/
-
"사용자 에이전트를 사용한 브라우저 감지." 구글 개발자, https://developer.chrome.com/docs/multidevice/user-agent/
피드백
이 도구에 대한 피드백을 제공하려면 피드백 토스트를 클릭하세요.
관련 도구
귀하의 워크플로에 유용할 수 있는 더 많은 도구를 발견하세요.