Sono un moderatore su un forum Discourse e volevo scrivere un programma Python che clonasse i cookie di sessione dal browser ed eseguisse una semplice azione utente, come mettere un “mi piace” a un post. Sono riuscito a clonare la sessione e ho potuto utilizzare richieste GET per accedere a qualsiasi pagina, anche alle categorie private (quindi so che la sessione è stata clonata con successo), ma quando ho provato a mettere semplicemente un “mi piace” a un post con una richiesta POST ho ricevuto l’errore “Bad CSRF”. Dopo un’indagine ho notato che nessun token CSRF veniva generato nella richiesta. Vorrei sapere perché i token CSRF vengono generati nel browser, ma non in questa sessione clonata. C’è un modo per ottenere un token CSRF per la richiesta? Il mio codice semplice è riportato di seguito.
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)