Melden Sie sich auf der Website in Python an

fließen

  1. Gehen Sie zur Anmeldeseite des Dienstes, bei dem Sie sich anmelden möchten, und überprüfen Sie die Parameter des Anmeldeformulars
  2. Senden Sie die erforderlichen Informationen an die Anmelde-URL und starten Sie die Sitzung

Im Folgenden werden wir Qiita als Beispiel verwenden.

So überprüfen Sie die Parameter

Die Quelle des Qiita-Anmeldeformulars lautet wie folgt:

<form class="landingLoginForm" autocomplete="off" data-event_name="Login with password" action="/login" accept-charset="UTF-8" method="post">
  <input name="utf8" type="hidden" value="✓">
  <input type="hidden" name="authenticity_token" value="rYIMTVoDlb4eCzh6wZIRgiPQHmrr5ts9DyykDCE9FkHM7zQxX7WAhmUhW8y0BPIA3MvzH31KCFEyiPTVk4GBzQ==">
  <input type="text" name="identity" id="identity" placeholder="Username or email" autofocus="autofocus" class="form-control landingLoginForm_identity">
  <div class="row">
    <div class="col-sm-9 landingLoginForm_passwordColumn">
      <input type="password" name="password" id="password" placeholder="Password" class="form-control">
    </div>
    <div class="col-sm-3 landingLoginForm_submitColumn">
      <input type="submit" name="commit" value="Login" class="btn btn-primary btn-block" data-disable-with="Login">
    </div>
  </div>
  <div class="landingLoginForm_forgotPassword">
  	<a href="https://qiita.com/sessions/forgot_password">Forgot Password?</a>
  </div>
  <div class="help-block js-email-invalid-message" style="display: none"></div>
</form>

これより、ログインボタンを押すとqiita.com/login

  1. utf8
  2. authenticity_token
  3. identity
  4. password

Es ist ersichtlich, dass die Daten übertragen werden. Von diesen erhält `utf8``` einen Standardwert, verwenden Sie ihn also, und` `authenticity_token``` erhält für jeden Zugriff einen Wert, sodass Sie ihn abrufen müssen. Geben Sie die Informationen manuell in die verbleibenden Identität``` und `` Passwort``` ein.

Kommunikation mit der Website

Python verfügt über eine praktische Bibliothek für die HTTP-Kommunikation mit dem Namen Anfragen, sodass die Verwendung sicher ist. Nach dem Anmelden muss der Wert für die Sitzung gespeichert werden. Kommunizieren Sie also über das Objekt `` `Sitzung```.

Wie oben erwähnt, ist es außerdem erforderlich, vor dem Anmelden "authenticity_token" zu erhalten. Rufen Sie daher zuerst die obere Seite und BeautifulSoup auf. Holen Sie sich den Wert mit /).

Unten finden Sie ein Beispielskript zum Anmelden bei Qiita:

from bs4 import BeautifulSoup
import requests

payload = {
    'utf8': '✓',
    'identity': 'username or email',
    'password': 'secret'
}

# authenticity_Bekomme Token
s = requests.Session()
r = s.get('https://qiita.com')
soup = BeautifulSoup(r.text)
auth_token = soup.find(attrs={'name': 'authenticity_token'}).get('value')
payload['authenticity_token'] = auth_token

#Einloggen
s.post('https://qiita.com/login', data=payload)

#Führen Sie die Verarbeitung durch, die nach dem Anmelden unten möglich ist
...

Hinweis

Da die oben beschriebene einfache Methode möglicherweise nicht funktioniert (zum Beispiel ist eine zweistufige Authentifizierung erforderlich, um sich bei Google anzumelden), müssen die HTTP-Header-Informationen usw. jedes Mal im Detail überprüft werden. ..

Recommended Posts

Melden Sie sich auf der Website in Python an
So löschen Sie stdout in Python
Sprechen mit Python [Text zu Sprache]
Wie man in Python entwickelt
Post an Slack in Python
[Python] Wie man PCA mit Python macht
Konvertieren Sie Markdown in Python in PDF
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, Trace in Python zu berechnen
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
6 Möglichkeiten zum Stringen von Objekten in Python
Verwendung von PubChem mit Python
Umgang mit Japanisch mit Python
Eine Alternative zu "Pause" in Python
Quadtree in Python --2
Python in der Optimierung
Ich habe versucht, PLSA in Python zu implementieren
Metaprogrammierung mit Python
Auf Python 2.7.9 aktualisiert
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Versuchen Sie, sich mit Python bei qiita anzumelden
Installieren Sie Pyaudio, um Wellen in Python zu spielen
Ich habe versucht, Permutation in Python zu implementieren
Methode zum Erstellen einer Python-Umgebung in Xcode 6
Metaanalyse in Python
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
Unittest in Python
Pin aktuelles Verzeichnis an Skriptverzeichnis in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
PUT gzip direkt in S3 in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Konvertieren Sie die psd-Datei in Python in png
Beispielskript zum Überfüllen von Signalen in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
So setzen Sie die Standardcodierung in Python auf utf-8
Epoche in Python
Zwietracht in Python
Dekorateur zur Vermeidung von UnicodeEncodeError in Python 3 print ()
So arbeiten Sie mit BigQuery in Python
Deutsch in Python
DCI in Python
Quicksort in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
nCr in Python
N-Gramm in Python
Wie bekomme ich Stacktrace in Python?
Programmieren mit Python
So zeigen Sie die neunundneunzig Tabelle in Python an
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
Plink in Python