rbignon/doctoshotgun

Error 401

Dyze95 opened this issue · 7 comments

Bonjour,
Merci beaucoup pour votre travail sur ce projet.

Je reçois une erreur 401 lors du lancement du script.

Voici le contenu de mon terminal (avec l'option -d pour debug) :
./doctoshotgun.py -d Paris example.email@gmail.com
Password:
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): www.doctolib.fr:443
DEBUG:urllib3.connectionpool:https://www.doctolib.fr:443 "GET /sessions/new HTTP/1.1" 200 None
INFO:browser:Response saved to 677dad1389174096842e851184a51d4a
DEBUG:browser:Unable to handle https://www.doctolib.fr/sessions/new
DEBUG:urllib3.connectionpool:https://www.doctolib.fr:443 "POST /login.json HTTP/1.1" 200 None
INFO:browser:Response saved to 0e2f596a8ebd4e27949d4743235cc5c5
DEBUG:browser:Handle https://www.doctolib.fr/login.json with LoginPage
DEBUG:urllib3.connectionpool:https://www.doctolib.fr:443 "GET /account/master_patients.json HTTP/1.1" 401 None
INFO:browser:Response saved to 869a22057d7146148592bdd36c2b2e09
Traceback (most recent call last):
File "/Users/Victor/Documents/Programmation/Python/doctoshotgun/./doctoshotgun.py", line 420, in
sys.exit(Application().main())
File "/Users/Victor/Documents/Programmation/Python/doctoshotgun/./doctoshotgun.py", line 378, in main
patients = docto.get_patients()
File "/Users/Victor/Documents/Programmation/Python/doctoshotgun/./doctoshotgun.py", line 207, in get_patients
self.master_patient.go()
File "/usr/local/lib/python3.9/site-packages/woob/browser/url.py", line 98, in go
r = self.browser.location(self.build(**kwargs), params=params, data=data, json=json, method=method, headers=headers or {})
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 911, in location
response = self.open(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 898, in open
return super(PagesBrowser, self).open(callback=internal_callback, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 790, in open
return super(DomainBrowser, self).open(req, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 531, in open
response = self.session.send(preq,
File "/Users/Victor/Documents/Programmation/Python/doctoshotgun/./doctoshotgun.py", line 42, in send
return callback(self, resp)
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 527, in inner_callback
self.raise_for_status(response)
File "/usr/local/lib/python3.9/site-packages/woob/browser/browsers.py", line 560, in raise_for_status
raise ClientError(http_error_msg, response=response)
woob.browser.exceptions.ClientError: 401 Client Error: Unauthorized

Je suis sur Mac OS X. Avez-vous une idée de ce qui pourrait causer le problème ?

Bonjour,

Je n'arrive pas à reproduire. Ça arrive systématiquement ?

Same here, cannot reproduce.

Bonjour,

Je n'arrive pas à reproduire. Ça arrive systématiquement ?

Oui, j'ai essayé sur un machine virtuelle Linux c'est pareil !

plut commented

j'ai eu le même souci mais il est résolu :

  • l'erreur 401 est côté serveur, elle signale un souci d'authentification (en principe rien à voir avec la machine sur laquelle tourne le script, tant que la bonne version de TLS est installée du moins)
  • j'ai donc essayé de me connecter manuellement sur doctolib : mon compte était devenu inactif, il fallait confirmer l'adresse mail (en cliquant sur un lien dans un mail), ensuite ça a marché.
tb08 commented

Bonjour,
J'ai le même problème, qui semble lié à l'authentification 2-step. Le problème c'est que dès que j'essaie un nouveau browser, je dois refaire une authentification two step, mais avec le browser woob intégré utilisé par le script, je ne sais pas comment la réaliser pour avoir le cookie qui va bien.

tb08 commented

Dans mon cas ce n'est pas un ban, je peux me connecter de la même adresse avec un browser classique.

Idem, c'est juste un 2 step pour valider le browser.
Dans une navigation 'normale' on est redirigé vers https://www.doctolib.fr/sessions/two-factor et dans le même temps on reçoit un code à 6 chiffres à saisir sur cette page.
Ce serait top si on pouvait passer ce code au script dans un second temps. Par contre je ne reçois pas le mail quand je lance le script bien que la connexion semble ok puisqu'il tente de récupérer les patients (mais il prend un 401)