endpointscanner 7.2__tar.gz → 7.2.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,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2
3
+ Version: 7.2.1
4
4
  Summary: Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas.
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,7 +16,7 @@ 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.1)
20
20
 
21
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.
22
22
 
@@ -182,17 +182,22 @@ 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
+
185
190
  ## Plans for next version and the future
186
191
 
187
192
  Version 7.3 is planned to have:
188
193
 
189
- - Optimisation to make sorting of endpoints faster
194
+ - More JS Stacks to detect
190
195
  - Detecting what type of captcha was used if the script is blocked.
191
196
 
192
197
  Future plans (May be added in the next version):
193
198
 
194
199
  - 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
200
+ - Optimisation to make sorting of endpoints faster
196
201
 
197
202
  ai assisted code btw
198
203
 
@@ -1,4 +1,4 @@
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.1)
2
2
 
3
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.
4
4
 
@@ -164,17 +164,22 @@ 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
+
167
172
  ## Plans for next version and the future
168
173
 
169
174
  Version 7.3 is planned to have:
170
175
 
171
- - Optimisation to make sorting of endpoints faster
176
+ - More JS Stacks to detect
172
177
  - Detecting what type of captcha was used if the script is blocked.
173
178
 
174
179
  Future plans (May be added in the next version):
175
180
 
176
181
  - 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
182
+ - Optimisation to make sorting of endpoints faster
178
183
 
179
184
  ai assisted code btw
180
185
 
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endpointscanner
3
- Version: 7.2
3
+ Version: 7.2.1
4
4
  Summary: Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas.
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,7 +16,7 @@ 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.1)
20
20
 
21
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.
22
22
 
@@ -182,17 +182,22 @@ 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
+
185
190
  ## Plans for next version and the future
186
191
 
187
192
  Version 7.3 is planned to have:
188
193
 
189
- - Optimisation to make sorting of endpoints faster
194
+ - More JS Stacks to detect
190
195
  - Detecting what type of captcha was used if the script is blocked.
191
196
 
192
197
  Future plans (May be added in the next version):
193
198
 
194
199
  - 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
200
+ - Optimisation to make sorting of endpoints faster
196
201
 
197
202
  ai assisted code btw
198
203
 
@@ -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.1"
8
8
  readme = "README.md"
9
9
  description = "Website endpoint reconnaissance tool and rate limit tester that bypasses simple captchas."
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