Programmation

samedi 25 avril 2020, 16:01  #1
Quick Response Code - Problemes général de cookies

Bonjour à tous !

J’utilise python et pour la plupart des challenges avec des pages web (CAPTCHA me if you can, Suite arithmétique, Quick Response Code, etc) j’ai tendance à vraiment vraiment galérer pour envoyer des requêtes qui prennent en compte des actions précédemment réalisées (infos stockées dans un cookie, tokens, ce genre de choses)...

Du coup par simplicité j’utilise Selenium pour résoudre ces challenges, en gros je fais un driver.get(url_du_challenge), je parse le code source et je remplie puis envoie le formulaire via driver.find_element_by_css_selector(’#pouet’).send_keys(’solution’)

Ca fonctionne assez bien mais je pense que c’est pas la solution de contourner ma lacune en utilisant Selenium (en plus les phases de tests prennent plus longtemps et il faut bien que je comprenne pourquoi je n’y arrive pas :( )

J’utilise le module requests et je procède comme suit :

r = requests.get(’lechallenge.php’)
my_cookie = r.cookies
solution = get_solution(r.content)

r = requests.get(’lechallenge.php ?solution=’ + solution, cookies=my_cookie)

et là pas de probleme, ca fonctionne.
Mais quand il s’agit d’envoyer des requetes post il n’y a plus personne...
genre

r = requests.get(’lechallenge.php’)
my_cookie = r.cookies
solution = get_solution(r.content)

r = requests.post(’lechallenge.php ?solution=’ + solution, data=’solution’ : solution, cookies=my_cookie)

Ca fait comme si le site ne savait plus qui j’étais, j’y pige rien est-ce que quelqu’un peut m’aider à comprendre ?

Merci d’avance :)

samedi 25 avril 2020, 17:58  #2
Quick Response Code - Problemes général de cookies
ElTouco72
  • 283 posts

tu peux utiliser la classe session du module requests

ça évite de devoir gérer des cookies
http://fr.python-requests.org/en/latest/user/advanced.html

samedi 25 avril 2020, 20:21  #3
Quick Response Code - Problemes général de cookies

Purée super merci beaucoup !
Effectivement c’est mille fois plus simple à gérer comme ça.

J’avais également fait l’erreur de mal nommer le champs name dans l’envoi des datas (’cametu’ au lieu de ’metu’).
J’ai réussi à refaire tous les challenges uniquement avec du mode console et du module requests.

Merci encore !