Tu as pensé à récupérer l'adresse avec WebRTC?
Non, juste le X-Forwarded-For, un champ peu renseigné dans la pratique (surtout par des proxy ouverts qui restent aujourd'hui rarement accessibles).
$ curl -s https://ip.lafibre.info/ -H 'X-Forwarded-For: <script>alert("CARRÉMENT VALIDE")</script>' | grep 'Votre véritable adresse'
<li>Votre véritable adresse IP est <strong><script>alert("CARRÉMENT VALIDE")</script></strong> <small>(différente si vous utilisez un proxy)</small></li>
Cette ligne pourrait être n'affichée qu'au besoin.
Outre WebRTC, il pourrait y avoir le décodage des IPv4 encapsulées (dans les IPv6 Free par exemple) qui pourrait être intéressant, afin d'afficher directement l'hôte et donc le NRA (on peut aussi penser à intégrer d'autres sources de données comme le traceroute chez Orange/FBN mais ce n'est pas le sujet).
[..]
Imaginons : une simple page avec un menu vitesse (en Hz) et un bouton démarrer. Le bouton lance un script qui fait des connexions et récupère IP et port. Pour chaque IP, une liste de ports est compilée.
Si on fait ça, il faudrait peut-être une implèmentation légère comme un socket qui écoute les connexions et renvoie au plus vite le port en réponse (sans persistance), pour :
- éviter de gaspiller la charge ou les logs du serveur ;
- éviter de se heurter aux limites de connexions parallèles fixées par les navigateurs, si trop de latence. En sachant que si ça pose problème, certains sites ont pour astuce de contourner (de manière limitée) cet aspect en répartissant les requêtes sur différents sous-domaines. Il me semblait également avoir lu que les websockets étaient exonérées de ces limites de connexions, mais à voir si ça concerne tout le processus de communication (handshake compris) ou juste le moment à partir duquel la connexion bidirectionnelle est établie.