mirror of https://github.com/CIRCL/lookyloo
chg: Bump deps, update ua-parser
parent
deadc95e75
commit
5e6587730b
|
@ -3,6 +3,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import configparser
|
||||
import dataclasses
|
||||
import gzip
|
||||
import hashlib
|
||||
import json
|
||||
|
@ -30,7 +31,7 @@ from lacuscore import CaptureSettings as LacuscoreCaptureSettings
|
|||
from playwrightcapture import get_devices
|
||||
from publicsuffixlist import PublicSuffixList # type: ignore[import-untyped]
|
||||
from pytaxonomies import Taxonomies # type: ignore[attr-defined]
|
||||
from ua_parser import user_agent_parser # type: ignore[import-untyped]
|
||||
import ua_parser
|
||||
from werkzeug.user_agent import UserAgent
|
||||
from werkzeug.utils import cached_property
|
||||
|
||||
|
@ -374,30 +375,30 @@ class ParsedUserAgent(UserAgent):
|
|||
# from https://python.tutorialink.com/how-do-i-get-the-user-agent-with-flask/
|
||||
|
||||
@cached_property
|
||||
def _details(self) -> dict[str, Any]:
|
||||
return user_agent_parser.Parse(self.string)
|
||||
def _details(self) -> ua_parser.DefaultedResult:
|
||||
return ua_parser.parse(self.string).with_defaults()
|
||||
|
||||
@property
|
||||
def platform(self) -> str | None: # type: ignore[override]
|
||||
return self._details['os'].get('family')
|
||||
return self._details.os.family
|
||||
|
||||
@property
|
||||
def platform_version(self) -> str | None:
|
||||
return self._aggregate_version(self._details['os'])
|
||||
return self._aggregate_version(self._details.os)
|
||||
|
||||
@property
|
||||
def browser(self) -> str | None: # type: ignore[override]
|
||||
return self._details['user_agent'].get('family')
|
||||
return self._details.user_agent.family
|
||||
|
||||
@property
|
||||
def version(self) -> str | None: # type: ignore[override]
|
||||
return self._aggregate_version(self._details['user_agent'])
|
||||
return self._aggregate_version(self._details.user_agent)
|
||||
|
||||
def _aggregate_version(self, details: dict[str, str]) -> str | None:
|
||||
def _aggregate_version(self, details: ua_parser.OS | ua_parser.UserAgent) -> str | None:
|
||||
return '.'.join(
|
||||
part
|
||||
for key in ('major', 'minor', 'patch', 'patch_minor')
|
||||
if (part := details.get(key)) is not None
|
||||
if (part := dataclasses.asdict(details).get(key)) is not None
|
||||
)
|
||||
|
||||
def __str__(self) -> str:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -47,7 +47,7 @@ redis = {version = "^5.2.0", extras = ["hiredis"]}
|
|||
beautifulsoup4 = {version = "^4.12.3", extras = ["lxml", "charset_normalizer"]}
|
||||
bootstrap-flask = "^2.4.1"
|
||||
defang = "^0.5.3"
|
||||
vt-py = "^0.18.0"
|
||||
vt-py = "^0.19.0"
|
||||
pyeupi = "^1.3.0"
|
||||
pysanejs = "^2.0.3"
|
||||
pylookyloo = "^1.26.1"
|
||||
|
@ -61,17 +61,17 @@ pyphishtanklookup = "^1.4.1"
|
|||
Flask-Cors = "^5.0.0"
|
||||
pyhashlookup = "^1.2.5"
|
||||
lief = "^0.15"
|
||||
ua-parser = "^0.18.0"
|
||||
ua-parser = {extras = ["regex"], version = "^1.0.0"}
|
||||
Flask-Login = "^0.6.3"
|
||||
har2tree = "^1.27.3"
|
||||
passivetotal = "^2.5.9"
|
||||
werkzeug = "^3.1.3"
|
||||
filetype = "^1.2.0"
|
||||
pypandora = "^1.9.1"
|
||||
lacuscore = "^1.12.5"
|
||||
lacuscore = "^1.12.6"
|
||||
pylacus = "^1.12.0"
|
||||
pyipasnhistory = "^2.1.3"
|
||||
publicsuffixlist = "^1.0.2.20241124"
|
||||
publicsuffixlist = "^1.0.2.20241130"
|
||||
pyfaup = "^1.2"
|
||||
chardet = "^5.2.0"
|
||||
pysecuritytxt = "^1.3.2"
|
||||
|
@ -87,7 +87,7 @@ puremagic = "^1.28"
|
|||
psutil = "^6.1.0"
|
||||
flask-talisman = "^1.1.0"
|
||||
|
||||
aiohttp = {extras = ["speedups"], version = "^3.11.7"}
|
||||
aiohttp = {extras = ["speedups"], version = "^3.11.9"}
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
mypy = "^1.13.0"
|
||||
|
|
Loading…
Reference in New Issue