I would like to check if after the request I successfully connected to the site or not. I tried several methods that I know but nothing works. Can someone help me please?
import requests
loginhead = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': '89',
'Origin': 'https://campusvirtuel.usthb.dz',
'Connection': 'keep-alive',
'Referer': 'https://campusvirtuel.usthb.dz/login/index.php',
'Cookie': 'MoodleSession=s2t3h0pkqfbb8g9rugg6lpkupg',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'DNT': '1',
'Sec-GPC': '1'
}
user = input('Enter username: ')
pswrd = input( 'Enter password: ')
def log():
loginurl = 'https://campusvirtuel.usthb.dz/login/index.php'
data = {
'username': user,
'password': pswrd
}
reqlogin = requests.post(loginurl, data=data, headers=loginhead)
print(reqlogin)
log()
If you logged in successfully server side will respond Set-Cookie
header with authentication token.
Let's suppose that success header looks like:
Set-Cookie: AuthenticationToken=XXXXXXXXXXXXX; path=/
In this case your code should be like this:
import requests as r
# create new session
session = r.session()
# get logintoken
pre_login_response = session.get('https://campusvirtuel.usthb.dz/login/index.php')
if 'Set-Cookie' in pre_login_response.headers:
# cookie format is MoodleSession=XXXXXXXXXXXXX; path=/
cookie_name, cookie_val = [x.rstrip(';') for x in pre_login_response.headers['Set-Cookie'].split(' ')[0].split('=')]
# new session token taken
login_token = cookie_val
else:
raise Exception('Can`t get session token')
# set login data
login_credentials = {
'username': 'some_login_name',
'password': 'some_password',
'logintoken': login_token
}
# try to login
login_response = session.post(
'https://campusvirtuel.usthb.dz/login/index.php',
data=login_credentials,
headers=custom_headers
)
# Check if we have authentication token
if 'Set-Cookie' in login_response.headers:
cookie_name, cookie_val = [x.rstrip(';') for x in login_response.headers['Set-Cookie'].split(' ')[0].split('=')]
if cookie_name == 'AuthenticationToken':
print('Okay we have logged in! Success!')
else:
print('Something went wrong we still not logged in')
else:
print('Something went wrong we still not logged in')
The other way is to check reqlogin.text
output
reqlogin.text
is a login pages's html code that means that you still not logged in. If login failed server will redirect you to login page again.
Something like:
# check if we have login button on page
if '<button type="submit" class="btn btn-primary btn-block mt-3" id="loginbtn">Connexion</button>' in reqlogin.text:
print('That is login page')
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments