pylookyloo 1.28.0__tar.gz → 1.29.0__tar.gz

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.

Potentially problematic release.


This version of pylookyloo might be problematic. Click here for more details.

@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pylookyloo
3
- Version: 1.28.0
3
+ Version: 1.29.0
4
4
  Summary: Python CLI and module for Lookyloo
5
- License: BSD-3-Clause
5
+ License: GPL-2.0-or-later
6
6
  Author: Raphaël Vinot
7
7
  Author-email: raphael.vinot@circl.lu
8
8
  Requires-Python: >=3.9
@@ -11,7 +11,7 @@ Classifier: Environment :: Console
11
11
  Classifier: Intended Audience :: Information Technology
12
12
  Classifier: Intended Audience :: Science/Research
13
13
  Classifier: Intended Audience :: Telecommunications Industry
14
- Classifier: License :: OSI Approved :: BSD License
14
+ Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
15
15
  Classifier: Operating System :: POSIX :: Linux
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Programming Language :: Python :: 3.9
@@ -23,8 +23,8 @@ Classifier: Topic :: Internet
23
23
  Classifier: Topic :: Security
24
24
  Provides-Extra: docs
25
25
  Provides-Extra: examples
26
- Requires-Dist: Sphinx (>=8.1.3) ; (python_version >= "3.10") and (extra == "docs")
27
- Requires-Dist: pylacus (>=1.12.1) ; extra == "examples"
26
+ Requires-Dist: Sphinx (>=8.2.3) ; (python_version >= "3.11") and (extra == "docs")
27
+ Requires-Dist: pylacus (>=1.14.0) ; extra == "examples"
28
28
  Requires-Dist: requests (>=2.32.3)
29
29
  Project-URL: Documentation, https://pylookyloo.readthedocs.io/en/latest/
30
30
  Project-URL: Repository, https://github.com/lookyloo/PyLookyloo
@@ -60,8 +60,10 @@ class CaptureSettings(TypedDict, total=False):
60
60
  device_name: str | None
61
61
  user_agent: str | None
62
62
  proxy: str | dict[str, str] | None
63
+ remote_lacus_name: str | None
63
64
  general_timeout_in_sec: int | None
64
65
  cookies: list[dict[str, Any]] | None
66
+ storage: str | dict[str, Any] | None
65
67
  headers: str | dict[str, str] | None
66
68
  http_credentials: dict[str, int] | None
67
69
  geolocation: dict[str, float] | None
@@ -127,6 +129,11 @@ class Lookyloo():
127
129
  r = self.session.get(urljoin(self.root_url, str(PurePosixPath('json', tree_uuid, 'status'))))
128
130
  return r.json()
129
131
 
132
+ def get_remote_lacuses(self) -> list[dict[str, Any]]:
133
+ '''Get the list of Lacus instances configured on the Lookyloo instance'''
134
+ r = self.session.get(urljoin(self.root_url, str(PurePosixPath('json', 'remote_lacuses'))))
135
+ return r.json()
136
+
130
137
  def get_capture_stats(self, tree_uuid: str) -> dict[str, Any]:
131
138
  '''Get statistics of the capture'''
132
139
  r = self.session.get(urljoin(self.root_url, str(PurePosixPath('json', tree_uuid, 'stats'))))
@@ -169,8 +176,10 @@ class Lookyloo():
169
176
  browser: str | None=None, device_name: str | None=None,
170
177
  user_agent: str | None=None,
171
178
  proxy: str | dict[str, str] | None=None,
179
+ remote_lacus_name: str | None=None,
172
180
  general_timeout_in_sec: int | None=None,
173
181
  cookies: list[dict[str, Any]] | None=None,
182
+ storage: str | dict[str, Any] | None=None,
174
183
  headers: str | dict[str, str] | None=None,
175
184
  http_credentials: dict[str, int] | None=None,
176
185
  geolocation: dict[str, float] | None=None,
@@ -193,8 +202,10 @@ class Lookyloo():
193
202
  browser: str | None=None, device_name: str | None=None,
194
203
  user_agent: str | None=None,
195
204
  proxy: str | dict[str, str] | None=None,
205
+ remote_lacus_name: str | None=None,
196
206
  general_timeout_in_sec: int | None=None,
197
207
  cookies: list[dict[str, Any]] | None=None,
208
+ storage: str | dict[str, Any] | None=None,
198
209
  headers: str | dict[str, str] | None=None,
199
210
  http_credentials: dict[str, int] | None=None,
200
211
  geolocation: dict[str, float] | None=None,
@@ -220,7 +231,8 @@ class Lookyloo():
220
231
  :param browser: The browser to use for the capture, must be something Playwright knows
221
232
  :param device_name: The name of the device, must be something Playwright knows
222
233
  :param user_agent: The user agent the browser will use for the capture
223
- :param proxy: SOCKS5 proxy to use for capturing
234
+ :param proxy: Capture via a proxy. It can either be the full URL to a SOCKS5 proxy, or the name of a specific proxy configured on a remote lacus instance.
235
+ :param remote_lacus_name: The name of the remote Lacus instance to use for the capture (only if lookyloo is configured this way)
224
236
  :param general_timeout_in_sec: The capture will raise a timeout it it takes more than that time
225
237
  :param cookies: A list of cookies
226
238
  :param headers: The headers to pass to the capture
@@ -270,6 +282,8 @@ class Lookyloo():
270
282
  to_send['general_timeout_in_sec'] = general_timeout_in_sec
271
283
  if cookies:
272
284
  to_send['cookies'] = cookies
285
+ if storage:
286
+ to_send['storage'] = storage
273
287
  if headers:
274
288
  to_send['headers'] = headers
275
289
  if http_credentials:
@@ -425,6 +439,14 @@ class Lookyloo():
425
439
  r = self.session.get(urljoin(self.root_url, str(PurePosixPath('json', capture_uuid, 'cookies'))))
426
440
  return r.json()
427
441
 
442
+ def get_storage(self, capture_uuid: str) -> dict[str, Any]:
443
+ '''Returns the complete storage state.
444
+
445
+ :param capture_uuid: UUID of the capture
446
+ '''
447
+ r = self.session.get(urljoin(self.root_url, str(PurePosixPath('json', capture_uuid, 'storage'))))
448
+ return r.json()
449
+
428
450
  def get_html(self, capture_uuid: str) -> StringIO:
429
451
  '''Returns the rendered HTML as it would be in the browser after the page loaded.
430
452
 
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "pylookyloo"
3
- version = "1.28.0"
3
+ version = "1.29.0"
4
4
  description = "Python CLI and module for Lookyloo"
5
5
  authors = [
6
6
  {name="Raphaël Vinot", email="raphael.vinot@circl.lu"}
7
7
  ]
8
- license = "BSD-3-Clause"
8
+ license = "GPL-2.0-or-later"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
11
11
 
@@ -36,13 +36,13 @@ classifiers = [
36
36
  lookyloo = 'pylookyloo:main'
37
37
 
38
38
  [project.optional-dependencies]
39
- docs = ["Sphinx (>=8.1.3) ; python_version >= \"3.10\""]
40
- examples = ["pylacus (>=1.12.1)"]
39
+ docs = ["Sphinx (>=8.2.3) ; python_version >= \"3.11\""]
40
+ examples = ["pylacus (>=1.14.0)"]
41
41
 
42
42
  [tool.poetry.group.dev.dependencies]
43
43
  mypy = "^1.15.0"
44
- types-requests = "^2.32.0.20241016"
45
- pytest = "^8.3.4"
44
+ types-requests = "^2.32.0.20250328"
45
+ pytest = "^8.3.5"
46
46
 
47
47
  [build-system]
48
48
  requires = ["poetry-core>=2.0"]
File without changes
File without changes