Soy moderador en un foro de Discourse y quería escribir un programa en Python que clonara las cookies de sesión del navegador y ejecutara una acción simple de usuario, como dar me gusta a una publicación. Logré clonar la sesión y pude usar solicitudes GET para acceder a cualquier página, incluso categorías privadas (así que sé que la sesión se clonó correctamente), pero cuando intenté simplemente dar me gusta a una publicación con una solicitud POST, recibí un error de “CSRF incorrecto”. Tras investigar, noté que no se estaba generando ningún token CSRF en la solicitud. Quisiera saber por qué los tokens CSRF se generan en el navegador, pero no en esta sesión clonada. ¿Existe alguna forma de obtener un token CSRF para la solicitud? Mi código simple se muestra a continuación.
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)