• Publicidad

Registro automático en página XHTML

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Registro automático en página XHTML

Notapor Skull118 » 2016-02-23 10:29 @478

Hola nuevamente, acudo de nuevo a ustedes para saber si es posible realizar lo siguiente:

Deseo realizar un registro automático a una página de la empresa. Esta sirve para poder registrar la hora de entrada, pero, sin embargo, olvido ingresar :oops: por lo que a veces paso una hora hasta que me acuerdo :roll:

La página está construida en xhtml por lo que me di a la tarea de buscar en san Google y pude llegar al módulo WWW::Mechanize. Sin embargo, por alguna razón (aunque creo que es porque el campo password del <form> no posee ID) no logro registrarme o bien no logro hacer que lo haga.

Quisiera saber si hay alguna forma más fácil de realizar esto, porque sé que para Perl es posible (o al menos eso deseo con mi corazón, ja,ja,ja,ja :lol: )

Aquí está el código que tengo actualmente.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use strict;
  4. use WWW::Mechanize;
  5. use HTTP::Cookies;
  6. my $outfile = "out2.htm";
  7. my $url = "http://IP_DEL_SERVER:8080/coreIcon/faces/Login/login.xhtml";
  8. my $username = '90070';
  9. my $pform = 'login_form:j_id16';
  10. my $password = 'mi_password';
  11. my $mech = WWW::Mechanize->new();
  12. $mech->cookie_jar(HTTP::Cookies->new());
  13. $mech->get($url);
  14. $mech->form_id('login_form');
  15. $mech->field("login_form:userInput", $username);
  16. $mech->field($pform, $password);
  17. $mech->click;
  18. my $output_page = $mech->content();
  19. print $output_page;
  20. open(OUTFILE, ">$outfile");
  21.  
  22. binmode(OUTFILE, ":utf8");
  23. print OUTFILE "$output_page";
  24. close(OUTFILE);
  25.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Este es el código fuente de la página xhtml:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" rel="stylesheet" type="text/css" />
  5. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" media="rich-extended-skinning" rel="stylesheet" type="text/css" />
  6. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.Finalcss/panel.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" rel="stylesheet" type="text/css" />
  7. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript" type="text/javascript">
  8. </script>
  9. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/ajax4jsf/javascript/scripts/form.js" type="text/javascript">
  10. </script>
  11. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.PrototypeScript" type="text/javascript">
  12. </script>
  13. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/utils.js" type="text/javascript">
  14. </script>
  15. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/browser_info.js" type="text/javascript">
  16. </script>
  17. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/modalPanel.js" type="text/javascript">
  18. </script>
  19. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/modalPanelBorders.js" type="text/javascript">
  20. </script>
  21. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/modalPanel.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" rel="stylesheet" type="text/css" />
  22. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/jquery/jquery.js" type="text/javascript">
  23. </script>
  24. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/tooltip.js" type="text/javascript">
  25. </script>
  26. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/tooltip.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" rel="stylesheet" type="text/css" />
  27. <link class="component" href="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/css/msg.css" rel="stylesheet" type="text/css" />
  28. <link class="component" href="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/css/msgs.css" rel="stylesheet" type="text/css" />
  29. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.FinalMETA-INF/skins/darkX.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" rel="stylesheet" type="text/css" />
  30. <link class="component" href="/coreIcon/faces/a4j/s/3_3_3.FinalMETA-INF/skins/darkXExt.xcss/DATB/eAHbdnRLUujyGdIAFdEEQQ__" media="rich-extended-skinning" rel="stylesheet" type="text/css" />
  31. <script type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script>
  32. <script src="/coreIcon/faces/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js" type="text/javascript">
  33. </script>
  34. </head>
  35. <body>
  36. <div class="rich-panel " id="j_id2" style=" width:400px; vertical-align:middle;  margin-left:auto; margin-right:auto ">
  37. <div class="rich-panel-header " id="j_id2_header">
  38.                 Ericsson Login</div>
  39. <div class="rich-panel-body " id="j_id2_body">
  40. <form id="login_form" name="login_form" method="post" onkeypress="if (event.keyCode == 13) { document.getElementById('login_form:loginb').click(); return false; }" action="/coreIcon/faces/Login/login.xhtml">
  41. <div id="login_form:mp2" style="display: none;">
  42. <input autocomplete="off" id="login_form:mp2OpenedState" name="login_form:mp2OpenedState" type="hidden" />
  43. <div class="rich-modalpanel " id="login_form:mp2Container" style="position: absolute; display: none; z-index: 100; background-color: inherit;">
  44. <div class="rich-mpnl-mask-div-opaque rich-mpnl-mask-div" id="login_form:mp2Div" style="z-index: -1;">
  45. <button class="rich-mpnl-button" id="login_form:mp2FirstHref">
  46. </button>
  47. </div>
  48. <div class="rich-mpnl-panel">
  49. <div class="rich-mp-container" id="login_form:mp2CDiv" style="position: absolute; left: 0px; top: 0px; z-index: 9;">
  50. <div class="rich-mpnl-shadow" id="login_form:mp2ShadowDiv">
  51. </div>
  52. <div class=" rich-mpnl-content" id="login_form:mp2ContentDiv">
  53. <table border="0" cellpadding="0" cellspacing="0" class="rich-mp-content-table" id="login_form:mp2ContentTable" style="width: 1px;height: 1px;">
  54. <tr style="height: 99%">
  55. <td class="rich-mpnl-body" valign="top">
  56.                                 <div align="center">
  57. <img src="/coreIcon/img/wait.gif" />
  58.  
  59.                                 </div>
  60. </td>
  61. </tr>
  62. </table>
  63. </div>
  64. </div>
  65. </div>
  66. <div class="rich-mpnl-mask-div rich-mpnl-mask-div-transparent" id="login_form:mp2CursorDiv" style="z-index: -200;">
  67. <button class="rich-mpnl-button" id="login_form:mp2LastHref">
  68. </button>
  69. </div>
  70. <script type="text/javascript">new ModalPanel('login_form:mp2',
  71.                                 {
  72.                                         width: -1,
  73.                                         height: -1,
  74.  
  75.                                         minWidth: -1,
  76.                                         minHeight: -1,
  77.  
  78.                                         resizeable: false,
  79.                                         moveable: true,
  80.  
  81.                                         left: "auto",
  82.                                         top: "auto",
  83.  
  84.                                         zindex: 100,onresize: '',onmove: '',onshow: '',onhide: '',onbeforeshow: '',onbeforehide: '',
  85.                                         domElementAttachment: "",                              
  86.                                         keepVisualState: false,
  87.                                         showWhenRendered: false,
  88.                                         selectBehavior: "disable",
  89.  
  90.                                         autosized: true,
  91.                                         overlapEmbedObjects: false});</script>
  92. </div>
  93. <script type="text/javascript">
  94. </script>
  95. </div>
  96. <span id="login_form:esperar:status">
  97. <span id="login_form:esperar:status.start" style="display: none">
  98. </span>
  99. <script type="text/javascript">
  100. window.document.getElementById('login_form:esperar:status.start').onstart=function(){Richfaces.showModalPanel('mp2');;};
  101. </script>
  102. <span id="login_form:esperar:status.stop">
  103. </span>
  104. <script type="text/javascript">
  105. window.document.getElementById('login_form:esperar:status.stop').onstop=function(){Richfaces.hideModalPanel('mp2');;};
  106. </script>
  107. </span>
  108. <table>
  109. <tbody>
  110. <tr>
  111. <td>
  112. <table>
  113. <tbody>
  114. <tr>
  115. <td>
  116.                         Usuario:</td>
  117. <td>
  118. <input id="login_form:userInput" type="text" name="login_form:userInput" tabindex="0" />
  119. </td>
  120. </tr>
  121. <tr>
  122. <td>
  123.                         Password:</td>
  124. <td>
  125. <input type="password" name="login_form:j_id16" value="" />
  126.  
  127.                                                                 <br />
  128. </td>
  129. </tr>
  130. <tr>
  131. <td>
  132. <span class="rich-tool-tip " id="login_form:j_id21" style="z-index:99; ">
  133. <span id="login_form:j_id21content">Logearse</span>
  134. <span id="login_form:j_id21script" style="display:none">
  135. <script type="text/javascript" id ="scriptlogin_form:j_id21">
  136. new ToolTip("login_form:j_id21","login_form:loginb",{'showEvent':'mouseover'} );
  137. </script>
  138. </span>
  139. </span>
  140. <input id="login_form:loginb" name="login_form:loginb" onclick="A4J.AJAX.Submit('login_form',event,{'similarityGroupingId':'login_form:j_id20','parameters':{'login_form:j_id20':'login_form:j_id20'} ,'containerId':'login_form:esperar'} );A4J.AJAX.Submit('login_form',event,{'similarityGroupingId':'login_form:loginb','parameters':{'login_form:loginb':'login_form:loginb'} ,'containerId':'login_form:esperar'} );return false;" value="Login" type="button" />
  141. </td>
  142. </tr>
  143. </tbody>
  144. </table>
  145. </td>
  146. <td>
  147.                                                 <!-- <h:graphicImage style="margin-left:auto; margin-right:auto"
  148.                                                         value="/img/logo.jpg" />
  149. -->
  150. <img src="/coreIcon/img/ericsson_logo_trasparente1.png" style="margin-left:auto; margin-right:auto; padding-bottom: 30px;" />
  151. </td>
  152. </tr>
  153. </tbody>
  154. </table>
  155. <input type="hidden" autocomplete="off" name="login_form" value="login_form" />
  156. <input type="hidden" autocomplete="off" name="autoScroll" value="" />
  157. <input type="hidden" autocomplete="off" name="login_form:_link_hidden_" value="" />
  158. <input type="hidden" autocomplete="off" name="login_form:j_idcl" value="" />
  159. <script type="text/javascript">function clear_login_form() {
  160. _clearJSFFormParameters('login_form','',['login_form:_link_hidden_','login_form:j_idcl']);
  161. }
  162. function clearFormHiddenParams_login_form(){clear_login_form();}
  163. function clearFormHiddenParams_login_form(){clear_login_form();}
  164. clear_login_form();</script>
  165. <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id4" autocomplete="off" />
  166. </form>
  167.                  <script type="text/javascript">       
  168.                     window.onload = function() {
  169.                     document.getElementById('login_form:userInput').focus();
  170.                     }
  171.                     </script>
  172. <dl id="msgsError" class="rich-messages" style="display: none; color:red">
  173. <dt>
  174. </dt>
  175. </dl>
  176. </div>
  177. </div>
  178. </body>
  179. </html>
  180.  
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


De antemano, muchas gracias.
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Publicidad

Re: Registro automático en página XHTML

Notapor explorer » 2016-02-25 16:41 @736

No lo he mirado con detalle, pero hay mucho JavaScript, y creo que la clave está ahí.

Habría que analizar la ejecución de ese código. Con complementos como el Firebug se puede ejecutar incluso paso a paso, y ver cómo se va confeccionando el formulario y qué datos se envían al final, al servidor.

Incluso puede ver de forma más directa, viendo las cabeceras del tráfico que se intercambia, entre el cliente y el servidor. Si al final se traduce en una serie de campos, pues eso es lo que debemos usar en el programa.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados