Specification
The blocklist is a text file containing domain rules formatted for compatibility with standard ad-blocking engines.Syntax
Update Frequency
Continuous — community-maintained
Source
hapara-fail/blocklist on GitHub
CDN
Served via jsDelivr for high availability
CDN Endpoint
For integration, use the jsDelivr CDN endpoint:Blocking Standards
Our blocklist targets services that surveil, restrict, or compromise the autonomy and privacy of users — particularly students and minors subject to invasive monitoring tools.What We Block
- Invasive EdTech & School Monitoring
- Parental Control Services
- What We Do Not Block
This includes software deployed in educational institutions that goes beyond reasonable network management and crosses into surveillance.
Classroom monitoring tools
Classroom monitoring tools
Products like Hapara, GoGuardian, Securly, Lightspeed, and Bark that track browsing history, capture screenshots, read emails, or monitor keystrokes on student devices.
MDM-enforced filtering
MDM-enforced filtering
Mobile device management solutions that impose persistent content restrictions or reporting even outside of school hours or networks — monitoring students on their personal time.
Activity logging platforms
Activity logging platforms
Services that aggregate behavioral data about students and transmit it to third-party servers, often without meaningful transparency or consent.
No-Overblocking Philosophy
This blocklist is designed to be set it and forget it. That means:Low false positive rate is our top priority
Low false positive rate is our top priority
We do not add a domain unless we are confident it is exclusively or
primarily associated with a surveillance or invasive service. Uncertainty is
a reason to wait, not to block.
No broad or shared infrastructure blocks
No broad or shared infrastructure blocks
No speculative blocks
No speculative blocks
We do not speculatively block domains that might be used by a monitored
service but serve no confirmed surveillance function. Rules must be backed
by evidence.
Broad catch-all rules are rejected
Broad catch-all rules are rejected
Even if a rule would block a bad actor, we won’t add it if it risks catching
unrelated traffic. The collateral damage is not worth it.
Whitelist Rules
Some monitored vendors host domains that serve dual purposes — authentication portals, student-facing apps, or status endpoints that are needed for a degraded-but-functional experience even when the surveillance service itself is blocked. In these cases, we maintain explicit allowlist exceptions using ABP exception syntax:@@ prefix instructs compatible engines to allow matching traffic, overriding any block rule that would otherwise apply. Allowlist entries are placed above their associated block rules in blocklist.txt.
Example Allowlist Entries
@@||pass.securly.com^
Securly Pass is a digital hall pass system used by schools. Blocking it
breaks hall pass functionality without meaningfully reducing surveillance
exposure.
@@||status.securly.com^
Status page only — no behavioral data collection occurs through this
endpoint. Safe to allow with no privacy trade-off.
Whitelist Standards
A domain is added to the allowlist only if it meets all three of the following criteria:Functionally necessary
Blocking it causes breakage for the user beyond just defeating the
surveillance tool — for example, it breaks authentication, connectivity, or
a student-facing service that is not itself a surveillance endpoint.
Does not perform surveillance
The endpoint in question does not transmit behavioral, usage, or personally
identifying data to the vendor. We verify this before adding the exception.
Patched Services
Some vendors have implemented what we call “patched” behavior — a failsafe specifically designed to defeat DNS-level blocking by holding internet access hostage.How Patching Works
Rather than gracefully degrading when their domains are unreachable, patched services intentionally sever internet connectivity when they cannot reach their command-and-control (C2) servers.Heartbeat is sent
The vendor’s agent — a browser extension, system service, or MDM profile —
periodically sends a heartbeat to its C2 servers to confirm the monitoring
stack is reachable.
Heartbeat fails
If the domain is blocked by DNS, the heartbeat fails. Instead of treating
this as a routine network error, the agent interprets it as a policy
violation.
Known Patched Vendors
Patched vendors are tagged in the blocklist source using the following comment format:Lightspeed Systems
The Lightspeed Relay agent periodically checks in with its relay
infrastructure. If those domains are blocked, it cuts internet access on
all affected devices until connectivity to Lightspeed’s servers is
restored.
GoGuardian
Extension-based. When its policy servers are unreachable, the GoGuardian
extension cuts internet access on all devices rather than failing open.
Reporting a Patched Service
If you discover a service that severs internet connectivity when its domains are blocked, please report it so we can flag it appropriately and warn other users before they deploy the block.Compatibility
The list is designed for engines that support Adblock Plus (ABP) syntax for DNS or network-level blocking.Supported Software
- Pi-hole
- AdGuard Home
- uBlock Origin
- Brave (Shields: Aggressive)
- Little Snitch Mini
- eBlocker
Incompatible
- DNSMasq / NextDNS / DNSCrypt
- Hostfile-based blockers
- pfBlockerNG / OPNsense
- Standard DNS Resolvers (Bind, Unbound)
Integration
Pi-hole
- Navigate to Group Management > Adlists.
- Add the CDN URL as a new list.
- Update Gravity (
pihole -g).
AdGuard Home
- Navigate to Filters > DNS blocklists.
- Click Add blocklist > Add a custom list.
- Enter
hapara.failas the name and the CDN URL. - Click Save.
uBlock Origin
- Open Settings > Filter lists.
- Scroll to Custom and click Import.
- Paste the CDN URL and click Apply changes.
Contributing
We accept community contributions to keep the blocklist accurate and effective.Reporting Issues
Request a Block
Suggest a new service or domain to be added to the blocklist.
Report Patched System
Report a service that cuts internet access when its domains are blocked.
Report False Positive
Report a legitimate site that was broken by our blocklist.
Submitting Changes
Edit blocklist.txt
Follow these conventions when editing the file:
- Use Adblock Plus syntax:
||domain.com^ - One domain per line, placed under the correct vendor header.
- Mark patched vendors with a
! VendorName [PATCHED]comment directly above their block rules. - Place allowlist exceptions (
@@||...^) above their associated block rules with an explanatory comment.
Verify
Check for trailing spaces, accidental deletions, or rules that could cause false positives before submitting.