Página 1 de 1

Registro automático en página XHTML

NotaPublicado: 2016-02-23 10:29 @478
por Skull118
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.003 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.007 segundos, usando GeSHi 1.0.8.4


De antemano, muchas gracias.

Re: Registro automático en página XHTML

NotaPublicado: 2016-02-25 16:41 @736
por explorer
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.