endpointscanner 7.2__tar.gz → 7.2.2__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,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2
4
- Summary: Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas.
3
+ Version: 7.2.2
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
7
7
  Project-URL: Repository, https://github.com/SphericalFlower52811/endpointscanner
8
- Keywords: endpoint-scanner,website-recon,bug-bounty,rate-limiting,dir-search,url-discovery,web-reconnaissance
8
+ Keywords: web-crawler,rate-limiting,bug-bounty,web-crawler-python,pentest-tool,endpoint-discovery,crawler-python,bugbounty-tool,web-reconnaissance,web-recon-tool,cybersecurity-tools,endpoint-extraction,spa-crawler,reconnaissance,directory-crawler,directory-discoverer,directory-enumeration
9
9
  Requires-Python: >=3.9
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
@@ -16,9 +16,9 @@ Requires-Dist: playwright-stealth
16
16
  Requires-Dist: httpx[http2]>=0.27.0
17
17
  Dynamic: license-file
18
18
 
19
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.0)
19
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
20
20
 
21
- A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Tests for IDOR or other broken access control bugs on websites by changing variables in endpoints to 1. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
21
+ 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.
22
22
 
23
23
  For Installation, please go to the Installation section below!
24
24
 
@@ -67,8 +67,8 @@ Passable arguments:
67
67
 
68
68
  ## Installation
69
69
 
70
- You MUST have python 3.9 or above to use this!!
71
- To install endpointscanner, run the command:
70
+ You MUST have python 3.9 or above to use this tool!
71
+ To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/), run the command:
72
72
 
73
73
  ```bash
74
74
  python3 -m pip install endpointscanner
@@ -182,17 +182,24 @@ Version 7.2 added:
182
182
  - More accurate sorting (previous bug that put /api/health in SPAs patched)
183
183
  - Removed the 'Scraped from JS' label as extra files and html src are being scraped.
184
184
 
185
+ Version 7.2.1 (patch update) added:
186
+
187
+ - fixed bug where paths would still show /
188
+ - 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.
189
+
190
+ Version 7.2.2 just changed wording and description of the tool to be more clear.
191
+
185
192
  ## Plans for next version and the future
186
193
 
187
194
  Version 7.3 is planned to have:
188
195
 
189
- - Optimisation to make sorting of endpoints faster
196
+ - More JS Stacks to detect
190
197
  - Detecting what type of captcha was used if the script is blocked.
191
198
 
192
199
  Future plans (May be added in the next version):
193
200
 
194
201
  - Recursive scanning (Going into each valid path to find more endpoints as some files only show up in specific endpoints.)
195
- - More JS Stacks to detect
202
+ - Optimisation to make sorting of endpoints faster
196
203
 
197
204
  ai assisted code btw
198
205
 
@@ -1,6 +1,6 @@
1
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.0)
1
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
2
2
 
3
- A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Tests for IDOR or other broken access control bugs on websites by changing variables in endpoints to 1. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
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
 
5
5
  For Installation, please go to the Installation section below!
6
6
 
@@ -49,8 +49,8 @@ Passable arguments:
49
49
 
50
50
  ## Installation
51
51
 
52
- You MUST have python 3.9 or above to use this!!
53
- To install endpointscanner, run the command:
52
+ 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:
54
54
 
55
55
  ```bash
56
56
  python3 -m pip install endpointscanner
@@ -164,17 +164,24 @@ Version 7.2 added:
164
164
  - More accurate sorting (previous bug that put /api/health in SPAs patched)
165
165
  - Removed the 'Scraped from JS' label as extra files and html src are being scraped.
166
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
+
167
174
  ## Plans for next version and the future
168
175
 
169
176
  Version 7.3 is planned to have:
170
177
 
171
- - Optimisation to make sorting of endpoints faster
178
+ - More JS Stacks to detect
172
179
  - Detecting what type of captcha was used if the script is blocked.
173
180
 
174
181
  Future plans (May be added in the next version):
175
182
 
176
183
  - Recursive scanning (Going into each valid path to find more endpoints as some files only show up in specific endpoints.)
177
- - More JS Stacks to detect
184
+ - Optimisation to make sorting of endpoints faster
178
185
 
179
186
  ai assisted code btw
180
187
 
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2
4
- Summary: Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas.
3
+ Version: 7.2.2
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
7
7
  Project-URL: Repository, https://github.com/SphericalFlower52811/endpointscanner
8
- Keywords: endpoint-scanner,website-recon,bug-bounty,rate-limiting,dir-search,url-discovery,web-reconnaissance
8
+ Keywords: web-crawler,rate-limiting,bug-bounty,web-crawler-python,pentest-tool,endpoint-discovery,crawler-python,bugbounty-tool,web-reconnaissance,web-recon-tool,cybersecurity-tools,endpoint-extraction,spa-crawler,reconnaissance,directory-crawler,directory-discoverer,directory-enumeration
9
9
  Requires-Python: >=3.9
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
@@ -16,9 +16,9 @@ Requires-Dist: playwright-stealth
16
16
  Requires-Dist: httpx[http2]>=0.27.0
17
17
  Dynamic: license-file
18
18
 
19
- # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.0)
19
+ # Website Endpoint Scanner and Rate Limit Tester For Websites (Version 7.2.2)
20
20
 
21
- A fast automated website reconnaissance tool that extracts endpoints, files, and even external links from websites. Tests for IDOR or other broken access control bugs on websites by changing variables in endpoints to 1. Has a built in rate limit tester that can test on any endpoint, and can bypass simple WAFs/captchas and client-side SPAs.
21
+ 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.
22
22
 
23
23
  For Installation, please go to the Installation section below!
24
24
 
@@ -67,8 +67,8 @@ Passable arguments:
67
67
 
68
68
  ## Installation
69
69
 
70
- You MUST have python 3.9 or above to use this!!
71
- To install endpointscanner, run the command:
70
+ You MUST have python 3.9 or above to use this tool!
71
+ To install the official [endpointscanner Python package](https://pypi.org/project/endpointscanner/), run the command:
72
72
 
73
73
  ```bash
74
74
  python3 -m pip install endpointscanner
@@ -182,17 +182,24 @@ Version 7.2 added:
182
182
  - More accurate sorting (previous bug that put /api/health in SPAs patched)
183
183
  - Removed the 'Scraped from JS' label as extra files and html src are being scraped.
184
184
 
185
+ Version 7.2.1 (patch update) added:
186
+
187
+ - fixed bug where paths would still show /
188
+ - 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.
189
+
190
+ Version 7.2.2 just changed wording and description of the tool to be more clear.
191
+
185
192
  ## Plans for next version and the future
186
193
 
187
194
  Version 7.3 is planned to have:
188
195
 
189
- - Optimisation to make sorting of endpoints faster
196
+ - More JS Stacks to detect
190
197
  - Detecting what type of captcha was used if the script is blocked.
191
198
 
192
199
  Future plans (May be added in the next version):
193
200
 
194
201
  - Recursive scanning (Going into each valid path to find more endpoints as some files only show up in specific endpoints.)
195
- - More JS Stacks to detect
202
+ - Optimisation to make sorting of endpoints faster
196
203
 
197
204
  ai assisted code btw
198
205
 
@@ -7,7 +7,7 @@ import argparse
7
7
  import time
8
8
  import json
9
9
  from playwright.sync_api import sync_playwright #headless browser to solve captcha
10
- from playwright_stealth import Stealth #Ensure strict firewalls do not block the playwright browser
10
+ from playwright_stealth import Stealth #ensure strict firewalls do not block the playwright browser
11
11
 
12
12
  HEADER = {
13
13
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
@@ -653,6 +653,7 @@ def main():
653
653
  matches = re.findall(p, respo.text)
654
654
  for m in matches:
655
655
  m_clean = re.sub(r'(\$\{.*?\}|:[a-zA-Z0-9]+)', '1', m)
656
+ m_clean = m_clean.strip()
656
657
  if m_clean != m:
657
658
  m_display = f"{m_clean} [Original: {m}]"
658
659
  else:
@@ -705,6 +706,7 @@ def main():
705
706
  matches = re.findall(p, script.string)
706
707
  for m in matches:
707
708
  m_clean = re.sub(r'(\$\{.*?\}|:[a-zA-Z0-9]+)', '1', m)
709
+ m_clean = m_clean.strip()
708
710
  if m_clean != m:
709
711
  m_display = f"{m_clean} [Original: {m}]"
710
712
  else:
@@ -772,7 +774,7 @@ def main():
772
774
  matches = re.findall(p, js_res.text)
773
775
  for m in matches:
774
776
  m_clean = re.sub(r'(\$\{.*?\}|:[a-zA-Z0-9]+)', '1', m)
775
-
777
+ m_clean = m_clean.strip()
776
778
  if m_clean != m:
777
779
  m_display = f"{m_clean} [Original: {m}]"
778
780
  else:
@@ -783,7 +785,7 @@ def main():
783
785
  if m_clean != m:
784
786
  m_display = '/' + m_display
785
787
  if not m_clean.lower().endswith(ignored_extensions):
786
- if m_clean in ["/", "//", "///", "/.", "/..", "/...", "/./", "/ "]:
788
+ if m_clean.strip in ["/", "//", "///", "/.", "/..", "/...", "/./", "/ "]:
787
789
  continue
788
790
  if any(term in m_clean.lower() for term in USELESSSTUFF):
789
791
  continue
@@ -809,7 +811,7 @@ def main():
809
811
  if urlparse(target_x_url).netloc == urlparse(target if "://" in target else f"https://{target}").netloc:
810
812
  if clean_f not in xml_files:
811
813
  xml_files.append(clean_f)
812
-
814
+
813
815
  for xmlfile in xml_files:
814
816
  if args.scan_timeout:
815
817
  ts = checktime(start_test_time, args.scan_timeout) #timer status
@@ -827,6 +829,10 @@ def main():
827
829
  for loc in locs:
828
830
  clean_path = loc.strip()
829
831
  if clean_path and clean_path != "/" and clean_path not in found_paths:
832
+ if clean_path in ["/", "//", "///", "/.", "/..", "/...", "/./", "/ "]:
833
+ continue
834
+ if any(term in clean_path.lower() for term in USELESSSTUFF):
835
+ continue
830
836
  found_paths.add(clean_path)
831
837
 
832
838
  if not args.tidy:
@@ -853,6 +859,11 @@ def main():
853
859
  for path in sorted(found_paths):
854
860
  display_path = discovered_in_js.get(path, path)
855
861
  #take away original if disable og actiev
862
+ pure_path = display_path.split(" [Original:")[0]
863
+ if pure_path.strip() in ["/", "//", "///", "/.", "/..", "/...", "/./", "/ "]:
864
+ continue
865
+ if not any(char.isalnum() for char in pure_path):
866
+ continue
856
867
  if args.only_original and " [Original: " in display_path:
857
868
  display_path = display_path.split(" [Original: ")[1].rstrip(']')
858
869
  elif args.disable_og and " [Original:" in display_path:
@@ -870,6 +881,8 @@ def main():
870
881
  is_external = parsed_path.netloc and get_base(parsed_path.netloc) != get_base(target_domain)
871
882
 
872
883
  if is_external:
884
+ if "." not in pure_path:
885
+ continue
873
886
  results_ext.append(f"{display_path.lstrip('/')}")
874
887
  continue
875
888
  if "://" in path and parsed_path.netloc == target_domain:
@@ -878,6 +891,8 @@ def main():
878
891
  internal_route += f"?{parsed_path.query}"
879
892
  path = internal_route if internal_route.startswith('/') else '/' + internal_route
880
893
  display_path = path
894
+ if display_path.strip() in ["/", "//", "///", "/.", "/..", "/...", "/./"]:
895
+ continue
881
896
  elif parsed_path.netloc and parsed_path.netloc != target_domain:
882
897
  results_subd.append(display_path.lstrip('/'))
883
898
  continue
@@ -992,6 +1007,11 @@ def main():
992
1007
  else:
993
1008
  for path in sorted(found_paths):
994
1009
  display_path = discovered_in_js.get(path, path)
1010
+ pure_path = display_path.split(" [Original:")[0]
1011
+ if pure_path.strip() in ["/", "//", "///", "/.", "/..", "/...", "/./", "/ "]:
1012
+ continue
1013
+ if not any(char.isalnum() for char in pure_path):
1014
+ continue
995
1015
  if args.only_original and " [Original: " in display_path:
996
1016
  display_path = display_path.split(" [Original: ")[1].rstrip(']')
997
1017
  elif args.disable_og and " [Original:" in display_path:
@@ -4,11 +4,30 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "endpointscanner"
7
- version = "7.2"
7
+ version = "7.2.2"
8
8
  readme = "README.md"
9
- description = "Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas."
9
+ description = "Website endpoint reconnaissance tool and rate limit tester that can bypass simple captchas and WAFs."
10
10
  requires-python = ">=3.9"
11
- keywords = ["endpoint-scanner", "website-recon", "bug-bounty", "rate-limiting", "dir-search", "url-discovery", "web-reconnaissance"]
11
+ keywords = [
12
+ "web-crawler",
13
+ "rate-limiting",
14
+ "bug-bounty",
15
+ "web-crawler-python",
16
+ "pentest-tool",
17
+ "endpoint-discovery",
18
+ "crawler-python",
19
+ "bugbounty-tool",
20
+ "web-reconnaissance",
21
+ "web-recon-tool",
22
+ "cybersecurity-tools",
23
+ "endpoint-extraction",
24
+ "spa-crawler",
25
+ "reconnaissance",
26
+ "directory-crawler",
27
+ "directory-discoverer",
28
+ "directory-enumeration"
29
+ ]
30
+
12
31
  dependencies = [
13
32
  "curl_cffi",
14
33
  "beautifulsoup4",
File without changes
File without changes