rkn-block-checker logo

rkn-block-checker

Diagnose RKN/TSPU internet blocks layer by layer (DNS, TCP, TLS, HTTP)

pypipython 3.10+
GitHub

What is it?

What it is

A lightweight command‑line diagnostic tool that probes a list of sites through DNS, TCP, TLS, and HTTP to determine whether a connection is blocked by Russian censorship (RKN/TSPU) and, if so, which layer of the stack is affected.

Why it exists

Users need to know not just that a site is unreachable but why it is blocked—DNS poisoning, TCP reset, TLS DPI on SNI, or ISP‑served HTTP stubs. By identifying the exact failure point, they can choose appropriate circumvention, report issues, or understand their network environment.

Who should use it

Users in regions subject to RKN/TSPU censorship (e.g., Russia) who want to diagnose network blocking, researchers studying internet censorship, and developers needing programmable output for monitoring.

Who should avoid it

Users not affected by RKN/TSPU mechanisms, those seeking circumvention tools rather than diagnostics, and users uncomfortable with command-line interfaces.

How it works

A quick walkthrough in plain English

How rkn-block-checker works

Step 1 of 3

You interact with it

Open rkn-block-checker, send a request, or connect it to your stack.

Features

CLI tool that probes DNS, TCP, TLS, and HTTP layers to detect censorship
Built‑in whitelist and blacklist of sites for quick diagnostics
Custom target lists via JSON or plain text
Parallel probing with configurable worker count
Timeout control per probe
JSON output for machine‑readable reports
No telemetry or data exfiltration
Privacy‑friendly default User‑Agent
Supports ad‑hoc URL checks
Cross‑platform Python 3.10+
Open source MIT license

Advantages

  • Fast, one‑command diagnosis without configuration
  • Provides layer‑specific failure information for targeted circumvention
  • Automatable via JSON and jq for scripting
  • Parallel execution reduces total runtime
  • Privacy‑first design limits footprint
  • No external telemetry or data leaks
  • Extensible with custom target lists
  • Clear confidence levels aid interpretation
  • Open source allows community review and contribution

Disadvantages

  • IPv4 only; IPv6 paths not examined
  • Built‑in target lists are small, may miss narrow blocks
  • No retry logic or longitudinal monitoring
  • No built‑in UI beyond CLI
  • Limited to RKN/TSPU‑style censorship patterns
  • Requires Python 3.10+, may not run on older systems
  • Potential false positives on sites with multiple A‑records before set‑based DNS comparison
  • No support for HTTP/2 or newer protocols
  • Cannot detect all types of middlebox filtering (e.g., deep packet inspection beyond TLS SNI)

Installation

native

pip install rkn-block-checker

FAQ

What is RKN Block Checker and what does it help me find?

RKN Block Checker is a CLI tool that probes a list of sites to determine whether the network you’re on is in a Roskomnadzor‑blocked zone. It walks DNS → TCP → TLS → HTTP for each target and reports which layer failed, giving you a clear picture of whether DNS poisoning, TCP reset, TLS DPI, or an ISP stub page is blocking access.

How does the tool decide which type of block is occurring?

It performs four sequential probes: system DNS vs Cloudflare DoH (to detect DNS poisoning), a plain TCP handshake on port 443 (to catch TCP resets), a TLS handshake with SNI (to spot TLS DPI), and an HTTP GET (to detect stub pages or 451 responses). The first probe that fails determines the verdict: DNS_BLOCK, TCP_RESET, TLS_BLOCK, or HTTP_STUB.

Can I use it to check just one URL or a custom list of sites?

Yes. Use `rkn-check --url <URL>` to probe a single site or repeat the flag for multiple URLs. For custom lists, provide a text or JSON file with `--white-file` or `--black-file`. The built‑in lists are skipped in ad‑hoc mode.

What information is included in the JSON output and how can I use it?

With `--json` the tool emits an object containing `self_info` (your public IP, ISP, location) and two arrays: `whitelist` and `blacklist`. Each entry includes the full probe trace—DNS results, TCP/TLS timings, HTTP status, verdict, confidence, and notes—so you can programmatically analyze which layer failed and why.

Why does the tool use a generic Chrome User‑Agent by default and what does the `--identify` flag do?

The default UA blends the request with normal web traffic to avoid easy fingerprinting by ISPs or VPN logs. If you want the tool to identify itself (useful when probing your own infrastructure), pass `--identify` to switch to a self‑identifying UA (`rkn-block-checker/<ver>`).

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for rkn-block-checker

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
rkn-block-checker | MushyBook