Trurl, un outil super pratique pour manipuler les URL

par Korben -

Aujourd’hui, je vais vous causer d’un petit outil bien pratique qui va vous changer la vie (je sais, j’abuse jamais) : trurl !

Alors c’est quoi trurl ? Ben c’est juste un programme en ligne de commande, inspiré de notre bon vieux pote tr, qui permet de parser et manipuler les URL. Ça a l’air tout bête dit comme ça, mais je peux vous dire que c’est super pratique et vachement puissant.

Parce que les URL, c’est pas toujours facile à gérer. Entre les caractères spéciaux, les encodages, les paramètres de requête, les fragments, y a de quoi s’arracher les cheveux. Et puis mal implémenté, ça peut apporter son lot de failles de sécurité si on n’y fait pas gaffe. Mais avec trurl, pas de prise de tête ! Il utilise le parser d’URL de la librairie libcurl, qui est hyper robuste et éprouvé, du coup, vous pouvez manipuler vos URL en toute sérénité.

Rien qu’avec une petite commande toute simple, vous pouvez par exemple :

  • Changer le nom de domaine d’une URL
  • Modifier le port
  • Extraire le chemin
  • Ajouter des paramètres de requête
  • Trier les paramètres par ordre alphabétique
  • Supprimer certains paramètres
  • Encoder/décoder des caractères spéciaux
  • Reformater l’URL en JSON
  • Et plein d’autres trucs !

Genre si je veux changer le nom de domaine d’une URL, je fais juste :

trurl --url https://korben.info --set host=example.com
https://example.com/

Et bim, c’est fait ! Fastoche non ? Plus besoin de se taper des RegEx de 3km de long ou de réinventer la roue à chaque fois.

Ce que j’aime bien aussi, c’est qu’on peut utiliser trurl de façon interactive en lui passant les URL au fur et à mesure, ou bien traiter tout un fichier d’URL d’un coup. Il gère même les espaces et autres caractères spéciaux sans broncher.

Par exemple, pour ajouter un paramètre à une URL existante :

trurl --url "https://example.com?param1=value1" --add-query "param2=value2" 
https://example.com?param1=value1&param2=value2

Ou encore, pour supprimer un paramètre spécifique :

trurl --url "https://example.com?param1=value1&param2=value2" --remove-query "param1"
https://example.com?param2=value2

Côté installation, c’est méga simple aussi. Sur la plupart des distros Linux, vous devriez pouvoir l’installer direct depuis votre gestionnaire de paquets préféré. Sinon, les sources sont dispos sur GitHub.

Ça m’a permis de virer des tonnes de code crado bricolé à la main dans des scripts et de le remplacer par des commandes trurl bien propres. Par exemple, j’avais un script qui devait récupérer le flux RSS d’un site, filtrer certains paramètres de l’URL et ajouter un tracker pour les stats. Avant je faisais ça avec des RegEx et des concaténations dégueulasses, maintenant, en quelques commandes trurl, c’est réglé !

curl "https://example.com/feed.xml" | trurl --query-sort --query-exclude "utm_*" --add-query "tracker_id=korben"

Attention quand même, trurl a quelques limitations à connaître. Par exemple, il ne gère pas les redirections tout seul, faudra passer par curl si besoin. Et pour certains cas tordus avec des caractères exotiques, il pourrait y avoir des surprises. Donc prudence, pensez à toujours tester avant de balancer en prod !

Sinon astuce bonus, trurl a une option --accept-space bien pratique quand vos URL contiennent des espaces. Et le --sort-query est top pour remettre de l’ordre dans vos paramètres.

A demain !