2016-11-27 3 views
0

사용자 에이전트 문자열을 구문 분석하고 이상적으로이를 Python 사전에 추출하려고합니다. 그물을 닦은 후, 이것을하는 유일한 방법은 처음부터 정규식 파서를 프로그래밍하는 것입니다. 지금까지 내가 아는 한 가장 좋은 해결책은 https://github.com/ua-parser의 기여자가 수행 한 것입니다.사용자 에이전트 문자열 파서?

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

내가 (파이썬) 위에서 언급 한 UA-파서를 통해 공급, 나는 다음과 같은 사전 얻을 :

에게 이제

다음 사용자 에이전트 (UA) 문자열을 고려
{ 'device': {'brand': None, 'family': 'Other', 'model': None}, 
    'os': { 'family': 'Windows 7', 
       'major': None, 
       'minor': None, 
       'patch': None, 
       'patch_minor': None}, 
    'string': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko', 
    'user_agent': {'family': 'IE', 'major': '11', 'minor': '0', 'patch': None}} 
그래서 여기

내 질문 : 왜 반환 user_agent 필드가 때 분명히, 원래 UA 문자열에 IE에 대한 참조가없는 그 가족이 IE 11이라고 말하는가? 첫 번째 키워드 인 Mozilla/5.0은 어떻게 되었습니까? Windows NT 6.1이 Windows 7 제품군으로 간주되는 이유는 무엇입니까? 출력 사전은 입력 UA 문자열과 관련이 거의없는 것 같습니다. 다음 온라인 파서에 UA 문자열을 먹이 시도하고 자신에 대한 참조 :

https://udger.com/resources/online-parser?Fuas=Mozilla%2F5.0+%28Windows+NT+6.1%3B+Trident%2F7.0%3B+rv%3A11.0%29+like+Gecko%0D%0A&Fip=&test=&action=analyze

나는 미친 건가요 이들 파서는 마크 떨어져 완전히입니까?

사이드 노트 : 사용자 에이전트 문자열은 HTTP 표준 https://tools.ietf.org/html/rfc7231#section-5.5.3에 지정된대로 잘 정의 된 형식을 따릅니다.

+0

트라이던트는'IE' 엔진입니다. 'Windows 7'은 항상 'Windows NT 6.1'을 보냅니다. 빌 게이츠 (Bill Gates)에게 자신의 코드에 'Windows NT 6.1'이라는 이름을 사용하기로 결정한 이유를 묻는다. – furas

+0

BTW : Windows 8은 Windows NT 6.2, Windows 8.1은 Windows NT 6.3, Windows 2000은 Windows NT 5.0, Windows NT는 Windows NT 4.0을 사용합니다. – furas

+0

브라우저 식별 문자열의 해석이 프로그래밍 문제가 아니기 때문에이 질문을 주제와 관련이 없다고 투표하는 것이 좋습니다.또한 문제는 외부 라이브러리의 기능에 대한 주요 문제로 불평하는 것 같습니다. 이것은 SO가 아닌 프로젝트 웹 사이트에서 논의되어야합니다. –

답변

0

의 각 매개 변수를 분쇄하자 그것을 이해 ... 당신은 그러므로 그것들을 분석하는 것은 간단한 문제라고 생각 싶지만는 경우가하지 않는 것 같다

모질라/5.0을 - 일반 토큰인가 브라우저는 모질라와 호환되며 오늘날 거의 모든 브라우저에 공통적이라고한다.

Windows NT 6.1 - 브라우저의 플랫폼. Windows NT는 Windows 운영 체제가 사용하는 커널입니다. 각 버전은 Windows의 다른 버전입니다 (here 참조).

Trident/7.0 - IE에서 레이아웃 엔진을 사용하고 있습니까? 이 파일은 Engine_Name/Version으로 분할됩니다.

rv : 11.0 - 브라우저 버전. 여기서 IE11을 나타냅니다.

Gecko과 같이 - 웹 사이트가 브라우저에 적합한 CSS 규칙을 식별하기 위해 사용자 에이전트에서 특정 문자열을 검색합니다. like Gecko 웹 사이트를 추가함으로써 IE는 Gecko 템플릿 CSS 규칙을 처리 할 수 ​​있다는 것을 알고 있습니다. MSDN에서 IE 사용자 에이전트에 대해 자세히 읽을 수 있습니다.