Retour en haut

Du nouveau pour l'API Colissimo

posté le jeudi 13 octobre 2011 à 17:11:08 par delphiki :: Web

Il y a quelques mois, je vous avais rédigé un petit article sur l'API « cachée » de Colissimo.

Or cette dernière s'est très vite retrouvée non fonctionnelle, La Poste ayant déclaré qu'une API « publique » était prévue. Sauf que constat 8 mois plus tard : toujours rien.

J'avais un peu oublié cette histoire jusqu'à hier je flânais dans les commentaires de l'article en question.
J'ai alors voulu revérifier les dump TCP de l'application de la poste pour m'apercevoir qu'ils n'avaient absolument pas changés, et pourtant, l'application marchait !

La seule différence entre les appels effectués par l'application mobile et mon script PHP était... l'User Agent !
Et en effet, la solution au problème était bien là.

En forçant un User Agent de smartphone lors de l'appel PHP, on récupère le résultat escompté ! :)

J'ai donc mis à jour la mini-lib pour manipuler l'API.
Celle-ci est toujours disponible sur GitHub.

Petit changement cela dit lorsque vous voulez récupérer les informations sous forme d'image, il faut désormais un dossier local pour stocker les images en question (voir le README dans les sources).

PS : merci à @sp0z pour le code de test :)


Commentaires :

# Clem, le vendredi 4 novembre 2011 à 12:50:58

Excellent, c'est vraiment ce que je cherchais. Dommage que colissimo ne retourne pas un code pour chaque état au lieu d'un message en français. D'ailleurs à quoi sert "Status" ?

Merci, bonne continuation!

 
# delphiki, le mercredi 7 décembre 2011 à 12:10:12

Bonjour Clem,

J'avoue ne pas savoir à quoi correspond le paramètre Status.
Les informations qui m'intéressaient étaient surtout les autres. ;)

 
# tom, le jeudi 24 janvier 2013 à 09:45:30

bonjour et merci pour ce tuto :)
Par contre, comment faites-vous pour récupérer cette clé (au cas ou elle changerait) ?

 
# delphiki, le samedi 26 janvier 2013 à 19:20:45

Bonjour tom,

si la clé venait à changer, je pourrai facilement la retrouver en faisant un tcpdump. :)

J'explique dans les commentaires de l'article d'origine comment j'ai procédé.

 
# jacou, le samedi 16 février 2013 à 17:52:50

Excellent API, qui nous permet d'obtenir le dernier état de livraison d'un paquet colissimo.

Un petit regrt, il nous manque encore le parcours du paquet comme obtenu via la page:
http://www.colissimo.fr/portail_colissimo/suivre.do?colispart=<parcelnumber>.

Merci de partager votre code.

 
# Vinum, le samedi 23 mars 2013 à 11:28:16

Apparemment cela ne fonctionne plus.
Une idée ?

 
# delphiki, le samedi 23 mars 2013 à 17:17:34

Je n'avais pas remarqué (je n'utilise pas spécialement l'API).

Je vais regarder ça, merci de me l'avoir signalé. ;-)

 
# Vinum, le dimanche 24 mars 2013 à 08:43:00

Apparemment cela semble venir des colissimo qui ne fonctionnent plus. Les autres types d'envoi (lettre max, colis etc...) semblent toujours fonctionner

 
# delphiki, le dimanche 24 mars 2013 à 11:05:11

Je pense plutôt que c'est dû à une nouvelle protection qu'ils ont mis en place.

De ce que j'ai vu, on a plutôt le droit à un message du style "ce site ne fait pas partie de la liste autorisée".

 
# Vinum, le dimanche 24 mars 2013 à 13:36:03

Même leur propre page facebook de suivi des colis dont colissimo ne fonctionne plus. Par compte le site dédié de suivi des colissimo lui fonctionne

 
# delphiki, le mercredi 27 mars 2013 à 15:46:29

C'est bon, j'ai trouvé le bon referer à spécifier pour que ça fonctionne, donc c'est réparé et un peu optimisé (pour les images).

Les modifs sont dispo sur GitHub : https://github.com/delphiki/ColissimoAPI

 
# Vinum, le mercredi 27 mars 2013 à 19:21:16

Merci pour la mise à jour. Mais l'ancienne version refonctionne également, il s'agissait d'un problème de la poste.
Merci encore

 
# delphiki, le mercredi 27 mars 2013 à 22:49:33

Ah bah le moment où cela a été rétabli a dû coïncider avec le moment où je testais les referer alors, parce que j'ai cru trouver le bon sur le coup.

Mais bon, j'en ai profité pour corriger quelques petits trucs par la même occasion.

 
# Vinum, le jeudi 28 mars 2013 à 08:20:36

Cela fonctionne mieux sans le referer, car avec le referer seul les colissimo sont suivis. Sans le referer tous les types d'envois sont suivis

 
# delphiki, le jeudi 28 mars 2013 à 09:12:27

Merci pour l'info, je vais corriger ça.

 
# Chris, le mardi 22 octobre 2013 à 20:48:57

Bonsoir,

Le petit module est hors service depuis hier, vous rencontrez le même problème ?

Merci d'avance

 
# delphiki, le mercredi 23 octobre 2013 à 17:25:34

Bonjour Chris,

je n'utilise pas spécialement le script à vrai dire, je l'ai juste fait pour aider ceux qui auraient pu en avoir besoin.

Je viens de tester et il a l'air de fonctionner de mon côté.

Avez-vous toujours des soucis ?

 
# Vinum, le vendredi 8 novembre 2013 à 18:01:09

Bonjour,
Il semblerait que certains utilisateurs rencontrent des difficultés d'utilisation et d'autres non. Il se peut donc que la poste blackliste certains.

 
# Tsunamy, le lundi 11 novembre 2013 à 16:39:45

Bonjour
merci pour cette api!
depuis quelques jours j'obtiens ceci : DOMDocument::loadXML(): Empty string supplied as input

Apparemment rien n'est retourné
Qu'est-ce qui a changé à la Poste?

 
# jpbauer, le mercredi 13 novembre 2013 à 18:33:31

Bonjour

J'obtiens aussi depuis le 8 ou 9 novembre un message d'erreur lors de la récupération de l'état du colis.

Avez-vous plus d'info ?

Cordialement

 
# Vinum, le jeudi 14 novembre 2013 à 13:12:42

Bonjour,
Effectivement cela ne fonctionne plus.

 
# popom, le mardi 19 novembre 2013 à 23:17:51

Bonjour,

http://www.luc-sanchez.fr/2010/07/realiser-un-suivi-des-paquets-coliposte-colissimo-dans-votre-site-internet/#.UovgGGQ6Vbw

J'ai testé le code, il fonctionne très bien !
Bonne soirée
Cyril

 
# tom, le mercredi 20 novembre 2013 à 14:20:59

je viens de tester le code donné par popom ça ne fonctionne pas non plus.
Si quelqu'un à une solution ... :)

 
# tom, le mercredi 20 novembre 2013 à 17:37:36

je viens de tester le code donné par popom ça ne fonctionne pas non plus.
Si quelqu'un à une solution ... :)

 
# aby, le mercredi 27 novembre 2013 à 17:59:08

ce qui est bizarre c'est que si on essaye d'accéder aux résultats à partir d'un navigateur (url : http://www.laposte.fr/outilsuivi/web/suiviInterMetiers.php?key=d112dc5c716d443af02b13bf708f73985e7ee943&code=numcolissimo&method=xml), ou en lançant le script à partir d'un serveur local, ça marche.
J'ai aussi essayé en passant par un proxy dans le script et ça ne marche pas (pensant que c'était une histoire d'ip). est-ce que laposte filtre les IP ? mais vont-ils jusqu'à blacklister les ip de certains proxy publics ? ou est-ce que la configuration de mon serveur web local diffère sur un point par rapport au serveur ovh qui fait que le serveur laposte peut faire la différence et accepter ou non la requete ? J'ai modifié le script pour qu'il envoie exactement la même requête que mon navigateur (modification du header) et ça ne change rien..
Bref, je n'ai plus d'idée (si ce n'est que laposte filtre les ip)
PS : au passage vous noterez peut-être que lorsque vous essayez d'accéder aux résultats à partir d'un script sur un serveur ovh le serveur la poste renvoie une erreur 410 et si vous essayez d'accéder aux résultats juste après avec l'url dans votre navigateur vous aurez aussi une erreur 410, il faut atteindre 2min pour avoir de nouveau accès à un résultat depuis votre navigateur, c'est comme si la tentative d'accès interdit bloquait la ressource pendant 2 min.

 
# luc sanchez, le vendredi 29 novembre 2013 à 11:56:18

Salut,
le code que j'avais fait en procédural fonctionne toujours. voici le lien :
http://www.luc-sanchez.fr/2010/07/realiser-un-suivi-des-paquets-coliposte-colissimo-dans-votre-site-internet/#.UovgGGQ6Vbw

 
# aby, le vendredi 29 novembre 2013 à 15:41:00

Je viens de tester ton script sur serveur OVH et ça ne marche pas ("The requested page has been removed"), dois-je en déduire une bonne fois pour toute que le serveur mutu OVH sur lequel je suis est blaclisté par la Poste ? Est-ce que tu fais tourner ton script sur un serveur OVH une fois par jour ? (est-ce que quelqu'un le fait acutellement ?)

 
# tom, le lundi 2 décembre 2013 à 09:12:25

aucun code ne fonctionne, d'ailleurs même l'application mobile de la poste sur android ne fonctionne plus, la poste travaille actuellement à résoudre le problème ... ils sont pas pressés :)

 
# tom, le lundi 2 décembre 2013 à 17:59:46

en fait, les codes fonctionnent bien ... simplement la poste semble limiter "excessivement" le nombre de requetes par IP, au delà on est bloqué sur les serveurs ...

 
# aby, le mardi 17 décembre 2013 à 14:41:12

j'ai l'impression que c'est pas une simple limite de requête, j'y ai plus du tout accès depuis mon ip perso.. Quelqu'un y a t-il encore accès ?

Tom : tu dis que "la Poste y travaille actuellement", tu as un contact à la Poste ?

 
# aby, le mercredi 18 décembre 2013 à 16:07:38

j'ai peut-être une idée en attendant que la poste fasse des réparations...mais je suis bloqué à un endroit

On peut se connecter à l'url suivante pour avoir les résultats :
http://www.colissimo.fr/portail_colissimo/suivreResultatStubs.do?parcelnumber=NUMCOLIS

Cette page de résultat affiche des images, la première image a toujours le même nom (fonction d'une partie du numéro de colis)

Une fois qu'on s'est connecté à cette adresse on peut récupérer l'image à cette adresse :
http://www.colissimo.fr/portail_colissimo/imageio?styleBold=true&width=260&id=NUMSPEC_libe_1
avec NUMSPEC = substr(NUMCOLIS,4,8)

après on peut récupérer la taille de cette image, la taille de l'image "votre colis a été livré" est unique et est la plus petite

maintenant j'ai un problème je n'arrive pas à récupérer cette image après appel de la première url depuis mon serveur, ça marche depuis un navigateur seulement, car oui l'image n'est accessible qu'une fois qu'on a fait appel à la page de résultat

 
# Tsunamy, le vendredi 20 décembre 2013 à 18:11:47

Aby

lorsque le colis est livré la taille de l'image est 260x13
mais il en est de même pour le statut "votre colis est prêt à être livré" donc l'idée n'était pas mauvaise mais ne fonctionnera pas correctement

 
# Aby, le lundi 23 décembre 2013 à 11:11:56

Non non je parle bien du poids de l'image (effectivement la taille est ambigue pour une image désolé), les dimensions des images sont toutes les mêmes effectivement mais pas le poids, et comme c'est la plus petite phrase c'est le plus petit poids..

Au passage j'ai lu quelque part qu'en janvier 2014 Colissimo ouvrirait une api fonctionnelle pour les détenteurs d'un compte Inet-Expeditor, Est-ce que quelqu'un a des infos supp là dessus ?

 
# frederic34, le samedi 15 mars 2014 à 15:43:26

On peut calculer un md5 de l'image et établir une correspondance entre md5 et statuts.

 
# tweepy, le jeudi 12 juin 2014 à 21:27:43

Il semble que si l'ont ne spécifie pas le referer, l'api retourne:
"Le site proposant ce service n'est pas reconnu par La Poste. Pour suivre vos envois, rendez-vous sur www.laposte.fr"

Et si l'on place le referer à "http://www.laposte.fr/Particulier/Profiter-de-nos-services-en-ligne/Suivre-vos-envois" l'api retourne le suivis correctement.

Donc au final, pas besoin de cookie, ni de user agent, juste ce get:
wget "http://www.laposte.fr/outilsuivi/web/suiviInterMetiers.php?key=null&method=xml&code=XZXXXXXXXXX" --referer=http://www.laposte.fr/Particulier/Profiter-de-nos-services-en-ligne/Suivre-vos-envois

Il est donc normal que le lien de fonctionne pas sous un navigateur.
(referer trouvé grace à Wireshark et une machine virtuel Android)

Ca serait possible de pusher les modif sur le github?

 
# delphiki, le vendredi 13 juin 2014 à 23:00:00

Bonjour tweepy,

merci pour ces retours !

Je vais essayer d'implémenter la modif assez rapidement sur github. ;-)

Merci encore !

 
# gotcha5832, le vendredi 18 juillet 2014 à 20:57:14

Bonsoir à tous.

Merci pour vos articles,

Je me suis inspiré de vos script et http://www.luc-sanchez.fr/2010/07/realiser-un-suivi-des-paquets-coliposte-colissimo-dans-votre-site-internet/#.U8lrhMtqZhF
Pour me developpez un modules pour mettre à jour le statu de mes commandes.

Tout es ok à l'unité, mais malheureusement j'ai eu la mauvaise idée de lancé le script sur 10 expédition.
Là il me répond 5 fois sur dix, mais depuis j'ai le droit à un belle 410 et ceci par le script ou directement en WGET à l'unité

Alors il semblerais effectivement que ce soit un blacklistage D'IP, ceux qui se sont fit griller leur IP l'on il retrouver un accès?

 
# gotcha5832, le lundi 11 août 2014 à 09:41:59

Dommage un mois après l'ip est toujours blacklistée

 
# rando, le jeudi 5 mai 2016 à 14:10:10

Des idées pour faire fonctionner cela de nouveau en 2016, ça m'aiderait bien pour mon site...

 
Ajouter un commentaire