Question

Est-ce script Python correct?


import urllib, urllib2, cookielib 

username = 'myuser' 
password = 'mypassword' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'username' : username, 'j_password' : password}) 
opener.open('http://www.example.com/login.php', login_data) 
resp = opener.open('http://www.example.com/hiddenpage.php') 
resp.read()

J'ai trouvé ce script ICI .Il est destiné à la connexion à une page Web d'abord, récupérer les biscuits, les stocker et les utiliser afin d'ouvrir une autre page dans le même site. Je veux vous connecter de cette manière à mon compte eBay (l'URL est https: // signin .ebay.com / ws / eBayISAPI.dll? SignIn ) puis aller à ma boîte de réception sur mon compte eBay (l'URL est http://my.ebay.com/ws/eBayISAPI.dll?MyEbay&gbh=1 ).

Alors, voici les valeurs que je dois utiliser dans ce script:

Tout d'abord (Sing-in) URL: https://signin.ebay.com /ws/eBayISAPI.dll?SignIn

Deuxième URL: http://my.ebay.com/ws/ eBayISAPI.dll? MyEbay & GBH = 1

Mon nom de connexion sur eBay: tryinghard

Mon mot de passe sur eBay: gettingsomewhere

Avec toutes ces nouvelles valeurs le script ci-dessus doit regarder cette façon:


import urllib, urllib2, cookielib 

username = 'tryinghard' 
password = 'gettingsomewhere' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'username' : username, 'j_password' : password}) 
opener.open(https://signin.ebay.com/ws/eBayISAPI.dll?SignIn', login_data) 
resp = opener.open(http://my.ebay.com/ws/eBayISAPI.dll?MyEbay&gbh=1') 
resp.read()

est-il exact? Je suis particulièrement méfiant au sujet de la login_data = ligne (quatrième à partir du bas), pourquoi est-il un j_password il au lieu de simplement password

J'ai essayé ce script avec toutes ces valeurs et il ne fonctionne pas. Quelqu'un sait-il pourquoi il ne fonctionne pas dans mon cas?

Je l'ai déjà appris à me connecter à mon compte eBay et vérifier d'autres pages là-bas au moyen d'exécution d'un script python qui utilise twill comme un module externe , mais ce fut seulement un succès quand je courais le script de l'invite de commande ou à partir du shell Python. Il n'a pas réussi quand j'ai essayé de courir ce script au moyen de » Google App Engine Software Development Kit " que j'avais téléchargé à partir de "Google App Engine" .

Plus tard, on m'a dit ici qu'il n'a pas réussi parce que "Google App Engine" ne fonctionne pas comme les modules externes. Voilà pourquoi je trouvé ce script - les modules qu'il importe dans le début ( urllib , urllib2 , cookielib ) sont tous les modules intégrés.

Était-ce utile?

La solution

Un simple « source de vue » sur la page de connexion dont l'URL vous donnez révèle très facilement les détails ci-dessous à ce sujet ... (tout le formatage du HTML au minimum pour une meilleure lisibilité):

<span style="display:-moz-inline-stack" class="unl">
  <label for="userid">User ID  </label></span>
<span><input size="27" maxlength="64" class="txtBxF"
       value="" name="userid" id="userid"></span></div>
<div><span style="display:-moz-inline-stack" class="unl">
  <label for="pass">Password  </label></span>
<span><input size="27" maxlength="64" class="txtBxF"
       value="" name="pass" id="pass" type="password"></span>

Comme vous pouvez le voir en un coup d'oeil, les noms des champs d'entrée sont cruciaux pas username et j_password que vous utilisez, mais plutôt userid et pass. Il est donc évidemment impossible pour votre code au travail tel qu'il est actuellement.

Lire un peu plus de la page et vous verrez aussi peu de temps après:

<input type="checkbox" name="keepMeSignInOption" value="1" id="signed_in"></b>
<span class="pcsm"><label for="signed_in"><b>Keep me signed in for today.</b>

La plupart vous aurez probablement pour simuler cette case pour être sélectionné obtenir les cookies qui sont utilisables (au moins pour quoi que ce soit, mais un temps éphémère; -).

Et ainsi de suite, et ainsi de suite, vraiment - la tentative d'interaction Automatiser avec une page sans prendre la peine de lire que la source de la page pour obtenir les identifiants et noms réels à l'utilisation me semble afficher certainement une attitude très optimiste envers la vie, l'univers, et tout ... ;-). Par ailleurs, pour simplifier cette interaction ( après lisant attentivement la source ;-), j'ai trouvé mécaniser très pratique (et plus robuste que d'essayer de pirater juste avec la bibliothèque standard, que vous faites).

De plus, avant l'interaction automatique avec un site, vérifiez toujours son robots.txt assurez-vous que vous n'êtes pas briser ses conditions d'utilisation - les sites peuvent facilement identifier les « robots » (interaction automatisée) par opposition à « l'homme », et exercer des représailles contre la violation de robots.txt en interdisant, listes noires, et pire encore; vous ne voulez pas vraiment à courir dans cette; -).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top