01
DNS poisoning
Network layer (L3/DNS)signal_type: dns-poisoning
The simplest, oldest, most-bypassed technique: when the user resolves a blocked domain, the ISP returns a fake IP (often a blockpage server or 0.0.0.0).
How it works
When a device queries an ISP DNS resolver for a blocked domain, the resolver returns a manipulated answer — either pointing the user at a censorship notice page, a black hole IP, or no answer at all. Trivially circumvented with DoH/DoT, but still the default in many countries because it works on every device with zero config and requires no DPI.
Detection signal
We compare DNS answers from inside-country probe nodes against a clean control resolver. Disagreement on the A/AAAA record for known-controversial domains = dns-poisoning. CensoredPlanet Satellite contributes the largest share of this signal.
02
SNI blocking
Transport layer (L4/TLS)signal_type: sni-blocking
The Server Name Indication (SNI) header is sent in the TLS ClientHello in plaintext. Censors inspect it and drop the connection mid-handshake when it matches a blocked hostname.
How it works
In a normal HTTPS connection, the client tells the server which hostname it wants via SNI before the encrypted tunnel is established. Censoring middleboxes read this field and inject a TCP RST or drop the packet if the SNI matches a blocklist. Encrypted Client Hello (ECH) defeats this, but adoption is still low.
Detection signal
Failed TLS handshake (no cert delivered) for blocked hostname BUT successful TLS to control hostname on same IP. We also fingerprint the cert when one IS delivered — multiple probes seeing the same anomalous fingerprint is strong evidence.
03
TCP RESET injection
Transport layer (L4/TLS)signal_type: tcp-reset
Active middlebox monitors traffic. When a banned pattern is detected, it injects forged TCP RST packets, terminating the connection from both ends.
How it works
The Great Firewall pioneered this in the early 2000s. A passive tap mirrors all traffic to an inspection engine. When a forbidden keyword, hostname, or TLS fingerprint matches, the engine fires off TCP RST packets to both endpoints with spoofed source addresses. The client and server both see what looks like a normal connection termination.
Detection signal
Connections that succeed initially then die at suspicious wall-clock times (during ClientHello, mid-stream after a specific byte sequence). Statistical: RST counts to certain destinations 1000× higher than control.
04
HTTP filtering / blockpage injection
Application layer (L7/HTTP)signal_type: http-blocking
When a domain isn't fully HTTPS, the censor can inject a blockpage HTML response instead of forwarding the request — or return a 4xx/5xx status code.
How it works
For plain HTTP traffic (or sites still serving some content over HTTP), middleboxes can rewrite the response inline. The user sees a government "this site is restricted under article X" notice instead of the real content. The blockpage HTML often gets fingerprinted across ISPs in the same country — same wording, same logo.
Detection signal
HTTP response with status 200 or 451 containing blockpage signatures (logos, specific text). Compared against control fetches that succeed normally.
05
ASN-level outage / kill switch
Infrastructure (routing)signal_type: outage
The nuclear option: an ISP or government withdraws BGP routes for entire AS numbers, taking large chunks of users offline. Often happens during elections, protests, or unrest.
How it works
An ISP stops announcing its IP prefixes to the global BGP table. Every router in the world stops knowing how to reach those addresses. Users in that ASN see "no internet" — not "Twitter is slow", just nothing.
Detection signal
CAIDA IODA aggregates ~6 independent signals (BGP, active probing, DNS query rates, dark-net traffic) into a single "is this ASN online" score. We ingest IODA every 6h and create an incident when score drops below threshold.
06
Middlebox detection
Infrastructure (routing)signal_type: middlebox-detection
Even when a connection succeeds, the path may be running through a deep-packet-inspection middlebox that fingerprints traffic for later action.
How it works
OONI ships specially-crafted invalid HTTP requests (`http_invalid_request_line` test) that no real server would respond to. A reply to these — usually from a transparent proxy or inline DPI box — proves a middlebox is present on the path.
Detection signal
OONI http_invalid_request_line + http_header_field_manipulation. Reply where there should be none = middlebox.
07
Tor blocking
Application layer (L7/HTTP)signal_type: tor-blocking
Tor directory authorities and known relay IPs are commonly blocked. Bridges (unlisted entry points) are the standard countermeasure — and themselves get hunted.
How it works
The Tor network publishes its directory authorities. Censors fetch the list daily and add all relay IPs to blocklists. Pluggable transports (obfs4, snowflake, meek) disguise Tor traffic as something else.
Detection signal
OONI tor test connects to known Tor directory authorities + a sample of relays. Failure to reach = blocked.