The Porkbun DNS API

A few months back, we added a long-requested feature to Porkbun: a DNS API. While there’s lots of straightforward applications for this API, such as a Dynamic DNS client (blog post coming soon), we wanted to think of some fun applications for this new feature.

One impractical idea floated was data transfer via DNS. Although you can’t send a whole lot of data, TXT records allow for binary data transfer via Base64-encoded data URLs.

We knew we had to try it.

So, we created some tools:

  • A utility to save binary data in TXT records using the Porkbun DNS API (txttp_save_porkbun.py)
  • Another to retrieve binary data saved in TXT records via DNS lookups (txttp_get.py)

These were cool. We tried some fun experiments like encoding audio files and images in TXT records. Fun little party tricks, summoning binary data out of thin air.

Enter Bunscape

In typical Porkbun fashion, we took things too far, and ended up with Bunscape, an actual browser that uses DNS as its transport, sitting in a little fake operating system that runs in your browser.

Check out our live demo here or the Github repo here.