[PYTHON] Melden Sie sich mit PycURL an und erhalten Sie eine Antwort

In Pythons cURL-Bibliothek "PycURL" So erhalten Sie nach der Anmeldeauthentifizierung eine HTML- oder JSON-Antwort.

Der Punkt ist, wie man ein Cookie speichert und eine Anfrage mit dem Cookie sendet.

Grundlagen von PycURL

Das ist sehr hilfreich. So senden Sie verschiedene HTTP-Methoden aus der Installation. Danke, dass du mir geholfen hast. HTTP-Anforderungen mit PycURL

Login (Cookie speichern)

Gehen Sie wie folgt vor, um sich anzumelden und das Cookie zu speichern: (Der Einfachheit halber werden Ausnahmebehandlung, UserAgent, Timeout usw. vollständig ignoriert.)

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')

#Die folgenden zwei Zeilen beschreiben, wie die Antwort in der Befehlszeile nicht angezeigt wird. Nicht die Essenz.
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)

curl.perform()

Das Wichtigste hier ist "Speichern Sie das Login-Cookie in './ cookie.txt'" Um die Option hinzuzufügen, schreiben Sie wie folgt.

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

Später werde ich dieses Cookie anhängen und eine Anfrage an die Seite senden, für die eine Anmeldeauthentifizierung erforderlich ist.
Das Anforderungsziel und der Parametername sind Sie sollten sich auf die Quelle der Anmeldeseite beziehen oder den Kommunikationsverlauf überprüfen (Chrome-Überprüfung → Registerkarte Netzwerk). Wenn Sie mehr Parameter zum Anmelden benötigen, können Sie der Liste einfach weitere Elemente hinzufügen.

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'), ...])

Erhalten Sie eine Antwort für Seiten, für die eine Anmeldeauthentifizierung erforderlich ist

Es wird davon ausgegangen, dass Sie den HTML-Code der Hauptseite von xxx.com erhalten, für die eine Anmeldung erforderlich ist.

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)

Das Wichtigste hier ist So senden Sie eine Anfrage mit der nach dem Anmelden generierten Datei cookie.txt

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

Ist zu beschreiben.

** Beim Speichern von Cookies pycurl.COOKIEJAR ** ** pycurl.COOKIEFILE ** bei Verwendung von Cookies


Dann erhalten Sie eine Antwort.
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)
ret = b.getvalue()

Damit wird der HTML-Code der Hauptseite in str-Typ in ret gespeichert und kann wie andere Variablen verarbeitet werden. Natürlich können Sie auch json anfordern. In diesem Fall ist die empfangene Antwort vom Typ str, daher wird sie vom json-Modul oder dergleichen decodiert.

Recommended Posts

Melden Sie sich mit PycURL an und erhalten Sie eine Antwort
POST verschieden mit Python und empfange mit Flask
Holen Sie sich nur Response Header mit Curl und Wget
Starten Sie die Kommunikation mit UDP und senden und empfangen Sie mit TCP
POST das Bild mit json und erhalte es mit der Flasche
Mit und ohne WSGI
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Vergleichen Sie Anmeldekennwörter durch Hashing mit der Hash-Bibliothek der Standardbibliothek
Senden und Empfangen von Daten mit MQTT über die Watson IoT Platform
Bei mir cp und Subprocess
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Implementieren Sie die Anmeldefunktion mit django-allauth
Arbeiten Sie mit tkinter und Maus
Kriging-Antwortkurve mit OpenMDAO
Erhalten Sie Video-Streaming mit Tello
Senden und Empfangen von Kolbenbildern
Einfache Proxy-Anmeldung mit Django-Hijack
Super Auflösung mit SRGAN und ESRGAN
Group_by mit sqlalchemy und sum
Python mit Pyenv und Venv
Mit mir, NER und Flair
Melden Sie sich mit dem Django Rest Framework an
Funktioniert mit Python und R.