/edit
And you can combine both approaches: XOR'ing the code first for good measurements. :)
539 karma · joined January 3, 2025
/edit
And you can combine both approaches: XOR'ing the code first for good measurements. :)
Basically each email gets written as a brainf*ck program and stored in a "data-" attribute. The html only includes a more primitively obfuscated statement "Must enable Javascript to see e-mail." by default which then gets replaced by another brainf*ck interpreter (in JS) with the output of the brainf*ck code. Since we only output ASCII we can reduce the size of the brainf*ck code by always adding 32 to each value it outputs. The Javascript is loaded from what seemingly looks like a 3rd party domain. There we filter basing on heuristics and check if the "referer" matches before sending out the actual interpreter code.
Of course all this would not help if a scraper properly runs things through Javascript too.
Recently I read you soon will be able to run DOOM via CSS, so certainly it should be possible to have a brainf*ck interpreter in CSS? That would be the next step… just to get rid of the Javascript, but then I'm okay with all the downsides of using Javascript just for the e-mail obfuscation.
Anyway… I also regularly (at least once a year) rotate those public contact addresses.
Ideally the PI also should to what the extra DSL Modem does… but I guess that's where the dram must stop. :D
Of course then you got sites like gnu.org too that block you because your slightly outdated user agent.
(The interface on the website is a bit confusing to use, IMHO)
But most SPAMs are HTML, so you'll have a good default last-stage in-client filtering in place in case some SPAM actually makes it through the other setup on the server (greylisting, DNS based filtering lists, policy-based filtering, etc.) :)
I set that up in like 2014? Even back then it was known already that the quick /etc/resolver way was the deprecated way to do things. So I guess they finally killed that feature off?
The proper (more awkward) way is to use scutil directly (which then stores the settings in some binary plist somewhere, I assume).
Maybe try this and see if it still works afterwards?
Luckily I use a proper content blocker (uBlock Origin in hard mode).
I need to use the "Allow Right Click" extension (it also fixes other annoyances than just pure right click blocking) to make it act sanely.
If that's a case study how to not do things: Congrats! Job well done!
Why does this new project here needed to replace the original like that in this dishonourable way? The proper way would have been to create a proper new project.
Note: even Python's own pip drags this in as dependency it seems (hopefully they'll stick to a proper version)
<bleep> that nonsense!
I guess writing a short journal everyday is a bit similar like this. Just forcing yourself into a routine of some sort. Just to get one thing surely checked off per day.
(AKA: I'm not sure it's a good idea to use someone else's long-standing well-known brand in the digital space as name for your own digital space project)
But I wouldn't know where to start. :-\
Sadly neither version works here with an older clang on OS X. Both variants build fine with 9 warnings each. But the old variant dies with a "Bus Error: 10", and the new variant with "Segmentation fault: 11". Same with gcc (albeit only 8 warnings.)
/edit
OK, just wrong user input. You gotta feed it a number, and not a "foobar" or another random string.