Pregunta

¿Es este script Python correcta?


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()

He encontrado este script AQUÍ .Se está destinado para acceder a una página web en primer lugar, recuperar las cookies, almacenarlos y usarlos con el fin de abrir otra página en el mismo sitio web. Quiero entrar en este camino a mi cuenta de eBay (la URL es https: // signin .ebay.com / WS / eBayISAPI.dll? SignIn ) y luego ir a mi bandeja de entrada de mi cuenta de eBay (la URL es http://my.ebay.com/ws/eBayISAPI.dll?MyEbay&gbh=1 ).

Por lo tanto, aquí están los valores que necesito para usar en este script:

En primer lugar (Sing-in) URL: https://signin.ebay.com /ws/eBayISAPI.dll?SignIn

Segundo URL: http://my.ebay.com/ws/ eBayISAPI.dll? MyEbay y gbh = 1

Mi nombre de usuario en eBay: tryinghard

Mi contraseña en eBay: gettingsomewhere

Con todos estos nuevos valores de la secuencia de comandos debe mirar de esta manera:


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()

¿Es correcto? Estoy especialmente sospechoso sobre la login_data = línea (el cuarto de abajo), ¿por qué es un j_password que hay en lugar de sólo password

Me trató este script con todos estos valores y no funcionó. ¿Alguien sabe por qué no funciona en mi caso?

Ya he aprendido a acceder a mi cuenta de eBay y luego comprobar algunas otras páginas allí por medio de la ejecución de un script en Python que está utilizando la tela cruzada como un módulo externo , pero eso fue sólo tiene éxito cuando me encontré con esa secuencia de comandos desde el símbolo del sistema o desde la terminal de Python. No tuvo éxito cuando intenté ejecutar esa secuencia de comandos a través de " google App Engine Software Development Kit " que había descargado de "Google App Engine" .

Más tarde me dijeron aquí que no tuvo éxito porque "Google App Engine" no le gusta módulos externos. Es por eso que he encontrado este script - aquellos módulos que se está importando en el principio ( urllib , urllib2 cookielib ) son todos los incorporados en los módulos.

¿Fue útil?

Solución

Un simple "ver fuente" en la página de inicio de sesión cuya URL das revela muy fácilmente con el siguiente detalle al respecto ... (acaba de formatear el HTML mínimamente para facilitar la lectura):

<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>

Como se puede ver a simple vista, los nombres de los campos de entrada son cruciales no username y j_password como que está usando, sino más bien userid y pass. Por lo tanto, es obviamente imposible que su código para trabajar en su estado actual.

Leer un poco más de la página y también verá poco despué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>

Lo más probable es que tendrá que simular que casilla de verificación está seleccionada para obtener las cookies que se pueden utilizar (por lo menos para nada más que un momento fugaz; -).

Y así sucesivamente, y así sucesivamente, en realidad - el intento de interacción Automatizar con una página sin molestarse en leer la fuente de esa página para obtener los identificadores y nombres reales de uso me parece sin duda mostrando una actitud muy optimista hacia la vida, el universo, y todo ... ;-). Por cierto, para simplificar dicha interacción ( después hojeando la fuente ;-), he encontrado mecanizar bastante práctico (y más robusto que tratar de entrar ilegalmente en él solo con la biblioteca estándar, como lo están haciendo).

Además, antes de la interacción automática con un sitio, siempre echa un vistazo a su robots.txt a asegúrese de que no está rompiendo sus condiciones de uso - sitios pueden identificar fácilmente "robots" (interacción automatizada) en lugar de "seres humanos", y represalias contra violación robots.txt prohibiendo, listas negras, y peor; que realmente no desea ejecutar en el que; -).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top