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
|
from __future__ import annotations
|
||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
|
import dataclasses
|
||||||
import gzip
|
import gzip
|
||||||
import hashlib
|
import hashlib
|
||||||
import json
|
import json
|
||||||
|
@ -30,7 +31,7 @@ from lacuscore import CaptureSettings as LacuscoreCaptureSettings
|
||||||
from playwrightcapture import get_devices
|
from playwrightcapture import get_devices
|
||||||
from publicsuffixlist import PublicSuffixList # type: ignore[import-untyped]
|
from publicsuffixlist import PublicSuffixList # type: ignore[import-untyped]
|
||||||
from pytaxonomies import Taxonomies # type: ignore[attr-defined]
|
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.user_agent import UserAgent
|
||||||
from werkzeug.utils import cached_property
|
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/
|
# from https://python.tutorialink.com/how-do-i-get-the-user-agent-with-flask/
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def _details(self) -> dict[str, Any]:
|
def _details(self) -> ua_parser.DefaultedResult:
|
||||||
return user_agent_parser.Parse(self.string)
|
return ua_parser.parse(self.string).with_defaults()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def platform(self) -> str | None: # type: ignore[override]
|
def platform(self) -> str | None: # type: ignore[override]
|
||||||
return self._details['os'].get('family')
|
return self._details.os.family
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def platform_version(self) -> str | None:
|
def platform_version(self) -> str | None:
|
||||||
return self._aggregate_version(self._details['os'])
|
return self._aggregate_version(self._details.os)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def browser(self) -> str | None: # type: ignore[override]
|
def browser(self) -> str | None: # type: ignore[override]
|
||||||
return self._details['user_agent'].get('family')
|
return self._details.user_agent.family
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def version(self) -> str | None: # type: ignore[override]
|
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(
|
return '.'.join(
|
||||||
part
|
part
|
||||||
for key in ('major', 'minor', 'patch', 'patch_minor')
|
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:
|
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"]}
|
beautifulsoup4 = {version = "^4.12.3", extras = ["lxml", "charset_normalizer"]}
|
||||||
bootstrap-flask = "^2.4.1"
|
bootstrap-flask = "^2.4.1"
|
||||||
defang = "^0.5.3"
|
defang = "^0.5.3"
|
||||||
vt-py = "^0.18.0"
|
vt-py = "^0.19.0"
|
||||||
pyeupi = "^1.3.0"
|
pyeupi = "^1.3.0"
|
||||||
pysanejs = "^2.0.3"
|
pysanejs = "^2.0.3"
|
||||||
pylookyloo = "^1.26.1"
|
pylookyloo = "^1.26.1"
|
||||||
|
@ -61,17 +61,17 @@ pyphishtanklookup = "^1.4.1"
|
||||||
Flask-Cors = "^5.0.0"
|
Flask-Cors = "^5.0.0"
|
||||||
pyhashlookup = "^1.2.5"
|
pyhashlookup = "^1.2.5"
|
||||||
lief = "^0.15"
|
lief = "^0.15"
|
||||||
ua-parser = "^0.18.0"
|
ua-parser = {extras = ["regex"], version = "^1.0.0"}
|
||||||
Flask-Login = "^0.6.3"
|
Flask-Login = "^0.6.3"
|
||||||
har2tree = "^1.27.3"
|
har2tree = "^1.27.3"
|
||||||
passivetotal = "^2.5.9"
|
passivetotal = "^2.5.9"
|
||||||
werkzeug = "^3.1.3"
|
werkzeug = "^3.1.3"
|
||||||
filetype = "^1.2.0"
|
filetype = "^1.2.0"
|
||||||
pypandora = "^1.9.1"
|
pypandora = "^1.9.1"
|
||||||
lacuscore = "^1.12.5"
|
lacuscore = "^1.12.6"
|
||||||
pylacus = "^1.12.0"
|
pylacus = "^1.12.0"
|
||||||
pyipasnhistory = "^2.1.3"
|
pyipasnhistory = "^2.1.3"
|
||||||
publicsuffixlist = "^1.0.2.20241124"
|
publicsuffixlist = "^1.0.2.20241130"
|
||||||
pyfaup = "^1.2"
|
pyfaup = "^1.2"
|
||||||
chardet = "^5.2.0"
|
chardet = "^5.2.0"
|
||||||
pysecuritytxt = "^1.3.2"
|
pysecuritytxt = "^1.3.2"
|
||||||
|
@ -87,7 +87,7 @@ puremagic = "^1.28"
|
||||||
psutil = "^6.1.0"
|
psutil = "^6.1.0"
|
||||||
flask-talisman = "^1.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]
|
[tool.poetry.group.dev.dependencies]
|
||||||
mypy = "^1.13.0"
|
mypy = "^1.13.0"
|
||||||
|
|
Loading…
Reference in New Issue