From b06f02e1018812eb14d49f14692bf42e2d19e7d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Wed, 9 Sep 2020 15:04:21 +0200 Subject: [PATCH] new: Expose rendered content on hostnode page --- lookyloo/lookyloo.py | 3 +-- poetry.lock | 10 +++++----- pyproject.toml | 4 ++-- website/web/__init__.py | 9 +++++++++ website/web/templates/hostname_popup.html | 6 ++++++ 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lookyloo/lookyloo.py b/lookyloo/lookyloo.py index f77a21c..9c750d2 100644 --- a/lookyloo/lookyloo.py +++ b/lookyloo/lookyloo.py @@ -565,11 +565,10 @@ class Lookyloo(): with open((capture_dir / 'uuid'), 'r') as f: uuid = f.read() har_files = sorted(capture_dir.glob('*.har')) - html_files = sorted(capture_dir.glob('*.html')) # NOTE: We only index the public captures index = True try: - ct = CrawledTree(zip(har_files, html_files), uuid) + ct = CrawledTree(har_files, uuid) if self.is_public_instance: cache = self.capture_cache(capture_uuid) if cache.get('no_index') is not None: diff --git a/poetry.lock b/poetry.lock index d17a547..3b420a8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -303,8 +303,8 @@ category = "main" description = "HTTP Archive (HAR) to ETE Toolkit generator" name = "har2tree" optional = false -python-versions = ">=3.6,<4.0" -version = "1.2.3" +python-versions = ">=3.7,<4.0" +version = "1.2.4" [package.dependencies] beautifulsoup4 = ">=4.8.2,<5.0.0" @@ -1101,7 +1101,7 @@ test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] -content-hash = "620043e3c07ceff2aadca0da8dcf3658dbd249cba424bd9bc34764f437d978a9" +content-hash = "f652af4a1d5c25a6908fdda42d0336910abada3eb67414e1a0e45f07b3caee6f" lock-version = "1.0" python-versions = "^3.7" @@ -1299,8 +1299,8 @@ gunicorn = [ {file = "gunicorn-20.0.4.tar.gz", hash = "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"}, ] har2tree = [ - {file = "har2tree-1.2.3-py3-none-any.whl", hash = "sha256:8283742206bd47f0fa17f71677db874ed5c7aa53aa655df6d91fa01384333c91"}, - {file = "har2tree-1.2.3.tar.gz", hash = "sha256:d748eef74099a87f498d3de6cf8da100b81952d2a309faa517592549da068d3c"}, + {file = "har2tree-1.2.4-py3-none-any.whl", hash = "sha256:fe601e443707fd98fae0ee3f61346d191b1d86d0cd392cf4b0fbd51464dcd5b1"}, + {file = "har2tree-1.2.4.tar.gz", hash = "sha256:397e5502be088a927610e6f82103953296cc4a937f48f5effcdb7bd3ee1bd971"}, ] hyperlink = [ {file = "hyperlink-20.0.1-py2.py3-none-any.whl", hash = "sha256:c528d405766f15a2c536230de7e160b65a08e20264d8891b3eb03307b0df3c63"}, diff --git a/pyproject.toml b/pyproject.toml index 92e5bad..170e93e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,9 +43,9 @@ defang = "^0.5.3" vt-py = "^0.5.2" Flask-HTTPAuth = "^4.1.0" pyeupi = "^1.0" -scrapysplashwrapper = "^1.2" +scrapysplashwrapper = "^1.2.3" pysanejs = "^1.1" -har2tree = "^1.2" +har2tree = "^1.2.4" pylookyloo = "^1.2" [tool.poetry.dev-dependencies] diff --git a/website/web/__init__.py b/website/web/__init__.py index 2168691..c0df15a 100644 --- a/website/web/__init__.py +++ b/website/web/__init__.py @@ -228,6 +228,15 @@ def urlnode_response_cookies(tree_uuid: str, node_uuid: str): mimetype='text/plain', as_attachment=True, attachment_filename='response_cookies.txt') +@app.route('/tree//url//rendered_content', methods=['GET']) +def urlnode_rendered_content(tree_uuid: str, node_uuid: str): + urlnode = lookyloo.get_urlnode_from_tree(tree_uuid, node_uuid) + if not urlnode.rendered_html: + return + return send_file(BytesIO(urlnode.rendered_html.getvalue()), mimetype='text/plain', + as_attachment=True, attachment_filename='rendered_content.txt') + + @app.route('/tree//url//posted_data', methods=['GET']) def urlnode_post_request(tree_uuid: str, node_uuid: str): urlnode = lookyloo.get_urlnode_from_tree(tree_uuid, node_uuid) diff --git a/website/web/templates/hostname_popup.html b/website/web/templates/hostname_popup.html index 67503d0..1e05cbf 100644 --- a/website/web/templates/hostname_popup.html +++ b/website/web/templates/hostname_popup.html @@ -128,6 +128,12 @@

{{ popup_icons(keys_response, url['url_object'], tree_uuid) }} + {% if url['url_object'].rendered_html %} + + Download rendered HTML page + + {% endif %} +
{% if url['url_object'].empty_response %} Empty body.