har2tree 1.32.1__py3-none-any.whl → 1.33.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
har2tree/har2tree.py CHANGED
@@ -118,7 +118,11 @@ class HarFile():
118
118
  last_redirect = unquote_plus(_lr.read())
119
119
  self.final_redirect: str = last_redirect
120
120
  if not self._search_final_redirect():
121
- self.logger.warning(f'Final redirect URL from address bar not in tree: {last_redirect}')
121
+ if last_redirect.startswith('chrome') or last_redirect.startswith('about'):
122
+ # the capture failed.
123
+ pass
124
+ else:
125
+ self.logger.info(f'Final redirect URL from address bar not in tree: {last_redirect}')
122
126
  else:
123
127
  self.logger.debug('No last_redirect file available.')
124
128
  self.final_redirect = ''
har2tree/nodes.py CHANGED
@@ -485,6 +485,7 @@ class URLNode(HarTreeNode):
485
485
 
486
486
  # Common JS redirect we can catch easily
487
487
  # NOTE: it is extremely fragile and doesn't work very often but is kinda better than nothing.
488
+ # NOTE 2025-08-30: Also, finding that doesn't mean it is in a part of the code that is executed without user interaction. It can be triggered after a user fills a form for example.
488
489
  # Source: https://stackoverflow.com/questions/13363174/regular-expression-to-catch-as-many-javascript-redirections-as-possible
489
490
  regex = re.compile(br"""((location.href)|(window.location)|(location.replace)|(location.assign))(( ?= ?)|( ?\( ?))("|')([^'"]*)("|')( ?\) ?)?;""", re.I)
490
491
  matches = re.findall(regex, self.body.getvalue())
@@ -1,22 +1,22 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: har2tree
3
- Version: 1.32.1
3
+ Version: 1.33.0
4
4
  Summary: HTTP Archive (HAR) to ETE Toolkit generator
5
- License: BSD-3-Clause
5
+ License-Expression: BSD-3-Clause
6
+ License-File: LICENSE
6
7
  Author: Raphaël Vinot
7
8
  Author-email: raphael.vinot@circl.lu
8
- Requires-Python: >=3.9,<4.0
9
+ Requires-Python: >=3.9.2,<4.0
9
10
  Classifier: Intended Audience :: Information Technology
10
11
  Classifier: Intended Audience :: Science/Research
11
12
  Classifier: Intended Audience :: Telecommunications Industry
12
- Classifier: License :: OSI Approved :: BSD License
13
13
  Classifier: Operating System :: POSIX :: Linux
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Topic :: Internet
21
21
  Classifier: Topic :: Security
22
22
  Provides-Extra: docs
@@ -25,12 +25,12 @@ Requires-Dist: beautifulsoup4[charset-normalizer,lxml] (>=4.13.5)
25
25
  Requires-Dist: ete3 (>=3.1.3)
26
26
  Requires-Dist: filetype (>=1.2.0)
27
27
  Requires-Dist: json-stream (>=2.3.3,<3.0.0)
28
- Requires-Dist: legacy-cgi (>=2.6.3) ; python_version >= "3.13,<4.0"
28
+ Requires-Dist: legacy-cgi (>=2.6.3) ; python_version >= "3.13" and python_version < "4.0"
29
29
  Requires-Dist: multipart (>=1.3.0,<2.0.0)
30
30
  Requires-Dist: numpy (<2.1) ; python_version < "3.10"
31
- Requires-Dist: numpy (<2.3) ; python_version < "3.11"
32
- Requires-Dist: numpy (>=2.3.2) ; python_version >= "3.11"
33
- Requires-Dist: publicsuffixlist (>=1.0.2.20250824)
31
+ Requires-Dist: numpy (>=2.2,<2.3) ; python_version == "3.10"
32
+ Requires-Dist: numpy (>=2.3.3) ; python_version >= "3.11" and python_version < "4.0"
33
+ Requires-Dist: publicsuffixlist (>=1.0.2.20250919)
34
34
  Requires-Dist: requests-toolbelt (>=1.0.0,<2.0.0)
35
35
  Requires-Dist: six (>=1.17.0) ; extra == "docs"
36
36
  Requires-Dist: tinycss2 (>=1.4.0)
@@ -0,0 +1,10 @@
1
+ har2tree/__init__.py,sha256=Na3mxHkUBq3rzYbxiLNJF37DxH5mcghSorjzXw5Teug,422
2
+ har2tree/har2tree.py,sha256=Ss8CLjspHs0hA4am9ODX6vNP0J2Gzg3w1D3265vf4kw,44620
3
+ har2tree/helper.py,sha256=CgeXqfBeHs8SbkW7TRNKqJBTZLAu63KggQjbGHCZAGI,20681
4
+ har2tree/nodes.py,sha256=QWKqEUnuW7J6pASVvzwWAQNqL-_KDzSs2ld6uJl3qbw,37710
5
+ har2tree/parser.py,sha256=4yej1OcVYAIiLfzYZsO9WCw3WyM_ykDTuvpW7UO1ROE,3645
6
+ har2tree/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ har2tree-1.33.0.dist-info/METADATA,sha256=zsM-qSqQdlwGOR_miEr4xvqbimIXulCKKn4fU0B3_Ak,2294
8
+ har2tree-1.33.0.dist-info/WHEEL,sha256=M5asmiAlL6HEcOq52Yi5mmk9KmTVjY2RDPtO4p9DMrc,88
9
+ har2tree-1.33.0.dist-info/licenses/LICENSE,sha256=Xa4EVROgJsEo10CW-ISCRiw0TtqdKz1JuM3BBLBM55c,1803
10
+ har2tree-1.33.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 2.2.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,10 +0,0 @@
1
- har2tree/__init__.py,sha256=Na3mxHkUBq3rzYbxiLNJF37DxH5mcghSorjzXw5Teug,422
2
- har2tree/har2tree.py,sha256=PBRJZk-cqIOctbrIav4v5z2wKUFApayl4SQmLTKdF6E,44438
3
- har2tree/helper.py,sha256=CgeXqfBeHs8SbkW7TRNKqJBTZLAu63KggQjbGHCZAGI,20681
4
- har2tree/nodes.py,sha256=OtsQnXs8cmBGDJ6MUDWmqKZVOwxKhFJCR_sY0-nYP20,37517
5
- har2tree/parser.py,sha256=4yej1OcVYAIiLfzYZsO9WCw3WyM_ykDTuvpW7UO1ROE,3645
6
- har2tree/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- har2tree-1.32.1.dist-info/LICENSE,sha256=Xa4EVROgJsEo10CW-ISCRiw0TtqdKz1JuM3BBLBM55c,1803
8
- har2tree-1.32.1.dist-info/METADATA,sha256=Ja_ikI4U9yVZ5paqPJ4AKm4G2ZmVDsUfOaYABZump88,2253
9
- har2tree-1.32.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
10
- har2tree-1.32.1.dist-info/RECORD,,