rkn-block-checker 0.6.0 Adds Local Web UI and Reduces False Positives on Anti-Bot Responses

The open-source tool rkn-block-checker received a major update in version 0.6.0 that improves accuracy when detecting Russian ISP censorship blocks. The previous version incorrectly flagged sites protected by anti-bot systems as blocked by Roskomnadzor because it searched for common stub-page strings without checking HTTP status codes. A new logic layer now separates rate-limit responses such as HTTP 429 from genuine provider stub pages that typically return 200 OK or 451. The release also introduces a fully local Web UI built with Python’s standard-library HTTP server and vanilla JavaScript, eliminating the need for heavy frameworks. Results stream in real time via NDJSON so users can watch checks complete without polling or WebSocket connections. The project remains available on PyPI and GitHub under the MIT license.

HabrTranslated from Russian

Read at source

The open-source utility rkn-block-checker has been updated to version 0.6.0, bringing both improved detection accuracy and a new local web interface.

Earlier releases contained a simple list of Russian-language markers used by ISP block pages, including phrases such as “доступ ограничен” and “решению роскомнадзора”. When a target returned HTTP 429 with the text “Доступ с вашего IP временно ограничен”, the tool treated the response as a Roskomnadzor stub and reported a high-confidence block. The issue surfaced most clearly on Avito, whose anti-bot system issues 429 responses to requests lacking proper cookies even when the User-Agent mimics Chrome.

Distinguishing censorship from rate limiting

The fix adds an explicit status-code check inside core.py. If the body matches a known stub marker but the status is 429, the verdict is set to DOWN with LOW confidence and a note explaining the likely anti-bot cause. Only responses that match both the textual marker and an expected block status (200 or 451) receive the HTTP_STUB verdict with HIGH confidence.

Lightweight local Web UI

Although the project began as a pure CLI tool, users requested an easier way to examine individual checks. The new interface is served by Python’s built-in ThreadingHTTPServer and a single static HTML file containing vanilla JavaScript and CSS. No external dependencies are required. Users start the server with the command rkn-check startweb or rkn-check startweb --port 8080; the service listens on 127.0.0.1:7777 by default.

Scan results are delivered as a newline-delimited JSON stream. The browser reads the ReadableStream chunk by chunk, parses each line, and immediately updates the corresponding table row. This approach avoids both WebSocket complexity and repeated polling while still providing live feedback.

Release highlights

  • Full local Web UI with charts, Russian/English localization, and on-the-fly addition of custom domains
  • Improved filtering of anti-bot false positives (HTTP 429)
  • One-click JSON report export directly from the browser
  • Zero additional dependencies beyond a standard Python installation

The complete source code remains available under the MIT license on GitHub, and the package can be installed or upgraded via pip install rkn-block-checker.

Meridian digestThe week's most consequential security stories, distilled into one briefing.See the digest

More in Privacy & Surveillance

Maximizing iPhone Privacy: Essential Settings to Enable, Disable, and Verify Immediately
Top 10 Secure DNS Servers for Privacy, Threat Blocking and Ad Filtering in 2026
WebRTC IP Leaks Explained: Why Disabling the Protocol Harms Anonymity in Anti-Detect Browsers