Cet article présente principalement des informations pertinentes sur les détails et les exemples du site Web de connexion Python. Les amis qui en ont besoin peuvent se référer à
Détails et exemples du site Web de connexion Python
Pour In. sur la plupart des forums, si nous voulons capturer et analyser les messages, nous devons d'abord nous connecter, sinon nous ne pouvons pas les visualiser.
En effet, le protocole HTTP est un protocole sans état. Comment le serveur sait-il si l'utilisateur qui demande actuellement la connexion est connecté ? Il existe deux manières :
Utiliser explicitement l'ID de session dans l'URI
Utiliser des cookies ; Conserver un cookie localement. Lorsque vous continuez à naviguer sur ce site Web, le navigateur enverra le cookie avec la demande d'adresse.
Python fournit une multitude de modules, ce type d'opération réseau peut donc être réalisé en quelques phrases seulement. Je prends comme exemple la connexion au forum QZZN. En fait, le programme suivant est applicable à presque tous les forums de type PHPWind.
# -*- coding: GB2312 -*- from urllib import urlencode import cookielib, urllib2 # cookie cj = cookielib.LWPCookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) # Login user_data = {'pwuser': '你的用户名', 'pwpwd': '你的密码', 'step':'2' } url_data = urlencode(user_data) login_r = opener.open("http://bbs.qzzn.com/login.php", url_data)
Quelques notes :
urllib2 est évidemment un module plus avancé que urllib, et inclut comment utiliser les cookies.
Dans urllib2, chaque client peut être abstrait avec un ouvreur, et chaque ouvreur peut ajouter plusieurs gestionnaires pour améliorer sa fonctionnalité.
HTTPCookieProcessor est spécifié comme gestionnaire lors de la construction de l'ouvreur, ce gestionnaire prend donc en charge Cookie.
Après avoir utilisé isntall_opener, cet ouvreur sera utilisé lors de l'appel d'urlopen.
Si vous n'avez pas besoin d'enregistrer les cookies, le paramètre cj peut être omis.
user_data stocke les informations requises pour la connexion. Il suffit de transmettre ces informations lors de la connexion au forum.
La fonction de urlencode est d'encoder les données utilisateur du dictionnaire sous la forme de "?pwuser=username&pwpwd=password". Ceci est fait pour rendre le programme plus facile à lire.
La dernière question est de savoir d'où viennent les noms comme pwuser et pwpwd. Cela nécessite d'analyser la page Web qui nécessite une connexion. Nous savons que l'interface générale de connexion est un formulaire, l'extrait est le suivant :
<form action="login.php?" method="post" name="login" onSubmit="this.submit.disabled = true;"> <input type="hidden" value="" name="forward" /> <input type="hidden" value="http://bbs.qzzn.com/index.php" name="jumpurl" /> <input type="hidden" value="2" name="step" /> ... <td width="20%" onclick="document.login.pwuser.focus();"><input type="radio" name="lgt" value="0" checked />用户名 <input type="radio" name="lgt" value="1" />UID</td> <td><input class="input" type="text" maxLength="20" name="pwuser" size="40" tabindex="1" /> <a href="reg1ster.php" rel="external nofollow" >马上注册</a></td> <td>密 码</td> <td><input class="input" type="password" maxLength="20" name="pwpwd" size="40" tabindex="2" /> <a href="sendpwd.php" rel="external nofollow" target="_blank">找回密码</a></td> ... </form>
De là, nous pouvons voir que le nom d'utilisateur et le mot de passe que nous devons saisir correspondent à pwuser et pwpwd, et l'étape correspond à Connectez-vous (c'est ce que j'ai essayé).
Notez que ce formulaire de forum utilise la méthode post. S'il s'agit de la méthode get, la méthode dans cet article doit être modifiée. Elle ne peut pas être ouverte directement, mais doit d'abord être demandée puis ouverte. Veuillez consulter le manuel pour plus de détails...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!