사용자-에이전트 헤더
User-Agent header컴퓨팅에서 사용자 에이전트 헤더는 지정된 HTTP 요청을 수행하는 사용자 에이전트를 식별하기 위한 HTTP 헤더입니다.반면에 캐릭터 시퀀스는.User-Agent헤더 자체의 이름으로 구성되며, 지정된 사용자 에이전트가 자신을 식별하기 위해 사용하는 헤더 값은 구어체로 사용자 에이전트 문자열이라고 합니다.웹에 액세스하는 데 사용되는 컴퓨터의 운영자에 대한 사용자 에이전트는 요청-응답 트랜잭션의 절반을 협상하는 방법에 대한 지식을 관리하는 규칙 내에서 인코딩되었습니다. 따라서 사용자 에이전트는 클라이언트-서버 시스템에서 클라이언트의 역할을 수행합니다.네트워크에서 종종 유용한 것으로 간주되는 것은 네트워크 세션을 촉진하는 소프트웨어를 식별하고 구별하는 기능입니다.이러한 이유로 User-Agent HTTP 헤더는 응답 서버에 대한 클라이언트 소프트웨어를 식별하기 위해 존재합니다.
클라이언트 요청에서 사용
소프트웨어 에이전트가 네트워크 프로토콜에서 작동할 때 운영 체제 피어에 특성 식별 문자열을 제출하여 자신, 응용 프로그램 유형, 운영 체제, 장치 모델, 소프트웨어 공급업체 또는 소프트웨어 버전을 식별하는 경우가 많습니다.HTTP,[1] [2]SIP 및 NNTP[3] 프로토콜에서 이 식별 정보는 User-Agent 헤더 필드로 전송됩니다.웹 크롤러와 같은 봇에는 웹 마스터가 봇의 운영자에게 연락할 수 있도록 URL 및/또는 전자 메일 주소도 포함됩니다.
HTTP에서 "사용자 에이전트 문자열"은 종종 원본 서버가 응답에 적합한 내용 또는 작동 매개변수를 선택하는 내용 협상에 사용됩니다.예를 들어 사용자 에이전트 문자열은 웹 서버에서 특정 클라이언트 소프트웨어 버전의 알려진 기능을 기반으로 변형을 선택하는 데 사용될 수 있습니다.콘텐츠 조정의 개념은 "특정 사용자 에이전트 제한을 피하기 위해 응답을 조정하기 위해" RFC 1945의 HTTP 표준에 내장되어 있습니다.
사용자 에이전트 문자열은 로봇 제외 표준(로봇)을 사용하여 웹 크롤러가 웹 사이트의 특정 부분에 액세스하지 못하도록 하는 기준 중 하나입니다.txt 파일).
다른 많은 HTTP 요청 헤더와 마찬가지로, 문자열은 [4]사용자마다 상당히 다를 수 있기 때문에 사용자 에이전트 문자열의 정보는 클라이언트가 서버로 보내는 정보에 기여합니다.
사람이 조작하는 웹 브라우저의 형식
사용자 에이전트 문자열 형식은 현재 HTTP Semantics의 섹션 10.1.5에 의해 지정되어 있습니다.HTTP의 사용자 에이전트 문자열 형식은 주석이 있는 제품 토큰(키워드) 목록입니다.예를 들어 사용자의 제품 이름이 WikiBrowser인 경우 사용자 에이전트 문자열은 WikiBrowser/1.0 Gecko/1.0일 수 있습니다."가장 중요한" 제품 구성 요소가 먼저 나열됩니다.
이 문자열의 부분은 다음과 같습니다.
- 제품명 및 버전 (위키브라우저/1.0)
- 레이아웃 엔진 및 버전(Gecko/1.0)
첫 번째 브라우저 전쟁 동안, 많은 웹 서버는 프레임을 포함한 고급 기능이 필요한 웹 페이지를 Mozilla의 일부 버전으로만 [5]식별된 클라이언트로 보내도록 구성되었습니다.다른 브라우저는 Mosaic, Cello 또는 Samba와 같은 오래된 제품으로 간주되며 기본 HTML 문서로 전송됩니다.
이러한 이유로 대부분의 웹 브라우저는 다음과 같이 사용자 에이전트 문자열 값을 사용합니다.
예를 들어 iPad의 Safari는 다음을 사용했습니다.
Mozilla/5.0(iPad, U, Mac OS X와 같은 CPU OS 3_2_1, en-us) Apple WebKit/531.21.10(KHTML, Gecko와 같은) Mobile/7B405
이 문자열의 구성 요소는 다음과 같습니다.
- Mozilla/5.0: 이전에는 Mozilla 렌더링 엔진과의 호환성을 나타내기 위해 사용되었습니다.
- (iPad, U, Mac OS X와 같은 CPU OS 3_2_1, en-us):브라우저가 실행 중인 시스템의 세부 정보입니다.
- Apple WebKit/531.21.10:브라우저가 사용하는 플랫폼입니다.
- (KHTML, 게코처럼):브라우저 플랫폼 세부 정보.
- 모바일/7B405:이 기능은 브라우저에서 직접 또는 타사를 통해 사용할 수 있는 특정 향상 기능을 나타내기 위해 브라우저에서 사용됩니다.이러한 예로는 Microsoft Live Meeting이 있습니다. Microsoft Live Meeting 서비스는 소프트웨어가 이미 설치되어 있는지 여부를 알 수 있도록 확장을 등록합니다. 즉, 회의에 참석할 때 효율적인 환경을 제공할 수 있습니다.
크롬 코드 베이스로 마이그레이션하기 전에 오페라는 "Mozilla"로 시작하는 사용자 에이전트 문자열이 없는 가장 널리 사용되는 웹 브라우저였습니다.2013년 [6]7월 15일부터 Opera의 사용자 에이전트 문자열은 "Mozilla/5.0"으로 시작하며 레거시 서버 규칙을 피하기 위해 더 이상 "Opera"라는 단어를 포함하지 않습니다(Opera 버전을 나타내는 문자열 "OPR" 대신 사용).
자동화된 에이전트(봇)의 형식
자동화된 웹 크롤링 도구는 문제 발생 시 연락처 정보가 중요한 필드인 단순화된 양식을 사용할 수 있습니다.관례상 "봇"이라는 단어는 에이전트 이름에 포함됩니다.예:
Googlebot/2.1(+http://www.google.com/bot.html) )
자동화된 에이전트는 "robots.txt"라는 특수 파일의 규칙을 따라야 합니다.
암호화 강도 표기법
Netscape Navigator 및 Internet Explorer와 같은 미국에서 만들어진 웹 브라우저는 이전에 U, I 및 N 문자를 사용하여 사용자 에이전트 문자열에 암호화 강도를 지정했습니다.1996년 미국 정부가 40비트 이상의 키를 가진 암호화 수출을 허용할 때까지 공급업체들은 각기 다른 암호화 강도를 가진 다양한 브라우저 버전을 출하했습니다."U"는 "USA"(128비트 암호화 버전의 경우), "I"는 "International"(40비트 암호화 기능이 있는 브라우저), "N"은 "None"(암호화 [7]없음)을 나타냅니다.내보내기 제한이 해제된 후 대부분의 공급업체는 256비트 암호화를 지원했습니다.
사용자 에이전트 스푸핑
다양한 웹 브라우저 제품의 인기는 웹의 역사를 통해 다양해졌으며, 이것은 웹사이트가 때때로 특정 브라우저에서만 잘 작동하도록 설계되는 방식으로 웹사이트의 디자인에 영향을 미쳤습니다.W3C(World Wide Web Consortium)나 IETF(Internet Engineering Task Force)의 통일된 표준에 따라 결정하는 것이 아니라, 이를 통해 개발되었습니다.웹 사이트에는 종종 브라우저 버전을 탐지하는 코드가 포함되어 수신된 사용자 에이전트 문자열에 따라 전송되는 페이지 설계를 조정합니다.이는 인기가 낮은 브라우저가 복잡한 콘텐츠를 보내지 않거나(정확하게 처리할 수 있더라도), 극단적인 경우 모든 [8]콘텐츠를 거부할 수 있음을 의미할 수 있습니다.따라서 다양한 브라우저에는 특정 서버 측 콘텐츠를 강제로 적용하기 위해 식별 정보를 숨기거나 스푸핑하는 기능이 있습니다.예를 들어,[9][10] Android 브라우저는 호환성을 높이기 위해 자신을 Safari로 식별합니다.
다운로드 관리자 및 오프라인 브라우저와 같은 다른 HTTP 클라이언트 프로그램에는 사용자 에이전트 문자열을 변경할 수 있는 기능이 있습니다.
사용자 에이전트 스푸핑으로 인해 수집된 웹 브라우저 사용 통계가 정확하지 않을 수 있습니다.
사용자 에이전트 스니핑
사용자 에이전트 스니핑은 특정 사용자 에이전트에서 볼 때 웹 사이트의 내용이 다르거나 조정된 내용을 표시하는 방식입니다.예를 들어 마이크로소프트 Exchange 서버 2003의 Outlook Web Access 기능이 있습니다.Internet Explorer 6 이상 버전에서 볼 때 다른 브라우저에서 동일한 페이지에 비해 더 많은 기능이 표시됩니다.사용자 에이전트 스니핑은 브라우저별 설계를 장려하고 인식할 수 없는 사용자 에이전트 ID를 가진 새 브라우저에 불이익을 주기 때문에 잘못된 관행으로 간주됩니다.대신 W3C는 표준 HTML [11]마크업을 만들어 가능한 한 많은 브라우저에서 정확한 렌더링을 허용하고 특정 브라우저 버전이나 [12]브랜드가 아닌 특정 브라우저 기능을 테스트할 것을 권장합니다.
모바일 브라우저가 서로 큰 차이를 보이는 경우가 많기 때문에 휴대폰으로 표시되는 웹 사이트는 종종 사용자 에이전트 스니핑에 의존합니다.
브라우저의 잘못된 사용자 에이전트 헤더 식별 및 사용 중지
2020년에 구글은 크롬 브라우저에서 사용자 에이전트 헤더의 일부를 동결할 것이라고 발표했습니다.그들은 다른 주요 웹 브라우저 공급업체들이 이러한 움직임을 지지하지만, 다른 공급업체들이 언제 [13]이를 따를지는 모른다고 말했습니다.구글은 클라이언트 힌트라는 새로운 기능이 사용자 에이전트 [14]문자열의 기능을 대체할 것이라고 말했습니다.2023년 4월 출시된 크롬 113부터는 메이저 버전 [15]부분을 제외하고는 사용자 에이전트 헤더가 그대로 유지됩니다.
2023년 [16]2월 출시된 파이어폭스 110을 시작으로 모질라는 브라우저의 사용자 에이전트 문자열 일부를 버전 109에서 일시적으로 동결할 것이라고 발표했습니다.이는 여러 웹 사이트가 브라우저의 개발 버전을 잘못 인식했기 때문입니다(문자열로 자신을 식별함).Mozilla/5.0 (Windows NT 10.0; Win64; rv:110.0) Gecko/20100101 Firefox/110.0 )[17] 을 사용하지 않는 것과 같이Internet Explorer 11(리포트)Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko) 이 문제는 Firefox 120이 출시된 후에 자동으로 해결됩니다. 110부터 119까지 자신을 식별하는 브라우저만 [19]해당 문제에 영향을 받는 것으로 확인되었기 때문입니다.[18]
참고 항목
레퍼런스
- ^ "RFC-9110: HTTP Semantics". IETF. Retrieved 28 July 2022.
- ^ RFC 3261, SIP: Session Initiation Protocol, IETF, The Internet Society (2002)
- ^ Netnews Article Format. IETF. November 2009. sec. 3.2.13. doi:10.17487/RFC5536. RFC 5536.
- ^ Eckersley, Peter (27 January 2010). "Browser Versions Carry 10.5 Bits of Identifying Information on Average". Electronic Frontier Foundation. Retrieved 25 August 2011.
- ^ 브라우저 사용자-에이전트 문자열의 기록입니다.웹AIM.
- ^ "Opera User Agent Strings: Opera 15 and Beyond". dev.opera.com. 15 July 2013. Retrieved 2014-05-05.
- ^ Zawinski, Jamie (28 March 1998). "user-agent strings (obsolete)". mozilla.org. Retrieved 2010-01-08.
- ^ 버스타인은 "..."라고 불평했습니다.Netscape로 돌아올 때까지 거절당했습니다."
- ^ "Android Browser Reports Itself as Apple Safari". Archived from the original on August 6, 2011. Retrieved August 9, 2011.
- ^ "User Agent String explained: Android Webkit Browser". UserAgentString.com. Archived from the original on 4 May 2012. Retrieved 29 July 2012.
Mozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
- ^ Pemberton, Stephen. "W3C Markup Validation Service". W3C. Retrieved 2011-10-18.
- ^ Clary, Bob (10 February 2003). "Browser Detection and Cross Browser Support". Mozilla Developer Center. Mozilla. Archived from the original on 2011-11-17. Retrieved 2009-05-30.
- ^ "Chrome Phasing out Support for User Agent". InfoQ. Retrieved 2020-03-25.
- ^ Cimpanu, Catalin. "Google to phase out user-agent strings in Chrome". ZDNet. Retrieved 2020-03-25.
- ^ "User-Agent Reduction". www.chromium.org. Retrieved 2023-07-13.
- ^ "Firefox Release Notes". mozilla.org. Retrieved 8 April 2023.
- ^ "www.bestbuy.com - Firefox is an unsupported browser". github.com. Retrieved 8 April 2023.
- ^ Schubert, Dennis. "Freeze `rv:` segment in the User Agent string to `rv:109.0` to avoid erroneous IE11 detection". bugzilla.mozilla.org. Retrieved 8 April 2023.
- ^ Peterson, Chris. "Remove the frozen `rv:109.0` IE11 UA workaround after Firefox reaches version 120 (desktop and Android)". bugzilla.mozilla.org. Retrieved 8 April 2023.