Comment “se connecter” pour un site web à l'aide de Python Demandes du module?
Je suis en train de poster une demande de connexion à un site web en utilisant les Demandes de module en Python, mais ce n'est pas vraiment de travail. Je suis nouveau à cela...donc je ne peux pas savoir si je dois faire de mon nom d'utilisateur et Mot de passe, les cookies ou d'un certain type de HTTP autorisation chose que j'ai trouvé (??).
from pyquery import PyQuery
import requests
url = 'http://www.locationary.com/home/index2.jsp'
Donc maintenant, je pense que je suis censé utiliser "post" et les cookies....
ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}
r = requests.post(url, cookies=ck)
content = r.text
q = PyQuery(content)
title = q("title").text()
print title
J'ai le sentiment que je suis en train de faire les cookies chose de mal...je ne sais pas.
Si elle ne veut pas se connecter correctement, le titre de la page d'accueil devrait sortir à "Locationary.com" et si elle le fait, elle doit être "Home Page".
Si vous pourriez peut-être expliquer un peu plus sur les demandes et les cookies pour moi et m'aider avec cela, je vous en serais très reconnaissante. 😀
Grâce.
...Il n'a toujours pas vraiment encore. Ok...donc, c'est ce que la page d'accueil HTML dit avant de vous y connecter:
</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName" size="25"></td>
<td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="password" name="inUserPass" id="inUserPass"></td>
Donc je pense que je suis en train de faire, mais le résultat est toujours "Locationary.com"
2ème EDIT:
Je veux être en mesure de rester connecté pendant une longue période et à chaque fois que je demande une page, en vertu de ce domaine, je veux que le contenu à apparaître comme si j'étais connecté.
Vous devez vous connecter pour publier un commentaire.
Si les informations que vous voulez, c'est sur la page, vous êtes dirigé immédiatement après la connexion...
Permet appelez votre
ck
variablepayload
au lieu de cela, comme dans le python-demandes docs:Autrement...
Voir https://stackoverflow.com/a/17633072/111362 ci-dessous.
Je sais que vous avez trouvé une autre solution, mais pour ceux qui comme moi trouve cette question, à la recherche de la même chose, il peut être réalisé avec les demandes de la façon suivante:
Tout d'abord, comme Marcus a fait, vérifiez la source du formulaire de connexion pour obtenir les trois morceaux de l'information - l'url que le formulaire de postes, et les attributs de nom d'utilisateur et mot de passe dans les champs. Dans son exemple, ils sont inUserName et inUserPass.
Une fois que vous avez cela, vous pouvez utiliser un
requests.Session()
exemple pour faire une requête post à l'url de connexion avec vos informations de connexion dans la charge utile. Faire des requêtes à partir d'une instance de session est essentiellement le même que l'utilisation de demandes normalement, il ajoute simplement la persistance, vous permettant de stocker et d'utiliser des cookies etc.En supposant que votre tentative de connexion est réussie, vous pouvez simplement utiliser l'instance de session pour faire d'autres demandes sur le site. Le cookie permet de vous identifier seront utilisés pour autoriser les demandes.
Exemple
p = s.post('LOGIN_URL.....
et puisp.text
https://www.facebook.com/login.php?login_attempt=1
c'est la valeur de l'attribut action du formulaireemail
valeur du nom de l'e-mail champ de saisie "pass"` nom de la valeur du champ de mot de passe après l'entrée des informations d'identification, il ne veut toujours pas me laisser dans ce qu'il manque ici?Laissez-moi essayer de faire simple, supposons que l'adresse URL du site est http://example.com/ et supposons que vous ayez besoin de vous inscrire en remplissant nom d'utilisateur et le mot de passe, donc nous aller à la page de connexion à dire http://example.com/login.php maintenant et de voir le code source et de recherche pour l'URL de l'action, il sera dans la balise form quelque chose comme
maintenant prendre userinfo.php pour faire de l'URL absolue qui serahttp://example.com/userinfo.php', maintenant l'exécution d'un simple script python
J'Espère que cela aide quelqu'un, quelque part, un jour.
Trouver le nom des entrées sur les sites web de formulaire pour les noms d'utilisateur
<...name=username.../>
et les mots de passe<...name=password../>
et de les remplacer dans le script ci-dessous. Également remplacer l'URL pour pointer vers le site souhaité se connecter.login.py
L'utilisation de
disable_warnings(InsecureRequestWarning)
silence toute sortie du script lors de la tentative de se connecter à des sites non vérifiées avec les certificats SSL.Supplémentaire:
Pour exécuter ce script à partir de la ligne de commande sur un UNIX système de le placer dans un répertoire, c'est à dire
home/scripts
et ajouter ce répertoire à votre chemin dans~/.bash_profile
ou d'un fichier similaire utilisé par le terminal.Puis créer un lien vers ce script python à l'intérieur de
home/scripts/login.py
Fermez votre terminal, pour en commencer une nouvelle, exécutez
login