Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

[requests] se logger sur un site et faire en sorte que le navigateur prenne en compte la session

+6 votes

J'arrive à me logguer sur les sites en utilisant Requests (login, mdp tout ça, tout ça) mais je voudrais que mon browser prenne en compte le fait que je sois loggué.
Par ex sur le forum XY.com avec mon script j'ai fais des tests et ça passe tranquille, j'ouvre firefox et je vais sur le site, on me demande quand même mes identifiants.
C'est possible de faire ça ? C'est une histoire de cookie ? Pourtant session() gère ça non ?

import requests
url= 'http://www.XY.com/login.php'
login = {username = 'tagada', password = 'tsointsoin'}
s = requests.Session()
connexion = s.post(url, login)
demandé 24-Mar-2015 par vasywilly (166 points)

2 Réponses

+7 votes
 
Meilleure réponse

Firefox et Chrome utilisent tout les deux une BDD sqlite pour stocker les cookies.
Pour utiliser les cookies de Chrome avec python requests j'ai trouvé ceci.
Pour Firefox, il y aurait sûrement moyen d'utiliser la BDD en la chargeant avec cookielib
avec un bout de code genre:

import requests
import cookielib

URL = 'example.com'
jar = cookielib.CookieJar()
r = requests.get(URL, cookies=jar)

En théorie, pour les sites encore non visités avec ton navigateur un cookie devrait être crée et tu devrais donc pouvoir te logger sans tes identifiants. Pas testé par contre.

répondu 24-Mar-2015 par barnumbirr (2,750 points)
sélectionné 24-Mar-2015 par vasywilly

merci!
j'ai cherché un peu en suivant ton lien et j'ai trouvé des trucs qui montrent que ça doit pouvoir se faire, ils se connectent à la BDD
ici par exemple
ou bien ici aussi
J'ai plus qu'à creuser le truc pour essayer de voir si je peux faire manger mon cookie python à firefox

+1 vote

Les sessions et cookies dans Python sont dans un environnement d'exécution distinct de Firefox. C'est comme si tu te loggait sur XY.com avec Firefox et que tu l'ouvres à côté avec Chrome : il faudra quand même que tu te connectes avec Chrome.
Il n'y a pas de "panier" global au niveau du système qui gère tout ça. Donc je pense qu'à part modifier les fichiers de Firefox afin de lui injecter les données qui vont bien pour dire que tu est connecté sur ce site, il n'y a pas moyen :/

répondu 24-Mar-2015 par Epoc (392 points)

argh :/
bien ce qu'il me semblait
il semblerait que Firefox par exemple enregistre les cookies dans une base nommée cookies.sqlite
Tu crois qu'il y aurait moyen de les forcer dedans à partir de python ?

Tu devrait accepter la réponse de @c0da :)

...