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.
C'est très utile. Comment envoyer diverses méthodes HTTP à partir de l'installation. Merci de m'aider. Requêtes HTTP avec PycURL
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'), ...])
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
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