endpointscanner 7.2.4__tar.gz → 7.3.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2.4
3
+ Version: 7.3.1
4
4
  Summary: Website endpoint reconnaissance tool and rate limit tester that can bypass simple captchas and WAFs.
5
5
  Project-URL: Homepage, https://github.com/SphericalFlower52811/endpointscanner
6
6
  Project-URL: Issues, https://github.com/SphericalFlower52811/endpointscanner/issues
@@ -17,7 +17,7 @@ Requires-Dist: httpx[http2]>=0.27.0
17
17
  Requires-Dist: colorama>=0.4.6
18
18
  Dynamic: license-file
19
19
 
20
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.4)
20
+ # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.3.1)
21
21
 
22
22
  A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Automates IDOR and broken access control vulnerability testing through replacing variables with 1 in endpoints. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
23
23
 
@@ -45,6 +45,7 @@ Passable arguments:
45
45
  | Argument | Short Form | Description |
46
46
  | :---------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
47
  | `target` | `NIL` | URL |
48
+ | `--local` | `-l` | Pass this flag if the target is a local site like development-server, but is not a localhost/IP address. |
48
49
  | `--ratelimit` | `-r` | Number of requests to send during the rate limit test. Default is 100. |
49
50
  | `--ratelimit-type` | `-rt` | HTTP Method to use for the rate limit test. Defaults to GET. |
50
51
  | `--ratelimit-body` | `-rb` | Payload data to send in request to use for POST, PATCH and PUT requests. If the custom payload contains double quotes, please use single quotes instead of double quotes to pass this flag. |
@@ -52,15 +53,16 @@ Passable arguments:
52
53
  | `--ratelimit-header` | `-rh` | Custom headers. Must be seperated by a pipe(\|), or newlines. Example use: Cookies: {ExampleCookie: example} \| Accept: application/json, text/plain, _/_. If the custom header contains double quotes, please use single quotes instead of double quotes to pass this flag. |
53
54
  | `--force` | `NIL` | Mandatory flag to pass if doing a rate limit test with over 2500 requests using a non-GET HTTP method. Has no short form flag. |
54
55
  | `--testpath` | `-t` | Endpoint to test for rate limiting. |
55
- | `--show-404s` | `-s` | Show endpoints tested that returned a 404 |
56
+ | `--show-404s` | `-s` | Show endpoints tested that returned a 404 or an SPA shell. |
56
57
  | `--disable-extra-files` | `-d` | Disable scanning of extra structural mapping files (robots, sitemaps, manifests, etc.) |
57
- | `--show-media` | `-m` | Include assets/media like images and fonts in scan results |
58
- | `--show-prog` | `-sp` | Print endpoints to the terminal one by one in real-time as they are found. Warning: will show duplicate paths if endpoints are defined multiple times in the code. Results will not contain duplicates. |
58
+ | `--show-media` | `-m` | Include assets/media like images and fonts and videos in scan results |
59
+ | `--show-prog` | `-sp` | Print endpoints to the terminal one by one in real-time as they are found. Warning: Progress will show duplicate paths if endpoints are defined multiple times in the code. Use the flag -nd to remove duplicates from progress. Results will not contain duplicates. |
60
+ | `--no-duplicate-prog` | `-nd` | If --show-prog is passed, duplicate endpoints in progress will not be shown. |
59
61
  | `--output-file` | `-o` | Save formatted results directly to a local text file. |
60
62
  | `--disable-og` | `-do` | Disable code from showing the original endpoint with variables. Keeps output tidier. Will NOT remove original tag from progress if the --show-prog flag is present. |
61
63
  | `--tidy` | `-ti` | Script will not show where it got extra endpoints from, and will not show if it is a client side route and requires login, or react shell etc (or any SPA shell). Will also not show if an endpoint is a potential service. |
62
64
  | `--tidy-all` | `-ta` | Flags --disable-og and --tidy combined. |
63
- | `--only-res` | `-or` | Only show summarised endpoints. |
65
+ | `--only-res` | `-or` | Only show summarised endpoints, and not print out extra information. Has an exception if number of endpoints exceeds 3000. |
64
66
  | `--only-original` | `-oo` | Only show the original version of the flag instead of it being replaced with a 1. Will also affect show prog. |
65
67
  | `--show-source` | `-ss` | Print the source of each endpoint during progress, like printing out which file it found the endpoint from. |
66
68
  | `--scan-timeout` | `-st` | Stop scan completely after given number of minutes and print/save any results found in that time window. Will leave unsorted endpoints in a section labelled 'UNSORTED', and will leave out sensitive endpoints. Will NOT interrupt rate limiting test. |
@@ -68,20 +70,38 @@ Passable arguments:
68
70
 
69
71
  ## Installation
70
72
 
73
+ You can install EndpointScanner via PyPI(global, recommended for Windows), Homebrew(MacOS), and Apt(Linux).
74
+
75
+ ### Installation via PyPI (or pip)
76
+
71
77
  You MUST have python 3.9 or above to use this tool!
72
- To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/), run the command:
78
+ To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/):
79
+ Command for MacOS/Linux:
73
80
 
74
81
  ```bash
75
82
  python3 -m pip install endpointscanner
76
83
  ```
77
84
 
85
+ Command for Windows Command Prompt:
86
+
87
+ ```text
88
+ py -m pip install endpointscanner
89
+ ```
90
+
78
91
  After that, install chromium on playwright (playwright will be installed when you install endpointscanner):
92
+ Command for MacOS/Linux:
79
93
 
80
94
  ```bash
81
95
  playwright install chromium
82
96
  ```
83
97
 
84
- ### You may need to create a virtual environment if there is PEP 668. (For the endpointscanner installation, not playwright install chromium.)
98
+ Command for Windows Command Prompt:
99
+
100
+ ```text
101
+ py -m playwright install chromium
102
+ ```
103
+
104
+ ### You may need to create a virtual environment if PEP 668 blocks you. (For the endpointscanner installation, not playwright install chromium.) Windows users do not need this step as they will not face the PEP 668 restriction.
85
105
 
86
106
  To create a virtual environment named 'myvenv':
87
107
 
@@ -89,42 +109,85 @@ To create a virtual environment named 'myvenv':
89
109
  python3 -m venv myvenv
90
110
  ```
91
111
 
92
- To activate virtual environment on Mac/Linux:
112
+ To activate virtual environment:
93
113
 
94
114
  ```bash
95
115
  source myvenv/bin/activate
96
116
  ```
97
117
 
98
- To activate virtual environment on Windows Command Prompt:
118
+ #### Alternative for Virtual Environment (Not Recommended)
99
119
 
100
- ```text
101
- myvenv\Scripts\activate
120
+ If you do not want to create a virtual environment, you can run:
121
+
122
+ ```bash
123
+ python3 -m pip install endpointscanner --break-system-packages
102
124
  ```
103
125
 
104
- To activate virtual environment on Windows PowerShell:
126
+ to install it without PEP 668.
127
+
128
+ **Warning**: Using `--break-system-packages` may corrupt your OS-managed python environment. Proceed entirely at your own risk. The author is not liable for any system damage if you run this.
129
+
130
+ #### Troubleshooting Windows "Command Not Found" Error:
131
+
132
+ If you are on Windows (especially a non-admin account) and get an 'command not recognised' error when typing `endpointscanner` or `playwright`, run this command **on PowerShell** (not Command Prompt) to fix user environmental paths automatically:
105
133
 
106
134
  ```powershell
107
- myvenv\Scripts\Activate.ps1
135
+ $pDir = (py -c "import sys, os; print(os.path.dirname(sys.executable))"); if ($pDir) { $s = "$pDir\Scripts"; $p = [Environment]::GetEnvironmentVariable("Path", "User"); if ($p -notlike "*$s*") { [Environment]::SetEnvironmentVariable("Path", "$p;$s", "User") } }
108
136
  ```
109
137
 
110
- ### Alternative (Not Recommended)
138
+ What the PowerShell command does:
139
+ Checks the current version of python being used, and adds that python version as an environmental variable in the computer so you can run `endpointscanner` as a standalone command. Does not require admin privileges.
111
140
 
112
- If you do not want to create a virtual environment, you can run:
141
+ **Requirements for this command:** Python must already be installed.
142
+
143
+ **Note:** You MUST close the terminal (not minimise) and open a new one for the changes to work.
144
+
145
+ #### Updating script
146
+
147
+ To update the script, you can run:
148
+ MacOS and Linux Command:
113
149
 
114
150
  ```bash
115
- python3 -m pip install endpointscanner --break-system-packages
151
+ python3 -m pip install --upgrade endpointscanner
116
152
  ```
117
153
 
118
- to install it without PEP 668.
154
+ Windows Command:
119
155
 
120
- **Warning**: Using `--break-system-packages` may corrupt your OS-managed python environment. Proceed entirely at your own risk. The author is not liable for any system damage if you run this.
156
+ ```bash
157
+ py -m pip install --upgrade endpointscanner
158
+ ```
121
159
 
122
- ### Updating script
160
+ ### Homebrew
123
161
 
124
- To update the script, you can run:
162
+ You may need to update first to be able to install EndpointScanner.
125
163
 
126
164
  ```bash
127
- python3 -m pip install --upgrade endpointscanner
165
+ brew update
166
+ ```
167
+
168
+ To install EndpointScanner via Homebrew (MacOS), run these two commands:
169
+
170
+ ```bash
171
+ brew trust sphericalflower52811/tap
172
+ brew install endpointscanner
173
+ ```
174
+
175
+ After that, you will need to install chromium on playwright for the headless browser:
176
+
177
+ ```bash
178
+ python3 -m playwright install chromium
179
+ ```
180
+
181
+ ### Apt
182
+
183
+ To install EndpointScanner via Apt (Linux), run these commands:
184
+
185
+ ```bash
186
+ wget https://github.com/SphericalFlower52811/endpointscanner/releases/download/v7.3.1/endpointscanner_7.3.1-1_all.deb
187
+
188
+ sudo dpkg -i endpointscanner_7.3.1-1_all.deb
189
+
190
+ python3 -m playwright install chromium
128
191
  ```
129
192
 
130
193
  ## Example Commands
@@ -163,53 +226,61 @@ Example command to only show the original endpoint, only print endpoints and out
163
226
  endpointscanner example.com -oo -or -o examplescan.txt
164
227
  ```
165
228
 
166
- ## Weaknesses
167
-
168
- - If there is a login page, the script will either show that all of the pages require login, or label all of them as 403.
169
- - If there are shells (e.g. React SPA shells) in the page, it may give false positives for sensitive endpoints. If you see sensitive endpoints in the scan, they may not actually be exposed on the website if the website has a shell. (E.g. .gitignore, .env.local)
170
- - The rate limit test is more susceptible to captchas as it uses a module (httpx, not curl_cffi) that is not built to specifically pass through firewalls/captchas. This is as the httpx module for requests is better for asynchronous functions for rate limit testing on websites.
171
-
172
229
  ## What was added
173
230
 
174
- Version 7.2 added:
175
-
176
- - Timeout after a set number of minutes (defined with the -st flag). Accepts floats, not just integers.
177
- - Raw output flag to not sort out endpoints. Will make output faster as sorting takes up the majority of the time.
178
- - New rate limit test flags, -rh, -rb, -rv, -rt. Allows defining of the HTTP method for the test, rate limiting headers (Either seperated by newlines or pipes), rate limiting body (may include an {X}), and rate limiting variable (can be defined as {X}, so each body will be different.) Example use is to test login attempts, testing passwords from 1 - 100 with {X} bein the iteration variable.
179
- - -ss flag, shows source files for where endpoints are found in progress and in the final result.
180
- - -oo flag, Show only the original endpoint with variables instead of the version replaced with 1.
181
- - Headers to avoid 304 responses so code and files is always received.
182
- - Detecting of 405 responses.
183
- - More accurate sorting (previous bug that put /api/health in SPAs patched)
184
- - Removed the 'Scraped from JS' label as extra files and html src are being scraped.
185
-
186
- Version 7.2.1 (patch update) added:
187
-
188
- - fixed bug where paths would still show /
189
- - fixed bug where some external links were coded into files like e.g. https://n. It is not a real link but got included, and the bug was fixed.
190
-
191
- Version 7.2.2 just changed wording and description of the tool to be more clear.
192
-
193
- Version 7.2.3 added one more sensitive endpoint and fixed bug where some paths would be / from extra files.
194
-
195
- Version 7.2.4 added:
196
-
197
- - fixing pdf keys like /Btn and /Widget used in jsPDF, as they were previously detected as endpoints
198
- - better SPA separation
199
- - added more asset formats (.avif, .mp3, .mp4, .webm, .wav)
200
- - Added text at start saying Endpointscanner 7.2.4 (i wanted it to have the vibe of most open source tools but the 3d text was just too much)
231
+ Version 7.3 added:
232
+
233
+ - Recursive scanning for sitemaps (all xml files)
234
+ - Recursive scanning for javascript files
235
+ - Scanning of localhost:port and IP addresses like 127.0.0.1, not just example.com.
236
+ - Filtering out Emscripten + Pyodide Virtual File System endpoints as they were false positives.
237
+ - More JS Stacks to detect, and more accurate. Full list of stacks after 7.3:
238
+ - React
239
+ - Nuxt.js
240
+ - Next.js
241
+ - Node.js
242
+ - Vue.js
243
+ - Angular
244
+ - Astro
245
+ - Gatsby
246
+ - Remix
247
+ - Solid.js
248
+ - Svelte
249
+ - Alpine.js
250
+ - Backbone.js
251
+ - Ember.js
252
+ - Redux
253
+ - Ruby on Rails
254
+ - Forem (also ruby on rails)
255
+ - Deno
256
+ - Bun
257
+ - jQuery
258
+ - Webpack
259
+ - Vite
260
+ - Turbopack
261
+ - Parcel
262
+
263
+ Version 7.3.1 added:
264
+
265
+ - EndpointScanner now installable on:
266
+ - Linux via sudo apt
267
+ - Homebrew
201
268
 
202
269
  ## Plans for next version and the future
203
270
 
204
- Version 7.3 is planned to have:
271
+ Version 7.4:
205
272
 
206
- - More JS Stacks to detect (and more accurate)
207
273
  - Detecting what type of captcha was used if the script is blocked.
274
+ - Optimisation to make sorting of endpoints faster (called parallel requests or something)
208
275
 
209
276
  Future plans (May be added in the next version):
277
+ none. please leave any suggestions you want.
278
+
279
+ ## Weaknesses
210
280
 
211
- - Recursive scanning (Going into each valid path to find more endpoints as some files only show up in specific endpoints.)
212
- - Optimisation to make sorting of endpoints faster
281
+ - If there is a login page, the script will either show that all of the pages require login, or label all of them as 403.
282
+ - If there are shells (e.g. React SPA shells) in the page, it may give false positives for sensitive endpoints. If you see sensitive endpoints in the scan, they may not actually be exposed on the website if the website has a shell. (E.g. .gitignore, .env.local)
283
+ - The rate limit test is more susceptible to captchas as it uses a module (httpx, not curl_cffi) that is not built to specifically pass through firewalls/captchas. This is as the httpx module for requests is better for asynchronous functions for rate limit testing on websites.
213
284
 
214
285
  ai assisted code btw
215
286
 
@@ -1,4 +1,4 @@
1
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.4)
1
+ # EndpointScanner: Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.3.1)
2
2
 
3
3
  A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Automates IDOR and broken access control vulnerability testing through replacing variables with 1 in endpoints. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
4
4
 
@@ -26,6 +26,7 @@ Passable arguments:
26
26
  | Argument | Short Form | Description |
27
27
  | :---------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
28
28
  | `target` | `NIL` | URL |
29
+ | `--local` | `-l` | Pass this flag if the target is a local site like development-server, but is not a localhost/IP address. |
29
30
  | `--ratelimit` | `-r` | Number of requests to send during the rate limit test. Default is 100. |
30
31
  | `--ratelimit-type` | `-rt` | HTTP Method to use for the rate limit test. Defaults to GET. |
31
32
  | `--ratelimit-body` | `-rb` | Payload data to send in request to use for POST, PATCH and PUT requests. If the custom payload contains double quotes, please use single quotes instead of double quotes to pass this flag. |
@@ -33,15 +34,16 @@ Passable arguments:
33
34
  | `--ratelimit-header` | `-rh` | Custom headers. Must be seperated by a pipe(\|), or newlines. Example use: Cookies: {ExampleCookie: example} \| Accept: application/json, text/plain, _/_. If the custom header contains double quotes, please use single quotes instead of double quotes to pass this flag. |
34
35
  | `--force` | `NIL` | Mandatory flag to pass if doing a rate limit test with over 2500 requests using a non-GET HTTP method. Has no short form flag. |
35
36
  | `--testpath` | `-t` | Endpoint to test for rate limiting. |
36
- | `--show-404s` | `-s` | Show endpoints tested that returned a 404 |
37
+ | `--show-404s` | `-s` | Show endpoints tested that returned a 404 or an SPA shell. |
37
38
  | `--disable-extra-files` | `-d` | Disable scanning of extra structural mapping files (robots, sitemaps, manifests, etc.) |
38
- | `--show-media` | `-m` | Include assets/media like images and fonts in scan results |
39
- | `--show-prog` | `-sp` | Print endpoints to the terminal one by one in real-time as they are found. Warning: will show duplicate paths if endpoints are defined multiple times in the code. Results will not contain duplicates. |
39
+ | `--show-media` | `-m` | Include assets/media like images and fonts and videos in scan results |
40
+ | `--show-prog` | `-sp` | Print endpoints to the terminal one by one in real-time as they are found. Warning: Progress will show duplicate paths if endpoints are defined multiple times in the code. Use the flag -nd to remove duplicates from progress. Results will not contain duplicates. |
41
+ | `--no-duplicate-prog` | `-nd` | If --show-prog is passed, duplicate endpoints in progress will not be shown. |
40
42
  | `--output-file` | `-o` | Save formatted results directly to a local text file. |
41
43
  | `--disable-og` | `-do` | Disable code from showing the original endpoint with variables. Keeps output tidier. Will NOT remove original tag from progress if the --show-prog flag is present. |
42
44
  | `--tidy` | `-ti` | Script will not show where it got extra endpoints from, and will not show if it is a client side route and requires login, or react shell etc (or any SPA shell). Will also not show if an endpoint is a potential service. |
43
45
  | `--tidy-all` | `-ta` | Flags --disable-og and --tidy combined. |
44
- | `--only-res` | `-or` | Only show summarised endpoints. |
46
+ | `--only-res` | `-or` | Only show summarised endpoints, and not print out extra information. Has an exception if number of endpoints exceeds 3000. |
45
47
  | `--only-original` | `-oo` | Only show the original version of the flag instead of it being replaced with a 1. Will also affect show prog. |
46
48
  | `--show-source` | `-ss` | Print the source of each endpoint during progress, like printing out which file it found the endpoint from. |
47
49
  | `--scan-timeout` | `-st` | Stop scan completely after given number of minutes and print/save any results found in that time window. Will leave unsorted endpoints in a section labelled 'UNSORTED', and will leave out sensitive endpoints. Will NOT interrupt rate limiting test. |
@@ -49,20 +51,38 @@ Passable arguments:
49
51
 
50
52
  ## Installation
51
53
 
54
+ You can install EndpointScanner via PyPI(global, recommended for Windows), Homebrew(MacOS), and Apt(Linux).
55
+
56
+ ### Installation via PyPI (or pip)
57
+
52
58
  You MUST have python 3.9 or above to use this tool!
53
- To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/), run the command:
59
+ To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/):
60
+ Command for MacOS/Linux:
54
61
 
55
62
  ```bash
56
63
  python3 -m pip install endpointscanner
57
64
  ```
58
65
 
66
+ Command for Windows Command Prompt:
67
+
68
+ ```text
69
+ py -m pip install endpointscanner
70
+ ```
71
+
59
72
  After that, install chromium on playwright (playwright will be installed when you install endpointscanner):
73
+ Command for MacOS/Linux:
60
74
 
61
75
  ```bash
62
76
  playwright install chromium
63
77
  ```
64
78
 
65
- ### You may need to create a virtual environment if there is PEP 668. (For the endpointscanner installation, not playwright install chromium.)
79
+ Command for Windows Command Prompt:
80
+
81
+ ```text
82
+ py -m playwright install chromium
83
+ ```
84
+
85
+ ### You may need to create a virtual environment if PEP 668 blocks you. (For the endpointscanner installation, not playwright install chromium.) Windows users do not need this step as they will not face the PEP 668 restriction.
66
86
 
67
87
  To create a virtual environment named 'myvenv':
68
88
 
@@ -70,42 +90,85 @@ To create a virtual environment named 'myvenv':
70
90
  python3 -m venv myvenv
71
91
  ```
72
92
 
73
- To activate virtual environment on Mac/Linux:
93
+ To activate virtual environment:
74
94
 
75
95
  ```bash
76
96
  source myvenv/bin/activate
77
97
  ```
78
98
 
79
- To activate virtual environment on Windows Command Prompt:
99
+ #### Alternative for Virtual Environment (Not Recommended)
80
100
 
81
- ```text
82
- myvenv\Scripts\activate
101
+ If you do not want to create a virtual environment, you can run:
102
+
103
+ ```bash
104
+ python3 -m pip install endpointscanner --break-system-packages
83
105
  ```
84
106
 
85
- To activate virtual environment on Windows PowerShell:
107
+ to install it without PEP 668.
108
+
109
+ **Warning**: Using `--break-system-packages` may corrupt your OS-managed python environment. Proceed entirely at your own risk. The author is not liable for any system damage if you run this.
110
+
111
+ #### Troubleshooting Windows "Command Not Found" Error:
112
+
113
+ If you are on Windows (especially a non-admin account) and get an 'command not recognised' error when typing `endpointscanner` or `playwright`, run this command **on PowerShell** (not Command Prompt) to fix user environmental paths automatically:
86
114
 
87
115
  ```powershell
88
- myvenv\Scripts\Activate.ps1
116
+ $pDir = (py -c "import sys, os; print(os.path.dirname(sys.executable))"); if ($pDir) { $s = "$pDir\Scripts"; $p = [Environment]::GetEnvironmentVariable("Path", "User"); if ($p -notlike "*$s*") { [Environment]::SetEnvironmentVariable("Path", "$p;$s", "User") } }
89
117
  ```
90
118
 
91
- ### Alternative (Not Recommended)
119
+ What the PowerShell command does:
120
+ Checks the current version of python being used, and adds that python version as an environmental variable in the computer so you can run `endpointscanner` as a standalone command. Does not require admin privileges.
92
121
 
93
- If you do not want to create a virtual environment, you can run:
122
+ **Requirements for this command:** Python must already be installed.
123
+
124
+ **Note:** You MUST close the terminal (not minimise) and open a new one for the changes to work.
125
+
126
+ #### Updating script
127
+
128
+ To update the script, you can run:
129
+ MacOS and Linux Command:
94
130
 
95
131
  ```bash
96
- python3 -m pip install endpointscanner --break-system-packages
132
+ python3 -m pip install --upgrade endpointscanner
97
133
  ```
98
134
 
99
- to install it without PEP 668.
135
+ Windows Command:
100
136
 
101
- **Warning**: Using `--break-system-packages` may corrupt your OS-managed python environment. Proceed entirely at your own risk. The author is not liable for any system damage if you run this.
137
+ ```bash
138
+ py -m pip install --upgrade endpointscanner
139
+ ```
102
140
 
103
- ### Updating script
141
+ ### Homebrew
104
142
 
105
- To update the script, you can run:
143
+ You may need to update first to be able to install EndpointScanner.
106
144
 
107
145
  ```bash
108
- python3 -m pip install --upgrade endpointscanner
146
+ brew update
147
+ ```
148
+
149
+ To install EndpointScanner via Homebrew (MacOS), run these two commands:
150
+
151
+ ```bash
152
+ brew trust sphericalflower52811/tap
153
+ brew install endpointscanner
154
+ ```
155
+
156
+ After that, you will need to install chromium on playwright for the headless browser:
157
+
158
+ ```bash
159
+ python3 -m playwright install chromium
160
+ ```
161
+
162
+ ### Apt
163
+
164
+ To install EndpointScanner via Apt (Linux), run these commands:
165
+
166
+ ```bash
167
+ wget https://github.com/SphericalFlower52811/endpointscanner/releases/download/v7.3.1/endpointscanner_7.3.1-1_all.deb
168
+
169
+ sudo dpkg -i endpointscanner_7.3.1-1_all.deb
170
+
171
+ python3 -m playwright install chromium
109
172
  ```
110
173
 
111
174
  ## Example Commands
@@ -144,53 +207,61 @@ Example command to only show the original endpoint, only print endpoints and out
144
207
  endpointscanner example.com -oo -or -o examplescan.txt
145
208
  ```
146
209
 
147
- ## Weaknesses
148
-
149
- - If there is a login page, the script will either show that all of the pages require login, or label all of them as 403.
150
- - If there are shells (e.g. React SPA shells) in the page, it may give false positives for sensitive endpoints. If you see sensitive endpoints in the scan, they may not actually be exposed on the website if the website has a shell. (E.g. .gitignore, .env.local)
151
- - The rate limit test is more susceptible to captchas as it uses a module (httpx, not curl_cffi) that is not built to specifically pass through firewalls/captchas. This is as the httpx module for requests is better for asynchronous functions for rate limit testing on websites.
152
-
153
210
  ## What was added
154
211
 
155
- Version 7.2 added:
156
-
157
- - Timeout after a set number of minutes (defined with the -st flag). Accepts floats, not just integers.
158
- - Raw output flag to not sort out endpoints. Will make output faster as sorting takes up the majority of the time.
159
- - New rate limit test flags, -rh, -rb, -rv, -rt. Allows defining of the HTTP method for the test, rate limiting headers (Either seperated by newlines or pipes), rate limiting body (may include an {X}), and rate limiting variable (can be defined as {X}, so each body will be different.) Example use is to test login attempts, testing passwords from 1 - 100 with {X} bein the iteration variable.
160
- - -ss flag, shows source files for where endpoints are found in progress and in the final result.
161
- - -oo flag, Show only the original endpoint with variables instead of the version replaced with 1.
162
- - Headers to avoid 304 responses so code and files is always received.
163
- - Detecting of 405 responses.
164
- - More accurate sorting (previous bug that put /api/health in SPAs patched)
165
- - Removed the 'Scraped from JS' label as extra files and html src are being scraped.
166
-
167
- Version 7.2.1 (patch update) added:
168
-
169
- - fixed bug where paths would still show /
170
- - fixed bug where some external links were coded into files like e.g. https://n. It is not a real link but got included, and the bug was fixed.
171
-
172
- Version 7.2.2 just changed wording and description of the tool to be more clear.
173
-
174
- Version 7.2.3 added one more sensitive endpoint and fixed bug where some paths would be / from extra files.
175
-
176
- Version 7.2.4 added:
177
-
178
- - fixing pdf keys like /Btn and /Widget used in jsPDF, as they were previously detected as endpoints
179
- - better SPA separation
180
- - added more asset formats (.avif, .mp3, .mp4, .webm, .wav)
181
- - Added text at start saying Endpointscanner 7.2.4 (i wanted it to have the vibe of most open source tools but the 3d text was just too much)
212
+ Version 7.3 added:
213
+
214
+ - Recursive scanning for sitemaps (all xml files)
215
+ - Recursive scanning for javascript files
216
+ - Scanning of localhost:port and IP addresses like 127.0.0.1, not just example.com.
217
+ - Filtering out Emscripten + Pyodide Virtual File System endpoints as they were false positives.
218
+ - More JS Stacks to detect, and more accurate. Full list of stacks after 7.3:
219
+ - React
220
+ - Nuxt.js
221
+ - Next.js
222
+ - Node.js
223
+ - Vue.js
224
+ - Angular
225
+ - Astro
226
+ - Gatsby
227
+ - Remix
228
+ - Solid.js
229
+ - Svelte
230
+ - Alpine.js
231
+ - Backbone.js
232
+ - Ember.js
233
+ - Redux
234
+ - Ruby on Rails
235
+ - Forem (also ruby on rails)
236
+ - Deno
237
+ - Bun
238
+ - jQuery
239
+ - Webpack
240
+ - Vite
241
+ - Turbopack
242
+ - Parcel
243
+
244
+ Version 7.3.1 added:
245
+
246
+ - EndpointScanner now installable on:
247
+ - Linux via sudo apt
248
+ - Homebrew
182
249
 
183
250
  ## Plans for next version and the future
184
251
 
185
- Version 7.3 is planned to have:
252
+ Version 7.4:
186
253
 
187
- - More JS Stacks to detect (and more accurate)
188
254
  - Detecting what type of captcha was used if the script is blocked.
255
+ - Optimisation to make sorting of endpoints faster (called parallel requests or something)
189
256
 
190
257
  Future plans (May be added in the next version):
258
+ none. please leave any suggestions you want.
259
+
260
+ ## Weaknesses
191
261
 
192
- - Recursive scanning (Going into each valid path to find more endpoints as some files only show up in specific endpoints.)
193
- - Optimisation to make sorting of endpoints faster
262
+ - If there is a login page, the script will either show that all of the pages require login, or label all of them as 403.
263
+ - If there are shells (e.g. React SPA shells) in the page, it may give false positives for sensitive endpoints. If you see sensitive endpoints in the scan, they may not actually be exposed on the website if the website has a shell. (E.g. .gitignore, .env.local)
264
+ - The rate limit test is more susceptible to captchas as it uses a module (httpx, not curl_cffi) that is not built to specifically pass through firewalls/captchas. This is as the httpx module for requests is better for asynchronous functions for rate limit testing on websites.
194
265
 
195
266
  ai assisted code btw
196
267