web-scanner 2.0.0__tar.gz → 2.0.1__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.
- {web_scanner-2.0.0 → web_scanner-2.0.1}/PKG-INFO +8 -7
- {web_scanner-2.0.0 → web_scanner-2.0.1}/README.md +7 -6
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/__init__.py +1 -1
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/app.py +10 -1
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/export.py +10 -9
- {web_scanner-2.0.0 → web_scanner-2.0.1}/.gitignore +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/LICENSE +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/app.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/pyproject.toml +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/requirements.txt +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/__main__.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/cli.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/colors.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/__init__.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/context.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/models.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/module.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/core/scanner.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/helpers.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/__init__.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/dns.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/headers.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/links.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/security.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/seo.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/ssl.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/subdomains.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/tech.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/modules/whois.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/net/__init__.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/net/http.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/__init__.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/app.tcss +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/data/countries.json +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/tables.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/widgets.py +0 -0
- {web_scanner-2.0.0 → web_scanner-2.0.1}/webscanner/ui/worldmap.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: web-scanner
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: An async Textual TUI for website reconnaissance — DNS, WHOIS, TLS, security, tech-stack and SEO, with no paid APIs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/iamramizk/web-scanner
|
|
6
6
|
Project-URL: Repository, https://github.com/iamramizk/web-scanner
|
|
@@ -750,11 +750,14 @@ The easiest way is with [pipx](https://pipx.pypa.io/) (or [uv](https://docs.astr
|
|
|
750
750
|
which installs `webscan` into its own isolated environment:
|
|
751
751
|
|
|
752
752
|
```bash
|
|
753
|
-
pipx install
|
|
753
|
+
pipx install web-scanner
|
|
754
754
|
# or
|
|
755
|
-
uv tool install
|
|
755
|
+
uv tool install web-scanner
|
|
756
756
|
```
|
|
757
757
|
|
|
758
|
+
To install the latest unreleased code, point either tool at the repo instead:
|
|
759
|
+
`pipx install git+https://github.com/iamramizk/web-scanner`.
|
|
760
|
+
|
|
758
761
|
### From source (development)
|
|
759
762
|
|
|
760
763
|
```bash
|
|
@@ -779,14 +782,12 @@ Press `s` inside the app to save every tab to CSV. When installed, results are w
|
|
|
779
782
|
|
|
780
783
|
## Updating
|
|
781
784
|
|
|
782
|
-
Once it's on PyPI:
|
|
783
|
-
|
|
784
785
|
```bash
|
|
785
786
|
pipx upgrade web-scanner
|
|
786
787
|
```
|
|
787
788
|
|
|
788
|
-
|
|
789
|
-
reinstall from
|
|
789
|
+
If you installed from Git, `pipx upgrade` won't see new commits (the version is unchanged),
|
|
790
|
+
so reinstall from source instead:
|
|
790
791
|
|
|
791
792
|
```bash
|
|
792
793
|
pipx install --force git+https://github.com/iamramizk/web-scanner
|
|
@@ -49,11 +49,14 @@ The easiest way is with [pipx](https://pipx.pypa.io/) (or [uv](https://docs.astr
|
|
|
49
49
|
which installs `webscan` into its own isolated environment:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
pipx install
|
|
52
|
+
pipx install web-scanner
|
|
53
53
|
# or
|
|
54
|
-
uv tool install
|
|
54
|
+
uv tool install web-scanner
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
To install the latest unreleased code, point either tool at the repo instead:
|
|
58
|
+
`pipx install git+https://github.com/iamramizk/web-scanner`.
|
|
59
|
+
|
|
57
60
|
### From source (development)
|
|
58
61
|
|
|
59
62
|
```bash
|
|
@@ -78,14 +81,12 @@ Press `s` inside the app to save every tab to CSV. When installed, results are w
|
|
|
78
81
|
|
|
79
82
|
## Updating
|
|
80
83
|
|
|
81
|
-
Once it's on PyPI:
|
|
82
|
-
|
|
83
84
|
```bash
|
|
84
85
|
pipx upgrade web-scanner
|
|
85
86
|
```
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
reinstall from
|
|
88
|
+
If you installed from Git, `pipx upgrade` won't see new commits (the version is unchanged),
|
|
89
|
+
so reinstall from source instead:
|
|
89
90
|
|
|
90
91
|
```bash
|
|
91
92
|
pipx install --force git+https://github.com/iamramizk/web-scanner
|
|
@@ -250,7 +250,16 @@ class WebScannerApp(App):
|
|
|
250
250
|
self.query_one("#progress", Static).update("[dim]nothing to save yet[/]")
|
|
251
251
|
return
|
|
252
252
|
folder = export_csvs(self.ctx.domain, self.modules, self.results)
|
|
253
|
-
|
|
253
|
+
if folder:
|
|
254
|
+
base = folder.parent # where it saved, minus the domain_<ts> folder name
|
|
255
|
+
names = [p for p in base.parts if p != base.anchor] # drop the '/' root
|
|
256
|
+
tail = names[-2:]
|
|
257
|
+
shown = "/".join(tail) if tail else str(base)
|
|
258
|
+
if len(names) > len(tail):
|
|
259
|
+
shown = "…/" + shown
|
|
260
|
+
msg = f"[dim]saved → {shown}[/]"
|
|
261
|
+
else:
|
|
262
|
+
msg = "[dim]nothing to save yet[/]"
|
|
254
263
|
self.query_one("#progress", Static).update(msg)
|
|
255
264
|
|
|
256
265
|
def action_toggle_edit(self) -> None:
|
|
@@ -21,16 +21,17 @@ from .tables import TAB_HEADERS
|
|
|
21
21
|
def _output_base() -> Path:
|
|
22
22
|
"""Parent directory for the ``<domain>_<ts>/`` scan folder.
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
Keyed on the current working directory, not on where the package is installed —
|
|
25
|
+
an editable install still runs from wherever the user `cd`'d to. If cwd is the
|
|
26
|
+
project's own source checkout (a ``pyproject.toml`` next to the ``webscanner/``
|
|
27
|
+
package) results go in the repo's gitignored ``output/`` folder, keeping the
|
|
28
|
+
checkout tidy. Anywhere else, the ``<domain>_<ts>/`` folder is written straight
|
|
29
|
+
into the current directory.
|
|
29
30
|
"""
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
33
|
-
return
|
|
31
|
+
cwd = Path.cwd()
|
|
32
|
+
if (cwd / "pyproject.toml").is_file() and (cwd / "webscanner" / "__init__.py").is_file():
|
|
33
|
+
return cwd / "output"
|
|
34
|
+
return cwd
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
def _stringify(value: Any) -> str:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|