Progressive Dehancement

I’ve ummed and ahhed over removing my contact form entirely. Quality enquiries are rare but still worth the risk of spam. I’d like to hold out a little longer. At least until “AI” apologists ruin the web (don’t pretend you’re not!) Until that day, I’m open for contact. […]


This content originally appeared on dbushell.com (blog) and was authored by dbushell.com (blog)

I’ve ummed and ahhed over removing my contact form entirely. Quality enquiries are rare but still worth the risk of spam. I’d like to hold out a little longer. At least until “AI” apologists ruin the web (don’t pretend you’re not!) Until that day, I’m open for contact.

Contact submissions are sent to my inbox using PGP encryption (a technical exercise) properly signed by my @dbushell.com domain. With Proton using true end-to-end encryption, there isn’t opportunity for traditional spam filters.

My new tactic is inspired by… 🥁

Progressive Enhancement

Progressive enhancement is the act of building for the web, with the web. First, you create an accessible baseline that works for all users. Second, you enhance it with fancy functionality based on browser capabilities. Web standards give us the tools.

This is a tried, tested, and true practice. And yet developers still clown around with new ideas like FOUN (Flash of Unbroken Next.js). It’s a bold strategy, but I’ll stick to the classics.

Next.js error message (quoted in full text below this image)

Progressive enhancement has never been easier with CSS @supports and JavaScript APIs like matchMedia. No JavaScript? No problem.

Now that said, this new FOUN trend gave me an idea. Like Next.js, what if I purposefully downgraded the experience?

Progressive Dehancement

My contact form is already progressively enhanced. By default it sends a POST submission that gets a redirect response. I enhance that with a web component using JavaScript’s fetch to avoid a page refresh. It’s not the fanciest thing on the web but it’s a small enhancement.

Standard <form> submissions and fetch requests differ in how they POST data. A back-end server or worker can differentiate between the two by:

Regular <form> posts default to:

content-type: application/x-www-form-urlencoded

Whilst fetch requests default to:

content-type: multipart/form-data

When using FormData which is by far the easiest method.

I know what you’re thinking, and yes, headers are easily changed.

I’ve eyeballed hundreds of submissions over the years. 90% of bots use the baseline and 99% of humans use the enhanced fetch version. Your milage may vary. I flag email subjects with “A” or “B” to know what method was used. With this knowledge I can apply heavier counter defences against spam.

If a bot is suspected through progressive dehancement I will:

  • Decline all gmail.com and outlook.com addresses
  • Decline phrases like “SEO”, “unsubscribe”, and “click here”
  • Decline scripts like Cyrillic and recently Hangul

I’ve had a sudden influx in Korean cryptocurrency scams. I thought that bubble had burst? I’m 100% confidence I’ll never get a legitimate contact from Google Mail users via a basic POST submission. This experiment has been running and tweaked for over a year.

I’m happy to attempt to converse in other languages. The chance of blocking a real human is slim but not impossible. It’s a calculated risk.

Maybe I should just get it over with and delete the contact form?


This content originally appeared on dbushell.com (blog) and was authored by dbushell.com (blog)


Print Share Comment Cite Upload Translate Updates
APA

dbushell.com (blog) | Sciencx (2025-05-02T10:00:00+00:00) Progressive Dehancement. Retrieved from https://www.scien.cx/2025/05/02/progressive-dehancement/

MLA
" » Progressive Dehancement." dbushell.com (blog) | Sciencx - Friday May 2, 2025, https://www.scien.cx/2025/05/02/progressive-dehancement/
HARVARD
dbushell.com (blog) | Sciencx Friday May 2, 2025 » Progressive Dehancement., viewed ,<https://www.scien.cx/2025/05/02/progressive-dehancement/>
VANCOUVER
dbushell.com (blog) | Sciencx - » Progressive Dehancement. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/05/02/progressive-dehancement/
CHICAGO
" » Progressive Dehancement." dbushell.com (blog) | Sciencx - Accessed . https://www.scien.cx/2025/05/02/progressive-dehancement/
IEEE
" » Progressive Dehancement." dbushell.com (blog) | Sciencx [Online]. Available: https://www.scien.cx/2025/05/02/progressive-dehancement/. [Accessed: ]
rf:citation
» Progressive Dehancement | dbushell.com (blog) | Sciencx | https://www.scien.cx/2025/05/02/progressive-dehancement/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.