Im Folgenden werden wir Qiita als Beispiel verwenden.
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
に
utf8
authenticity_token
identity
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.
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
...
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