bbot 2.4.1.6094rc0__py3-none-any.whl → 2.4.1.6100rc0__py3-none-any.whl

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.

Potentially problematic release.


This version of bbot might be problematic. Click here for more details.

bbot/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.4.1.6094rc"
2
+ __version__ = "v2.4.1.6100rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
5
5
 
bbot/defaults.yml CHANGED
@@ -96,6 +96,10 @@ web:
96
96
  http_retries: 1
97
97
  # HTTP retries (for httpx)
98
98
  httpx_retries: 1
99
+ # Default sleep interval when rate limited by 429 (and retry-after isn't provided)
100
+ 429_sleep_interval: 30
101
+ # Maximum sleep interval when rate limited by 429 (and an excessive retry-after is provided)
102
+ 429_max_sleep_interval: 60
99
103
  # Enable/disable debug messages for web requests/responses
100
104
  debug: false
101
105
  # Maximum number of HTTP redirects to follow
bbot/modules/base.py CHANGED
@@ -108,8 +108,6 @@ class BaseModule:
108
108
  _api_retries = 2
109
109
  # disable the module after this many failed attempts in a row
110
110
  _api_failure_abort_threshold = 3
111
- # sleep for this many seconds after being rate limited
112
- _429_sleep_interval = 30
113
111
 
114
112
  default_discovery_context = "{module} discovered {event.type}: {event.data}"
115
113
 
@@ -165,6 +163,10 @@ class BaseModule:
165
163
  # used for optional "per host" tracking
166
164
  self._per_host_tracker = set()
167
165
 
166
+ # 429 rate limit handling
167
+ self._429_sleep_interval = self.scan.web_config.get("429_sleep_interval", 30)
168
+ self._429_max_sleep_interval = self.scan.web_config.get("429_max_sleep_interval", 60)
169
+
168
170
  async def setup(self):
169
171
  """
170
172
  Performs one-time setup tasks for the module.
@@ -1172,6 +1174,11 @@ class BaseModule:
1172
1174
  retry_after = self._get_retry_after(r)
1173
1175
  if retry_after or status_code == 429:
1174
1176
  sleep_interval = int(retry_after) if retry_after is not None else self._429_sleep_interval
1177
+ if retry_after and retry_after > self._429_max_sleep_interval:
1178
+ self.verbose(
1179
+ f"Got an excessive retry-after header of {retry_after} from {new_url}, using {self._429_max_sleep_interval} instead"
1180
+ )
1181
+ sleep_interval = self._429_max_sleep_interval
1175
1182
  self.verbose(
1176
1183
  f"Sleeping for {sleep_interval:,} seconds due to rate limit (HTTP status: {status_code})"
1177
1184
  )
@@ -15,7 +15,7 @@ class certspotter(subdomain_enum):
15
15
 
16
16
  def request_url(self, query):
17
17
  url = f"{self.base_url}/issuances?domain={self.helpers.quote(query)}&include_subdomains=true&expand=dns_names"
18
- return self.api_request(url, timeout=self.http_timeout + 30)
18
+ return self.api_request(url)
19
19
 
20
20
  async def parse_results(self, r, query):
21
21
  results = set()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bbot
3
- Version: 2.4.1.6094rc0
3
+ Version: 2.4.1.6100rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  License: GPL-3.0
6
6
  Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
@@ -1,4 +1,4 @@
1
- bbot/__init__.py,sha256=dJBi5Vjmn2Ncz7U5IM-zWysWJaeyrYL9Ldph_0FxyQo,163
1
+ bbot/__init__.py,sha256=5nN5mwrxsCWyzy0Rob1W3pW2f7A0ZLPueXgx-n5Lamo,163
2
2
  bbot/cli.py,sha256=1QJbANVw9Q3GFM92H2QRV2ds5756ulm08CDZwzwPpeI,11888
3
3
  bbot/core/__init__.py,sha256=l255GJE_DvUnWvrRb0J5lG-iMztJ8zVvoweDOfegGtI,46
4
4
  bbot/core/config/__init__.py,sha256=zYNw2Me6tsEr8hOOkLb4BQ97GB7Kis2k--G81S8vofU,342
@@ -48,7 +48,7 @@ bbot/core/modules.py,sha256=U0Z2UoZAOPG9lLvR9Juc3UwdWCc_xbktF4t_NoiKPrY,31385
48
48
  bbot/core/multiprocess.py,sha256=ocQHanskJ09gHwe7RZmwNdZyCOQyeyUoIHCtLbtvXUk,1771
49
49
  bbot/core/shared_deps.py,sha256=mCMZeKSt46trzVqQDPGfXfEWg0Zw5YjiJx4BnsIRgHM,7640
50
50
  bbot/db/sql/models.py,sha256=SrUdDOBCICzXJBY29p0VvILhMQ1JCuh725bqvIYogX0,4884
51
- bbot/defaults.yml,sha256=XPaGfTKWFjKV-lLIJy-Qs7X0d-8X8EYM0QELEu8KjBw,6670
51
+ bbot/defaults.yml,sha256=r8nRJNwMlY59Ihigysa_pee6dm3rs69_U1ztpV6kbjs,6904
52
52
  bbot/errors.py,sha256=xwQcD26nU9oc7-o0kv5jmEDTInmi8_W8eKAgQZZxdVM,953
53
53
  bbot/logger.py,sha256=wE-532v5FyKuSSoTdyW1xSfaOnLZB1axAJnB-uW2xrI,2745
54
54
  bbot/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,7 +61,7 @@ bbot/modules/baddns.py,sha256=ubO3KDfcIMJnMjyZX5FWZ4GWxLSekV_JQV7QvsPjtD0,6693
61
61
  bbot/modules/baddns_direct.py,sha256=hWThpkXP87nnCRTlUh5qBJ1t4eo4l9kUmKNNxVNJI8A,3819
62
62
  bbot/modules/baddns_zone.py,sha256=y1XaBUfFPnRbR2qaTqRyUsPgEL73722v2B8aS5YoGN4,1035
63
63
  bbot/modules/badsecrets.py,sha256=LG37p48Rlxsfc3BmACMpkypsbuFTVvXqNhlP1IEsx0k,5109
64
- bbot/modules/base.py,sha256=SCIeaLX1d5VMUl2nC3IyqPdzBF8mr_7__JB3855q5cc,74529
64
+ bbot/modules/base.py,sha256=ehkGjo07bL0QKP-fW64eOLqES2GBSq9ZkM7VkSuOBhI,75038
65
65
  bbot/modules/bevigil.py,sha256=0VLIxmeXRUI2-EoR6IzuHJMcX8KCHNNta-WYa3gVlDg,2862
66
66
  bbot/modules/binaryedge.py,sha256=5F9LnZwRM_rZnzTv29hLJLI2GEQdzOwSpahPFC1kJC0,1397
67
67
  bbot/modules/bucket_amazon.py,sha256=mwjYeEAcdfOpjbOa1sD8U9KBMMVY_c8FoHjSGR9GQbg,730
@@ -75,7 +75,7 @@ bbot/modules/builtwith.py,sha256=6ZQOc6vmSVc8LsdgsiuMWfDquGm5K0jxwsnL8MsKNWw,538
75
75
  bbot/modules/bypass403.py,sha256=HyONgOYlZUET61FZ0QWE7zPGG-N6n0x_j9KUGw8kVxQ,6855
76
76
  bbot/modules/c99.py,sha256=yHT9-eyqRODISV5eTi11uh-xwqX0JG7zey5AgcDYCdI,1448
77
77
  bbot/modules/censys.py,sha256=J7NhPnSeoCuG_9FkLjFBIg-tqHAB21HjvQUw_6OQNZo,3311
78
- bbot/modules/certspotter.py,sha256=AtL5BiOuDp4vu1-5fct4aQAGZM2qiODYsbgBsw0phoU,937
78
+ bbot/modules/certspotter.py,sha256=qdRGCkGyP07_cP9h2o_AEZwoiQPXtrC-Bel3vgh24x8,905
79
79
  bbot/modules/chaos.py,sha256=JyuwytwE3IRmNbw-uyJ0gCaTnywhhsHzTiZ3OJ15PAw,1573
80
80
  bbot/modules/code_repository.py,sha256=x70Z45VnNNMF8BPkHfGWZXsZXw_fStGB3y0-8jbP1Ns,2078
81
81
  bbot/modules/credshed.py,sha256=HAF5wgRGKIIpdMAe4mIAtkZRLmFYjMFyXtjjst6RJ20,4203
@@ -428,8 +428,8 @@ bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt,sha256=ZSIVebs7ptMvHx
428
428
  bbot/wordlists/top_open_ports_nmap.txt,sha256=LmdFYkfapSxn1pVuQC2LkOIY2hMLgG-Xts7DVtYzweM,42727
429
429
  bbot/wordlists/valid_url_schemes.txt,sha256=0B_VAr9Dv7aYhwi6JSBDU-3M76vNtzN0qEC_RNLo7HE,3310
430
430
  bbot/wordlists/wordninja_dns.txt.gz,sha256=DYHvvfW0TvzrVwyprqODAk4tGOxv5ezNmCPSdPuDUnQ,570241
431
- bbot-2.4.1.6094rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
432
- bbot-2.4.1.6094rc0.dist-info/METADATA,sha256=qW-3r7OnIRwYRviNMfNbdcCUCLB2eyKaaMFBIVIsY78,18218
433
- bbot-2.4.1.6094rc0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
434
- bbot-2.4.1.6094rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
435
- bbot-2.4.1.6094rc0.dist-info/RECORD,,
431
+ bbot-2.4.1.6100rc0.dist-info/LICENSE,sha256=GzeCzK17hhQQDNow0_r0L8OfLpeTKQjFQwBQU7ZUymg,32473
432
+ bbot-2.4.1.6100rc0.dist-info/METADATA,sha256=ZjY7PWqXvYjN9vkB-WcSvyyIYvL26G4JTc-stO6VfFM,18218
433
+ bbot-2.4.1.6100rc0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
434
+ bbot-2.4.1.6100rc0.dist-info/entry_points.txt,sha256=cWjvcU_lLrzzJgjcjF7yeGuRA_eDS8pQ-kmPUAyOBfo,38
435
+ bbot-2.4.1.6100rc0.dist-info/RECORD,,