lucidiot's cybrecluster

Stalker son livreur en Python

Lucidiot Informatique 2019-08-29
Comment utiliser une négligence des développeurs pour pousser l'obsession du suivi de colis beaucoup trop loin…


Vu que je n'ai dernièrement pas été très actif sur Brainshit, mais plutôt sur d'autres projets en tous genres, je me disais que ça pourrait être une bonne idée de commencer à en parler sur Brainshit. Tout est une opportunité pour publier des choses un peu plus souvent !

Voici un projet que j'ai réalisé en fin d'année dernière, PyUrbanTZ. Ce projet est un client Python pour un unique endpoint d'API public, fourni par UrbanTZ. UrbanTZ fournit une solution de gestion logistique pour « le dernier kilomètre, » les livraisons courtes et rapides vers la porte du destinataire depuis le dernier intermédiaire (centre de tri, entrepôt, etc.).

L'API permet d'obtenir, en connaissant l'UUID d'une livraison, d'en obtenir une quantité d'informations plutôt étonnante, y compris d'ordre privées, au point que j'émette des doutes quant à sa compatibilité avec le RGPD : nom, adresse, numéro de téléphone du destinaire, nom du conducteur, heure prévue d'arrivée, détail des colis avec poids, dimensions et codes-barres, et coordonnées GPS exactes du camion de livraison. Et par exactes, je veux dire mises à jour toutes les dix secondes, depuis le départ du camion de l'entrepôt jusqu'à son retour à la fin de la tournée, même après que la livraison aie été effectuée.

J'ai créé ce client d'API afin de répondre à un besoin simple : j'effectue régulièrement mes courses en ligne pour les recevoir à domicile, et le lien qui m'est envoyé par SMS pour le suivi de la livraison renvoie vers une page qui contient dans son URL l'UUID de la livraison et qui fait appel à l'API. J'ai voulu avoir un script qui pourrait m'indiquer toutes les dix secondes la distance entre le livreur et mon appartement, pour savoir vraiment quand il arrivera.

λ python3 -m urbantz.tracker 0e480341-0fae463b-921cc6b6-c48d1e6f
2019-08-01T13:37:42Z 1405.3 meters
2019-08-01T13:37:52Z 1352.4 meters
2019-08-01T13:38:02Z 1364.1 meters

Le script en lui-même est assez simple, parce que je n'ai jamais vraiment eu besoin de grand chose de plus. Je l'améliorerai probablement plus tard quand je commencerai à concrétiser mes projets de domotique ; je pourrai alors faire clignoter un feu de manœuvre SNCF quand le livreur sera à moins de cinquante mètres de moi.

Pour utiliser le client dans du code Python, rien de plus simple :

>>> from urbantz import Delivery
>>> delivery = Delivery('0e480341-0fae463b-921cc6b6-c48d1e6f')
>>> delivery.update()
>>> delivery.driver.first_name
'Jean-Pierre'
>>> delivery.position.distance(delivery.destination.coordinates)
1405.3

Voilà, il n'y a pas grand chose à dire de plus sur ce projet. En découvrant l'état de cet endpoint d'API public, je ne peux qu'émettre des doutes sur la qualité des prestations d'UrbanTZ. J'hésite même à leur envoyer une lettre de la mort RGPD pour vérifier mes soupçons. En attendant, je pourrai continuer à suivre mon livreur de beaucoup trop près…


Commentaires

Il n'y a pour l'instant aucun commentaire. Soyez le premier !