Voir l'exemple de code suivant. Vous pouvez l'utiliser directement pour vous connecter à un site Web qui utilise uniquement des cookies pour stocker les informations de connexion.
import requests
LOGIN_URL = 'https://examplenotarealpage.com'
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
response = requests.get(LOGIN_URL, headers=headers, verify=False)
headers['cookie'] = '; '.join([x.name + '=' + x.value for x in response.cookies])
headers['content-type'] = 'application/x-www-form-urlencoded'
payload = {
'username': 'user_name',
'password': 'randompass123'
}
response = requests.post(LOGIN_URL, data=payload, headers=headers, verify=False)
headers['cookie'] = '; '.join([x.name + '=' + x.value for x in response.cookies])
Il y a quelques emplacements possibles du CSRF
jeton. Différents sites Web utilisent différentes manières de le transmettre au navigateur. En voici quelques-uns :
- Il peut être accompagné d'en-têtes de réponse. Dans ce cas, il est facile de l'obtenir.
-
Parfois, la méta de la page contient le jeton CSRF. Vous devez analyser le contenu html de la page pour l'obtenir. Trouvez le bon sélecteur CSS pour cela. Voir un exemple :
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'lxml') csrf_token = soup.select_one('meta[name="csrf-token"]')['content']
-
Il peut être à l'intérieur d'une balise de script avec du code JavaScript. L'obtenir sera délicat. Mais, vous pouvez toujours utiliser regex pour l'isoler.