Mauvaise CSRF sur une requête provenant d'une session clonée avec Python

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)

Cela sera-t-il utilisé par tous les utilisateurs, uniquement par l’équipe, ou seulement par vous-même ? Je suppose que, si cela sert uniquement à vous aider dans la modération, il serait préférable d’utiliser une clé API ou de générer des clés API spécifiques pour certains membres de l’équipe.

Je veux que cela puisse être utilisé par n’importe quel utilisateur connecté. En gros, je souhaite récupérer la session de l’utilisateur et lui permettre d’exécuter des actions de manière programmatique avec Python, notamment aimer des publications. Je sais que ce serait beaucoup plus simple d’utiliser une clé d’administration, mais je veux que cela soit accessible à tous les utilisateurs. Et puisque un utilisateur peut aimer une publication depuis son navigateur, pourquoi ne pas pouvoir le faire de manière programmatique depuis son propre appareil en clonant la session dans l’invite de commande ?