Connectez-vous au site Web en Python

couler

  1. Accédez à la page de connexion du service auquel vous souhaitez vous connecter et vérifiez les paramètres du formulaire de connexion
  2. Envoyez les informations requises à l'URL de connexion et démarrez la session

Dans ce qui suit, nous utiliserons Qiita comme exemple.

Comment vérifier les paramètres

La source du formulaire de connexion Qiita est la suivante:

<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

On peut voir que les données sont transmises. Parmi ceux-ci, utf8 reçoit une valeur par défaut, alors utilisez-la, et authenticity_token reçoit une valeur pour chaque accès, vous devez donc l'obtenir. Entrez les informations à la main dans les autres identités et `` mot de passe```

Communication avec le site

Python a une bibliothèque pratique pour la communication HTTP appelée requêtes, il est donc sûr de l'utiliser. Une fois connecté, il est nécessaire de sauvegarder la valeur de session, communiquez donc via l'objet `` Session ''.

De plus, comme mentionné ci-dessus, il est nécessaire d'obtenir authenticity_token avant de vous connecter, alors accédez d'abord à la page d'accueil et à BeautifulSoup. Obtenez la valeur avec /).

Voici un exemple de script pour vous connecter à Qiita:

from bs4 import BeautifulSoup
import requests

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

# authenticity_Obtenez un jeton
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

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

#Effectuez le traitement possible après la connexion ci-dessous
...

Mise en garde

Dans certains cas, la méthode simple ci-dessus ne fonctionne pas (par exemple, une authentification en deux étapes est requise pour se connecter à Google), il est donc nécessaire de vérifier les informations d'en-tête HTTP, etc. en détail à chaque fois. ..

Recommended Posts

Connectez-vous au site Web en Python
Pour vider stdout en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Publier sur Slack en Python
[Python] Comment faire PCA avec Python
Convertir Markdown en PDF en Python
Comment collecter des images en Python
Comment utiliser SQLite en Python
Dans la commande python, python pointe vers python3.8
Essayez de calculer Trace en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
6 façons d'enchaîner des objets en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Une alternative à `pause` en Python
Quadtree en Python --2
Python en optimisation
J'ai essayé d'implémenter PLSA en Python
Métaprogrammation avec Python
Mis à jour vers Python 2.7.9
[Introduction à Python] Comment utiliser la classe en Python?
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Essayez de vous connecter à qiita avec Python
Installez Pyaudio pour lire des vagues en python
J'ai essayé d'implémenter la permutation en Python
Méthode pour créer un environnement Python dans Xcode 6
Méta-analyse en Python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Unittest en Python
Épingler le répertoire actuel au répertoire de script en Python
[Itertools.permutations] Comment créer une séquence en Python
PUT gzip directement dans S3 en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Convertir un fichier psd en png en Python
Exemple de script pour piéger les signaux en Python
J'ai essayé d'implémenter PLSA dans Python 2
Pour définir le codage par défaut sur utf-8 en python
Époque en Python
Discord en Python
Decorator pour éviter UnicodeEncodeError dans Python 3 print ()
Comment utiliser BigQuery en Python
Allemand en Python
DCI en Python
tri rapide en python
Connectez-vous à Slack à l'aide de requêtes en Python
nCr en python
N-Gram en Python
Comment obtenir stacktrace en python
Programmation avec Python
Comment afficher la table quatre-vingt-dix-neuf en python
Un moyen simple d'utiliser Wikipedia avec Python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Plink en Python