Coming from https://news.ycombinator.com/item?id=38150096
I'd be awesome if there was a React component or server side module that
rendered three random words followed by a domain that's configured as a
catch-all. Even better if the catch-all was periodically rotated.
I have a service on my homelab that serves a webpage for some of the
miscellaneous domains that I own - like http://dataphiles.org - the
service renders a contact email that's based on the domain that the visitor
landed on. That way if one of the domains is scraped and the email address
harvested from it, I can just funnel anything "To:" that email to junk.
Taking the idea one step further, it'd be interesting to have a different
email address rendered for each visitor. A visitor could be defined as a
client IP address for a period of time.
This could be implemented as:
1. Check the cache to see if seed had been generated for the IP address
2. If not, render a new seed for the client. Something like `hash(ipAddress, currentUnixTime())`
3. Derive a set of three words from the seed
1. Mask off three 18 bit words
2. Select a word from `/usr/share/dict/words` based on each of the masked words
4. Render the output as `
[email protected]`
This would be unique enough, be readable, and understandable as an email
address to visitors. They may get a little confused if they came back
a couple days later and saw a different address but a little explainer
next to the address could work.
Note that this only protects against drive by scraping and likely wouldn't
stop an attacker that figured out that `*@example.com` went to you. Maybe
it's best to just add a subdomain and rotate that over time, like `@foo.example.com`
See also:
https://blame.email/
https://spencermortensen.com/articles/email-obfuscation/
https://news.ycombinator.com/item?id=38379397
> Tip: Almost none of the scrapers and bots run WebAssembly :)
Hmmmmmm :thinkingface: