사용자 에이전트 문자열을 구문 분석하고 이상적으로이를 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 문자열을 먹이 시도하고 자신에 대한 참조 :
나는 미친 건가요 이들 파서는 마크 떨어져 완전히입니까?
사이드 노트 : 사용자 에이전트 문자열은 HTTP 표준 https://tools.ietf.org/html/rfc7231#section-5.5.3에 지정된대로 잘 정의 된 형식을 따릅니다.
트라이던트는'IE' 엔진입니다. 'Windows 7'은 항상 'Windows NT 6.1'을 보냅니다. 빌 게이츠 (Bill Gates)에게 자신의 코드에 'Windows NT 6.1'이라는 이름을 사용하기로 결정한 이유를 묻는다. – furas
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
브라우저 식별 문자열의 해석이 프로그래밍 문제가 아니기 때문에이 질문을 주제와 관련이 없다고 투표하는 것이 좋습니다.또한 문제는 외부 라이브러리의 기능에 대한 주요 문제로 불평하는 것 같습니다. 이것은 SO가 아닌 프로젝트 웹 사이트에서 논의되어야합니다. –