blun-king-cli 9.1.574 → 9.1.575

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 9.1.575 - 2026-09-07
2
+
3
+ - Cumulative release retaining all public 9.1.574 changes.
4
+ - The bundled public-web crawler rejects responses carrying `cf-mitigated: challenge` before reading content, following redirects or treating a missing robots file as permission to continue. Case-insensitive header names, normalized values and repeated headers are checked; the response status is retained in the failure report.
5
+ - Unmarked missing robots files and ordinary documentation continue through the existing path. Completed pages remain available when a later page is rejected, with the failure recorded as partial output.
6
+ - This is a response-marker safeguard, not general challenge detection or a CAPTCHA bypass. It does not change search providers, authentication, update locking or the CLI core.
7
+
8
+
1
9
  # 9.1.574 - 2026-09-07
2
10
 
3
11
  - Cumulative release retaining every public 9.1.573 payload change.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.574",
3
+ "version": "9.1.575",
4
4
  "description": "BLUN CLI - your own AI agent with a Telegram channel. Get it done. With BLUN.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -192,6 +192,9 @@ class PublicStrategy:
192
192
  await asyncio.sleep(max(0, max(0.4, delay) - (time.monotonic() - self.last_fetch)))
193
193
  self.last_fetch = time.monotonic()
194
194
  async with self.session.get(current, allow_redirects=False) as response:
195
+ if any(value.strip().lower() == 'challenge'
196
+ for value in response.headers.getall('cf-mitigated', ())):
197
+ raise CrawlError('challenge-page-not-crawled', status=response.status)
195
198
  if response.status in (301, 302, 303, 307, 308):
196
199
  location = response.headers.get('Location')
197
200
  if not location: raise CrawlError('redirect-without-location')