أنا مشرف على منتدى Discourse وأرغب في كتابة برنامج بلغة بايثون يقوم بنسخ ملفات تعريف ارتباط الجلسة (session cookies) من المتصفح وتنفيذ إجراء مستخدم بسيط مثل الإعجاب بمنشور. لقد نجحت في نسخ الجلسة وتمكنت من استخدام طلبات 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)