[PYTHON] Connectez-vous avec PycURL et recevez une réponse

Dans la bibliothèque cURL de python "PycURL" Comment recevoir une réponse HTML ou json après l'authentification de connexion.

Le but est de savoir comment enregistrer un cookie et envoyer une demande avec le cookie.

Principes de base de PycURL

C'est très utile. Comment envoyer diverses méthodes HTTP à partir de l'installation. Merci de m'aider. Requêtes HTTP avec PycURL

Connexion (enregistrer le cookie)

Pour vous connecter et enregistrer le cookie, procédez comme suit: (Pour plus de simplicité, la gestion des exceptions, UserAgent, timeout, etc. sont complètement ignorés.)

login.py


import pycurl
import io

curl = pycurl.Curl()
curl.setopt(pycurl.URL,'https://www.xxx.com/login.php' )
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('email', 'qqq@ppp'), ('pass', 'qqqppp')])
curl.setopt(pycurl.COOKIEJAR,'cookie.txt')

#Les deux lignes suivantes sont la description de ne pas afficher la réponse sur la ligne de commande. Pas l'essence.
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)

curl.perform()

L'important ici est "Enregistrez le cookie de connexion dans './ cookie.txt'" Pour ajouter l'option, écrivez comme suit.

curl.setopt(pycurl.COOKIEJAR,'cookie.txt')

Plus tard, je vais attacher ce cookie et envoyer une demande à la page qui nécessite une authentification de connexion.
La destination de la demande et le nom du paramètre sont Vous devez vous référer à la source de la page de connexion ou vérifier l'historique des communications (vérification du chrome → onglet Réseau). De plus, si vous avez besoin de plus de paramètres pour vous connecter, vous pouvez simplement ajouter plus d'éléments à la liste.

curl.setopt(pycurl.URL,'https://www.xxx.com/login.php' )
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('para1', 'aaa'), ('para2', 'bbb'), ('para3', 'ccc'), ...])

Recevoir une réponse pour les pages qui nécessitent une authentification de connexion

Il est supposé que vous recevrez le code HTML de la page principale de xxx.com qui nécessite une connexion.

request_page.py


import pycurl
import io

curl = pycurl.Curl()
curl.setopt(pycurl.URL,'https://www.xxx.com/main' )
curl.setopt(pycurl.COOKIEFILE,'cookie.txt')
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)

try:
  curl.perform()
  ret = b.getvalue()
  http_code = curl.getinfo(pycurl.HTTP_CODE)

except Exception as e:
  ret = str(e)

L'important ici est Pour envoyer une requête avec le cookie.txt généré après la connexion

curl.setopt(pycurl.COOKIEFILE,'cookie.txt')

Est de décrire.

** Lors de l'enregistrement des cookies pycurl.COOKIEJAR ** ** pycurl.COOKIEFILE ** lors de l'utilisation de cookies


Ensuite, vous recevrez une réponse.
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)
ret = b.getvalue()

Avec cela, le HTML de la page principale est stocké dans le type str dans ret, et il peut être traité comme d'autres variables. Bien sûr, vous pouvez également demander json. Dans ce cas, la réponse reçue est de type str, elle est donc décodée par le module json ou autre.

Recommended Posts

Connectez-vous avec PycURL et recevez une réponse
POSTER diversement avec Python et recevoir avec Flask
Obtenez uniquement l'en-tête de réponse avec curl et wget
Commencez la communication avec UDP et envoyez et recevez avec TCP
POSTER l'image avec json et la recevoir avec flask
Avec et sans WSGI
écran et écran partagé avec connexion python et ssh au serveur distant
Comparez les mots de passe de connexion par hachage avec hashlib de la bibliothèque standard
Envoyez et recevez des données avec MQTT via Watson IoT Platform
Avec moi, cp et sous-processus
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Implémenter la fonction de connexion avec django-allauth
Travailler avec le tkinter et la souris
Courbe de réponse de krigeage avec OpenMDAO
Recevez des vidéos en streaming avec Tello
Envoi et réception d'images Flask
Connexion proxy facile avec django-hijack
Super résolution avec SRGAN et ESRGAN
Group_by avec sqlalchemy et sum
python avec pyenv et venv
Avec moi, NER et Flair
Connectez-vous avec Django Rest Framework
Fonctionne avec Python et R