Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/08/2014, 00:18
ArgentinaIRC
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo puedo enviar un campo hidden con la librería mechanize?

Hola razpeitia, gracias por tu ayuda, he intentado de muchas formas enviar esos datos hidden pero aún no puedo lograrlo, te muestro un poco el proceso que hago:

Código Python:
Ver original
  1. from mechanize import Browser
  2. import urllib2
  3.  
  4. main_browser = Browser()
  5. captcha_browser = Browser()
  6.  
  7. for browser in (main_browser, captcha_browser):
  8.     browser.set_handle_robots(False)
  9.     browser.addheaders = [("User-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")]
  10.  
  11. main_response = main_browser.open("http://sms.personal.com.ar/Mensajes/msn.htm")
  12.  
  13. #html = main_browser.response().get_data().replace("<br/>", "<br />")
  14. html = main_response.get_data().replace("<br/>", "<br />")
  15.  
  16. codigos = html
  17.  
  18. for dato in codigos.splitlines():
  19.     if '<img id="img_Captcha" src="' in dato:
  20.         web = dato
  21.         imagen = web[web.find("src=")+5:web.find("border=")-2]
  22.  
  23. captcha_browser._ua_handlers['_cookies'].cookiejar = main_browser._ua_handlers['_cookies'].cookiejar
  24. captcha_response = captcha_browser.open(imagen)
  25. captcha_image_content = captcha_response.read()
  26.  
  27. f = open("captcha.png", "wb")
  28. f.write(captcha_image_content)
  29. f.close()
  30.  
  31. captcha_code = raw_input("Captcha: ")
  32. form = main_browser.select_form(name="messageForm")
  33. #main_browser.find_control("form_flag").readonly
  34. main_browser.set_all_readonly(False)
  35. main_browser["form_flag"] = ""
  36. main_browser["Snb"] = ""
  37. main_browser["subname"] = ""
  38. main_browser["sig"] = ""
  39. main_browser["msgtext"] = ""
  40. main_browser["form"] = "ht4"
  41. main_browser["size"] = "10"
  42. main_browser["btn_send"] = "SEND"
  43. main_browser["historico"] = ""
  44. main_browser["Filename"] = ""
  45. main_browser["FormValidar"] = "novalidar"
  46. main_browser["CODAREA"] = "381"
  47. main_browser["NRO"] = "5695284"
  48. main_browser["DE_MESG_TXT"] = "daniel"
  49. main_browser["MESG_TXT"] = "hola"
  50. main_browser["codigo"] = captcha_code
  51. form_response = main_browser.submit()
  52.  
  53. print form_response.read()

y ahí debería funcionar, pero no me anda...

el código que quiero lograr, quiero que sea capaz de enviar mensajes a celulares, he visto páginas como altoque.com que lo han hecho y hay un programa que es muy conocido que es TSM Mensajes, este programa fué creado en mi país Argentina, yo quiero crear uno, pero a mi manera, ya que el mío tendrá la ventaja de no tener spam (como lo hace ese programa), realmente eso no agrada, porque resta caracteres, pero bueno, igual es gratuito, yo si puedo crear toda la interfaz gráfica, y de hecho ya tengo el código que envía sms a celulares de compañía Claro, solo me falta de Personal, es un proyecto que lo quiero hacer desde hace tiempo, pero aquí es en donde fallo

Probé de muchas formas y no lo logro, aquí te paso los datos de la web de Personal:

Código HTML:
Ver original
  1. <form id="messageForm" name="messageForm" onsubmit="return checkMessage(FormErrorMessages);" action="#" method="post">                                                                
  2.                                 <input type="hidden" name="form_flag"/>
  3.                                 <input type="hidden" name="Snb"/>
  4.                                 <input type="hidden" name="subname"/>
  5.                                 <input type="hidden" name="sig"/>
  6.                                 <input type="hidden" name="msgtext"/>
  7.                                 <input type="hidden" value="ht4" name="form"/>
  8.                                 <input type="hidden" value="10" name="size"/>
  9.                                 <input type="hidden" value="SEND" name="btn_send"/>
  10.                                 <input type="hidden" name="historico"/>
  11.                                 <input type="hidden" name="Filename" value=""/>
  12.                                 <input type="hidden" name="FormValidar" value="novalidar"/>
  13.                                 <div class="left">Número destinatario</div>
  14.                                 <div class="remitente left">Tu Nombre</div>
  15.                                 <div class="clear"></div>
  16.                                 <div class="inputsSms">0
  17.                                     <input type="text" name="CODAREA" id="CODAREA" class="bordesRedondeados area" size="1" placeholder="11" data-tip data-original-title="11" maxlength="4" value="" onKeyPress="return IsNumber(event)" onpaste="return false" >
  18.                                     15
  19.                                     <input type="text" name="NRO" id="NRO" size="11" class="bordesRedondeados" placeholder="41420020" data-tip data-original-title="41420020" maxlength="8" value="" onKeyPress="return IsNumber(event)" onpaste="return false">
  20.                                     <input type="text" name="DE_MESG_TXT" id="DE_MESG_TXT" size="26" class="bordesRedondeados nombre" data-tip data-original-title="ingresa tu nombre" placeholder="ingresa tu nombre" maxlength="30" value="" onKeyUp="Actualizar(event, this);" onSelect="Actualizar(event, this);" onChange="Actualizar(event, this);" onLoad="Actualizar(event, this);" autocomplete="off">
  21.                                     <div class="clear"></div>
  22.                                     <textarea name="MESG_TXT" id="MESG_TXT" class="bordesRedondeados textArea" placeholder="Escribí aquí tu SMS y luego clickea enviar" onKeyUp="Actualizar(event, this);"  onchange="Actualizar(event, this);"></textarea>
  23.                                 </div>
  24.                                 <div class="clear"></div>                                
  25.                                 <div class="barraEmoticons"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_1.gif" onClick="carita(':-)');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_2.gif" onClick="carita(':-P');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_3.gif" onClick="carita(':-D');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_4.gif" onClick="carita(':@');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_5.gif" onClick="carita(':-(');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_6.gif" onClick="carita(':-o');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_7.gif" onClick="carita(':-I');"><img class="img_emoticon" src="http://sms.personal.com.ar/Mensajes/img/emoticon_8.gif" onClick="carita(':x');"><span class="textoCaracteres">Caractéres Restantes:</span><span class="recuadroCaracteres" id="sizebox" name="sizebox">108</span></div>
  26.  
  27.                                 <div class="tituloCaptcha">Escriba el código que aparece debajo</div>
  28.                                 <div class="captcha">
  29.                                     <div class="imagenCaptcha">
  30.                                                                                 <img id="img_Captcha" src="http://sms.personal.com.ar/Mensajes/tmp/6312zdocdjeuppip.png" border="0" alt="" />
  31.                                                                             </div>
  32.                                     <div class="inputCaptcha">
  33.                                         <input type="text" maxlength="4" name="codigo" id="codigo" size="17" class="bordesRedondeados codigoCaptcha" placeholder="código de seguridad" data-tip data-original-title="código de seguridad">
  34.  
  35.                                     </div>
  36.                                     <div class="ch-go botonSms">
  37.                                         <input type="submit" id="submit" name="submit" value="enviar" class="ch-btn-go btn_enviar" border="0">
  38.                                     </div>
  39.                                     <div class="clear"></div>
  40.                                     <div class="terminosCondiciones">Al enviar un mensaje acepto los <a href="#" id="a_termscond" full_path="http://sms.personal.com.ar/Mensajes/" >Términos y Condiciones</a> del servicio SMSOnline.</div>
  41.                                 </div>
  42.                             </form>

en si esos datos no pueden ser obtenidos normalmente, ya que esa web no permite ver el código y luego, una vez que carga del todo, cambia todo el código de la web por otro, así que con un método, logro sacar ese código y eso es en donde debo trabajar, he luchado amigo, pero no puedo, necesito un empujonsito y lo logro, al menos 1 simple ejemplo, y lo voy a hacer, quiero ayudar a muchas personas con este programa, ayuda por favor.

¿En donde fallo? ¿Porqué no se envía el sms?
Yo trato de enviar el sms con el 1° código que puse arriba, pero lamentablemente no me llega el sms, he probado muchas formas, cambiando una y otra cosa y nada.
Lo primero que hago, es conectar con esa web, luego extraer todo el código de la misma, guardarlo en una variable y con un simple for sacarle la captcha, luego descargar ese archivo y ponerlo en el escritorio, obviamente esto lo hago así por ahora, hasta que no termine con esto, no puedo comenzar con la interfaz gráfica, bueno luego cuando la captcha, la meto en la consola de Python y pulso ENTER, y cláro, Python me muestra en la consola todos los datos que me responde esa web cuando envío ese formulario, pero no me llega el mensaje, he intentado buscar el "hola" que pongo cuando trato de envíar ese formulario, pero no existe, osea no se que pasa, pero no importa que no se guarde o que no aparezca lo que yo envíe, lo importante, es que se envíe, aunque es muy bueno saber que ese mensaje se ha mostrado, ya que así puedo comprobar que el sms se ha enviado correctamente.

Por favor compañeros necesito ayuda, diganmen por favor donde está el error y como lo soluciono, por favor necesito terminar ese proyecto, me esfuerzo lo más que puedo y pongo mis conocimientos lo que más que puedo.

Gracias como siempre a todos y que Dios los bendiga.