惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - sslboard/throwaway: An open source Cloudflare Wo...
weddpros · 2026-04-30 · via Hacker News: Show HN

A Cloudflare Worker that detects disposable/temporary email domains and invalid TLDs, exposed as a fast JSON API. Ships 122K+ domains in a ~291KB binary bloom filter — one runtime dependency (tldts), no external calls, pure edge compute. Includes a clean web UI at / for quick checks and /llms.txt for AI agent discovery.

Live deployment: throwaway.sslboard.com

Deploy to Cloudflare Workers

How It Works

At build time, npm run build:filter reads the disposable-email-domains list (122K+ entries) and compiles it into a bloom filter — a space-efficient probabilistic data structure. The filter is stored as a raw .bin file and loaded via Cloudflare Workers' Data rule as an ArrayBuffer at module load time. No base64, no encoding overhead, zero decode cost.

At request time, tldts parses the domain to determine whether the TLD is a real, ICANN-recognized public suffix. This catches addresses like user@fake.notarealtld that have no chance of receiving mail.

Bloom Filter Properties

Property Value
Items ~122K domains
Filter size ~291 KB
False positive rate ~0.1% (1 in 1,000)
False negatives Zero
Hash functions 10 (double-hashing from 2 cyrb53 hashes)

Why 0.1% false positives are acceptable: Disposable email signups are low-quality. A false positive means one legitimate user retries with a different address — a minor inconvenience. False negatives (letting disposables through) are the real problem, and bloom filters guarantee zero false negatives.

API

GET /

Minimal web UI — single input field to check emails. Shows three verdicts: LEGITIMATE, DISPOSABLE, or INVALID.

GET /check?email=user@domain.com

Check a single email address.

{
	"email": "user@mailinator.com",
	"domain": "mailinator.com",
	"valid_tld": true,
	"disposable": true
}

GET /check?domain=mailinator.com

Check a single domain.

{ "domain": "mailinator.com", "valid_tld": true, "disposable": true }

POST /check

Batch check emails or domains.

Emails:

{
	"emails": ["user@mailinator.com", "john@gmail.com", "test@fake.notarealtld"]
}

Response:

{
	"results": [
		{
			"email": "user@mailinator.com",
			"domain": "mailinator.com",
			"valid_tld": true,
			"disposable": true
		},
		{ "email": "john@gmail.com", "domain": "gmail.com", "valid_tld": true, "disposable": false },
		{
			"email": "test@fake.notarealtld",
			"domain": "fake.notarealtld",
			"valid_tld": false,
			"disposable": false
		}
	]
}

Domains:

{
	"domains": ["mailinator.com", "gmail.com"]
}

Response:

{
	"results": [
		{ "domain": "mailinator.com", "valid_tld": true, "disposable": true },
		{ "domain": "gmail.com", "valid_tld": true, "disposable": false }
	]
}

GET /stats

Returns filter metadata.

{
	"itemCount": 121570,
	"bitCount": 2330512,
	"hashCount": 14,
	"byteSize": 291314,
	"falsePositiveRate": 0.0001
}

GET /llms.txt

Machine-readable API documentation for AI agents. Plain text markdown.

Response Fields

Field Type Meaning
valid_tld boolean true if the domain ends in a real ICANN-recognized TLD. false means the address can't receive mail.
disposable boolean true if the domain is in the disposable-email blocklist. Only meaningful when valid_tld is true.

Decision Logic

  1. valid_tld: falsereject — domain is not real
  2. valid_tld: true + disposable: truereject — known throwaway provider
  3. valid_tld: true + disposable: falseaccept — looks legitimate

Error Responses

All errors return {"error": "message"} with appropriate status codes:

Status Meaning
400 Missing/invalid parameters or body
404 Unknown path
405 Unsupported HTTP method

Performance

  • Synchronous — no I/O, no external API calls, no KV lookups
  • Microsecond responses — bloom filter lookup is pure arithmetic
  • Zero cold-start overhead — filter loaded as a Uint8Array at module load time
  • One runtime dependencytldts for TLD validation (bundled by Wrangler)

Deploy Your Own

git clone <this-repo>
cd throwaway-worker
npm install
npm run build:filter    # Generate bloom filter from disposable domain list
npm run dev             # Local development
npm run deploy          # Deploy to Cloudflare

Requirements

Regenerate the Filter

If you want to update the domain list:

npm run build:filter

This re-reads the disposable-email-domains package and writes fresh src/generated/filter.bin and src/generated/filter-meta.ts files.

License

MIT — by the people at SSLBoard.com