저는 Discourse 포럼의 관리자이며, 브라우저에서 세션 쿠키를 복제하여 게시글 좋아요 같은 간단한 사용자 작업을 실행하는 Python 프로그램을 작성하려고 했습니다. 세션 복제는 성공적으로 이루어졌고, GET 요청을 통해 모든 페이지(비공개 카테고리 포함)를 가져올 수 있었기 때문에 세션이 정상적으로 복제되었음을 확인할 수 있었습니다. 하지만 POST 요청으로 게시글에 좋아요를 누르려 했을 때 “Bad CSRF” 오류가 발생했고, 조사해 보니 요청에 CSRF 토큰이 생성되지 않는 것을 알게 되었습니다. 브라우저에서는 CSRF 토큰이 생성되는데, 이 복제된 세션에서는 왜 생성되지 않는지 알고 싶습니다. 요청에 사용할 CSRF 토큰을 얻을 수 있는 방법이 있을까요? 제 간단한 코드는 아래와 같습니다.
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)