Tim Perry

@pimterry.fyi

Founder of https://httptoolkit.com (@httptoolkit.com), Node.js core collaborator, tech speaker, drummer, mountain biker and dad. 🇬🇧/🇨🇦 living in 🇪🇸

I do lots of long-ish horizon work (e.g. OpenSSL PRs I can't actually use for years after merging). Remarkable how bad LLMs are at even considering this as an option. Quick fix every time, even if there's a clear long-term right answer we should do instead. Does not bode well for the ecosystem...

Nearly 5 years of work later, I've successfully closed the Node.js TLS fingerprinting issue: github.com/nodejs/node/.... As of Node 26.4.0, it's possible to match most common TLS fingerprints in Node directly. I've published a library to do all the hard work here: github.com/httptoolkit/...

GitHub - httptoolkit/node-tls-impersonate: TLS fingerprint control within Node.js's normal networking APIs

TLS fingerprint control within Node.js's normal networking APIs - httptoolkit/node-tls-impersonate

github.com

Jeg er til det her oplæg, og der er stuvende fyldt. Det er konferencens fjerde dag, folk er trætte og kunne sove længe. Men folk kommer hele tiden ind. De sidder på gulvet og står nede bagved. Det her kommer til at kunne ses i journalistik rundt om i Europa i fremtiden 🥳

Tim Perry@pimterry.fyi · 2mo ago

I'm speaking at @journalismarena.eu's Dataharvest conf in Belgium this weekend! I'll be teaching investigative journalists how to intercept, interpret & scrape mobile app network traffic, it's going to be a lot of fun 😀 Anybody else I know here attending? Would be great to meet up #dataharvest26

I'm speaking at @journalismarena.eu's Dataharvest conf in Belgium this weekend! I'll be teaching investigative journalists how to intercept, interpret & scrape mobile app network traffic, it's going to be a lot of fun 😀 Anybody else I know here attending? Would be great to meet up #dataharvest26

Dataharvest 2026 - the European Investigative Journalism Conference: Unlocking the apps: How can you scrape d...

View more about this event at Dataharvest 2026 - the European Investigative Journalism Conference

dataharvest26.sched.com

Somewhere there's a CEO stuck in a meeting that's in desperate need of amazon gift cards, completely unable to get their team to answer their texts

So, Chrome's "web standard" Prompt API: Mozilla: Opposed WebKit: Opposed Microsoft: Several concerns W3C TAG: Several concerns Developers: Mostly negative Chrome: Ships anyway. A sad time for web standards. But, I guess someone at Google will get promoted, so 'every cloud…'

I've been thinking about simonomi.dev/blog/color-c.... Whipped up a quick prototype for HTTP Toolkit's hex view - what do you think? Interesting and more useful than monochrome, or just visually noisy? See if you can guess what each file type is here - answers in the alt text 😀

A hex view with bytes coloured by value - in this case a favicon (lots of 00 at the start, then repeating patterns later).A hex view with bytes coloured by value - in this case HTML (lots of ascii values with similar colours, and quite a few symbols for the < > etc)A hex view with bytes coloured by value - in this case protobuf - a mix of ascii strings and very low 0X bytes.

Just created my first Azure account to migrate HTTP Toolkit from certs to Microsoft's new 'Artifact Signing' setup (azure.microsoft.com/en-us/produc...). The UI is eye opening... Flashback 10 years in UI, impossible navigation, endless "Please update from X"/"Did you know Y is now Z" banners, wow 😬

Azure Artifact Signing (formerly Trusted Signing) | Microsoft Azure

Secure your applications with Artifact Signing (formerly Azure Trusted Signing), a fully managed end-to-end signing service for code, documents, and applications.

azure.microsoft.com

WebSerial has landed in Firefox Nightly !! 🎉 Enable it in about:config and it all just works as expected. Took a brand new ESP32 and had a new Bluetooth proxy added to Home Assistant within 2 minutes 👌

BildBildBildBild

Two papers came out last week that suggest classical asymmetric cryptography might indeed be broken by quantum computers in just a few years. That means we need to ship post-quantum crypto now, with the tools we have: ML-KEM and ML-DSA. I didn't think PQ auth was so urgent until recently.

A Cryptography Engineer’s Perspective on Quantum Computing Timelines

The risk that cryptographically-relevant quantum computers materialize within the next few years is now high enough to be dispositive, unfortunately.

words.filippo.io

Finally bit the bullet and bought more RAM! The rumours are true, the prices really are excruciating, more than 4x the price I paid for the other stick 18 months back 🥲

I've been playing around with agent-powered HTTP debugging -there's a lot of potential here... Even just with minimal data, Claude gets a really good understanding of flows very quickly, amazing for exploring. A quick summary of overall traffic & state flow across ~160 requests & responses:

Claude output:

Summary of the state flow

  Edge launches (no state)
      │
      ├─→ Bing qbox (cookieless) ──→ Bing sets MUID + 9 others
      │
      ├─→ SmartScreen (token in Authorization header, no cookies)
      │
      └─→ GET reddit.com
           │ 301 → www.reddit.com (no cookies set on redirect)
           │
           └─→ GET www.reddit.com
                │ Sets: loid, session_tracker, csrf_token, token_v2, csv, edgebucket
                │
                ├─→ POST /svc/shreddit/events  ← sends all 6 cookies back
                │   └─ response refreshes session_tracker
                │
                ├─→ POST /svc/shreddit/graphql  ← sends all 6 cookies (with updated session_tracker)
                │   └─ response refreshes session_tracker again
                │
                ├─→ GET /svc/shreddit/feeds/popular-feed  ← sends all 6 cookies
                │   └─ response refreshes session_tracker again
                │
                ├─→ POST alb.reddit.com/track  ← NO cookies (cross-subdomain, no-cors)
                │
                └─→ GET www.redditstatic.com/*  ← NO cookies (CDN, different domain)

  The key insight is that Reddit bootstraps the entire anonymous session in a single response — one page load sets up identity (loid), session tracking, CSRF protection, an auth JWT, A/B bucketing, and a
  cookie format version — and then every subsequent same-origin request carries all of that state forward, with session_tracker being the only one that gets continuously rotated.

Do I know anybody at GitHub who can help me get HTTP Toolkit into the student pack? I'm happy to do free accounts for students, I've filled out the form a couple of times - they never reply, but students keep endlessly emailing me to ask me if it's included.

Node.js is moving to one major release per year starting with Node 27! 🚀 ✅ Simpler: Every release becomes LTS. ✅ Predictable: Version numbers now align with the year. ✅ New: A 6-month Alpha channel for early testing. https://bit.ly/4rnosLg

Node.js — Evolving the Node.js Release Schedule

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

nodejs.org

Continuing the epic battle to fix TLS fingerprinting in Node (bsky.app/profile/pimt...), I opened two more PRs this week enabling cert compression in Node (github.com/nodejs/node/...) and direct native access to OpenSSL for addons (github.com/nodejs/node/...). With that, it's basically there!

Enable compression in OpenSSL and add opt-in certificate compression support for TLS connections by pimterry · Pull Request #62217 · nodejs/node

Until now, we&#39;ve fully disabled all compression features in OpenSSL via no-comp. This PR: Removes no-comp from our OpenSSL build, so we can use some compression features. This is required beca...

github.com

Tim Perry@pimterry.fyi · last yr.

Made my 2nd PR to OpenSSL: github.com/openssl/open.... More than any other project, I feel very cautious about OpenSSL contributions - code & setup is complicated & fiddly, I'm not familiar with their patterns, and boy oh boy is it high-profile if you break it. Hopefully this is an easy one though!

Wow, I sure am glad we have such diversity in the CSS world and that AIs consider all of the options fairly, instead of hypothetically being hyper focused on any specific library.

Which UI styling approach do you prefer?

  1. Tailwind + shadcn/ui (Recommended)
     Tailwind for utility CSS + shadcn/ui (Radix-based) for accessible, customizable components. Best native feel
     with full control.
  2. Tailwind + Radix UI
     Tailwind for styling + raw Radix primitives. More manual work but maximum flexibility.
  3. Ionic + Tailwind
     Ionic provides native-quality components and transitions out of the box. Heavier but purpose-built for
     Capacitor apps.

Magic link login is fine, session expiry is fine, but for the love of god please don't do both. If you have to re-auth every week, there is little more frustrating that blocking the process waiting for an email so I can click a button, over and over and over...