Search code examples
python-3.xauthenticationpython-requestscsrfpythonanywhere

Login using python requests doesn't work for pythonanywhere.com


I am trying login to the site pythonanywhere.com

import requests

url='https://www.pythonanywhere.com/login'

s = requests.session()

values = {
    'auth-username': 'username', 
    'auth-password': 'password'}

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

u = s.post(url, data=values, headers=headers)

But I am getting a <Response [403]> , Csrf verification failed. How do I login to that site?


Solution

  • You need to get page first.So you can get the crsftoken and sessionid.And remember to set Referer=https://www.pythonanywhere.com/login/

    import requests
    
    url='https://www.pythonanywhere.com/login'
    
    s = requests.session()
    s.get(url)
    
    values = {
        'auth-username': 'username', 
        'auth-password': 'password',
        "csrfmiddlewaretoken" : s.cookies.get("csrftoken"),
        "login_view-current_step" : "auth"
        }
    
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36',
                'Referer': 'https://www.pythonanywhere.com/login/'}
    
    u = s.post(url, data=values, headers=headers)
    print(u.content)