// Source: https://localcoder.org/get-csrf-token-using-python-requests
//Solution 1:
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'lxml')
csrf_token = soup.select_one('meta[name="csrf-token"]')['content']
// Solution 2:
import requests
from bs4 import BeautifulSoup
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chromium/80.0.3987.160 Chrome/80.0.3987.163
Safari/537.36'
}
login_data = {
'name' : 'USERNAME',
'pass' : 'PASSWORD',
'form_id':'new_login_form',
'op':'login'
}
with requests.Session() as s:
url = 'https://www.codechef.com/'
r = s.get(url,headers=headers,verify=False)
#print(r.content) # to find name of csrftoken and form_build_id
soup = BeautifulSoup(r.text, 'lxml')
csrfToken = soup.find('input',attrs = {'name':'csrfToken'})['value']
form_build_id = soup.find('input',attrs = {'name':'form_build_id'})
['value']
login_data['csrfToken'] = csrfToken
login_data['form_build_id'] = form_build_id
r = s.post(url,data=login_data,headers = headers)
print(r.content)