Je suis modérateur sur un forum Discourse et je souhaitais écrire un programme Python qui clonerait les cookies de session du navigateur pour exécuter une action utilisateur simple, comme aimer un message. J’ai réussi à cloner la session et à utiliser des requêtes GET pour accéder à n’importe quelle page, y compris les catégories privées (je sais donc que la session a été clonée avec succès). Cependant, lorsque j’ai tenté d’aimer simplement un message avec une requête POST, j’ai reçu l’erreur « Bad CSRF ». Après investigation, j’ai constaté qu’aucun jeton CSRF n’était généré dans la requête. Je voudrais savoir pourquoi les jetons CSRF sont générés dans le navigateur mais pas dans cette session clonée. Existe-t-il un moyen d’obtenir un jeton CSRF pour la requête ? Mon code simple est ci-dessous.
import requests
import browsercookie
cj = browsercookie.firefox()
r = requests.post("https://somediscoursesite.com/post_actions", data={'id':'theid','post_action_type_id':'2','flag_topic':'false'}, cookies=cj)
print(r.status_code)
print(r.request.headers)