我是 Discourse 论坛的版主,我想编写一个 Python 程序,从浏览器中克隆会话 Cookie,并执行简单的用户操作(例如点赞帖子)。我成功克隆了会话,并且能够使用 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)