Oggi a mente fresca ho rifatto il capture. L'ho condiviso sul Google drive, è grandino perché uno Speedtest ovviamente trasferisce svariati megabytes:
https://drive.google.com/file/d/1-4D-_jz8CLL7OScA9WVUKsZU8aKarGYj/view?usp=sharing
Aprendo il file prima cerco i TCP SYN verso 88.149.202.248, e abbiamo conferma che sono tutte connessioni verso la 8080/TCP. Ci sono 17 diverse sessioni ma le prime sono solo dei check che fa mentre seleziono "cambia server" dal sito Ookla. Peraltro, se qualcuno ha la pazienza di scaricarsi il capture, il sito Speedtest fa una quantità di traffico assurdo, si vede all'inizio della sessione.

La sessione Speedtest vera e propria (la prima di tante) è quella che inizia con ordinale 11664, quasi tutti questi 11000 pacchetti li ha fatti Speedtest.net solo per selezionare quale server usare, ho volutamente fermato tutto sul PC da cui ho fatto il capture per non avere ciarpame nella sessione. Ci sono giusto due o tre pacchetti di Windows qua e la.
Tolgo la forzatura 8080->HTTP dalla config di wireshark, così è costretto a usare l'euristica:

Se lascio fare l'euristica non lo riconosce. Quindi forzo che si tratta di Websocket:

A questo punto posso anche seguire il flusso TCP partendo dall'ordinale 11664, il primo pacchetto dopo il TCP ACK (ordinale 11667) decodificato come Websocket da origine a qualcosa di sensato:

Ovviamente il contenuto non è visibile, ma come era atteso sembra proprio trattarsi di una sessione WebSocket.
Tutto ciò premesso: la sessione WebSocket non avviene verso il sito https://www.speedtest.net bensì verso l'IP 88.149.202.248 che è l'IP del server Speedtest di EOLO, dove è presente la servlet. Detta sessione è ovviamente cifrata ma non c'è uno scambio di certificati né tantomeno una verifica verso una certification authority.
Questo significa che nattando la destinazione 88.149.202.248 verso un altro IP, a patto che sull'IP verso cui si dirotta il traffico ci sia una servlet Ookla in ascolto, potrebbe benissimo funzionare. Del resto $ISPdimerda lo faceva e il dato che vedo, a labile memoria, non mi è poi così nuovo. Non avevo mai verificato che si trattasse di un WebSocket ma il meccanismo che avevo in mente c'è, ovvero l'applet che carichi dal sito Speedtest.net quando avvii il test vero e proprio parla direttamente con la servlet del server che hai selezionato per i fatti suoi in base ad un elenco di IP distribuiti senza passare attraverso Speedtest.net
Poi se mi sbalio mi corigerete 😅