elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problemas para cargar pagina mediante curl
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas para cargar pagina mediante curl  (Leído 3,606 veces)
gio.garciap

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problemas para cargar pagina mediante curl
« en: 4 Octubre 2012, 23:51 pm »

Hola, que tal, les explico.
Estoy realizando un pequeño script en php para poder enviar datos a la pagina de verificacion de CFDI del SAT, aqui en mexico.
esta es la pagina: https://verificacfdi.facturaelectronica.sat.gob.mx/

Entonces lo que hice fue cargar la pagina con php y curl, lo que me permite obtener la informacion del captcha y cargar la pagina mediante post para que de esa forma poder enviar los datos que solicita la pagina automaticament, sin necesidad de teclean algo.

Pero mi problema es que cuando quiero enviar los parametros mediante curl y post, me carca un error. pero si en mi formulario el action es hacia la pa pagina del sat directamente funciona sin nigun problema.

Sera que alguien tenga alguna idea de porque sucede eso??
aca les paso el codigo de mi script
PAra probar en el formulario, si dejo el action en blanco cargo mi mismo script me me marca un error el resultado de la pagina del SAT, pero si coloco la direccion del SAT, el resultado es correcto.

Gracias de antemano. !!!
saludos.
Código
  1. <?php
  2.  
  3. function post_web_page($url, $option)
  4. {
  5. echo $option;
  6. $ch = curl_init($url);//URL A ENVIAR EL CONTENIDO
  7. $options = array(
  8.     CURLOPT_RETURNTRANSFER => true,     // return web page
  9.        //CURLOPT_HEADER         => false,    // don't return headers
  10.        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
  11.        CURLOPT_ENCODING       => "",       // handle all encodings
  12.        //CURLOPT_USERAGENT      => "spider", // who am i
  13.        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
  14.        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
  15.        CURLOPT_TIMEOUT        => 120,      // timeout on response
  16.        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
  17. CURLOPT_POST => true,
  18. CURLOPT_POSTFIELDS => $option,
  19. CURLOPT_SSL_VERIFYPEER => true,
  20. CURLOPT_SSL_VERIFYHOST => 2,
  21. CURLOPT_CAINFO => getcwd() . "\GeoTrustGlobalCA.crt",
  22.  
  23.  
  24.    );
  25. //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//OPCIONAL: NO RETORNARA EL RESULTADO DE LA OPERACION
  26.  
  27. curl_setopt_array( $ch, $options );
  28. $content = curl_exec( $ch );
  29.  
  30.    $err     = curl_errno( $ch );
  31.    $errmsg  = curl_error( $ch );
  32.    $header  = curl_getinfo( $ch );
  33.  
  34.  
  35.    $header['errno']   = $err;
  36.    $header['errmsg']  = $errmsg;
  37.    $header['content'] = $content;
  38.    return $header;
  39. }
  40.  
  41. function get_web_page( $url )
  42. {
  43.  
  44.    $options = array(
  45.        CURLOPT_RETURNTRANSFER => true,     // return web page
  46.        CURLOPT_HEADER         => false,    // don't return headers
  47.        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
  48.        CURLOPT_ENCODING       => "",       // handle all encodings
  49.        CURLOPT_USERAGENT      => "spider", // who am i
  50.        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
  51.        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
  52.        CURLOPT_TIMEOUT        => 120,      // timeout on response
  53.        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
  54. CURLOPT_SSL_VERIFYPEER => false,
  55.  
  56.    );
  57.  
  58.    $ch      = curl_init( $url );
  59.    curl_setopt_array( $ch, $options );
  60.    $content = curl_exec( $ch );
  61.    $err     = curl_errno( $ch );
  62.    $errmsg  = curl_error( $ch );
  63.    $header  = curl_getinfo( $ch );
  64. curl_close( $ch );
  65.  
  66.    $header['errno']   = $err;
  67.    $header['errmsg']  = $errmsg;
  68.    $header['content'] = $content;
  69.    return $header;
  70. }
  71.  
  72. if (empty($_POST)){
  73. $url = 'https://verificacfdi.facturaelectronica.sat.gob.mx/';
  74. $res=get_web_page( $url );
  75.  
  76. $output=str_replace('href="', 'href="https://verificacfdi.facturaelectronica.sat.gob.mx/', $res['content']);
  77. $output=str_replace('src="', 'src="https://verificacfdi.facturaelectronica.sat.gob.mx/', $output);
  78. echo '<div style="display:none">'. $output .'</div>';
  79. ?>
  80. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  81. <script>
  82.  
  83.  
  84. $(function(){
  85. a=$('#__VIEWSTATE').val();
  86. $('#VIEWSTATE').attr({'value': a});
  87. a=$('#ctl00_MainContent_ImgCaptcha').attr('src');
  88. $('#c').attr('src', a);
  89.  
  90.  
  91.  
  92.  
  93. });
  94.  
  95. </script>
  96. <br/>
  97.  
  98. <form action="" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form" >
  99. <input type="submit" />
  100. <input type="hidden" value="true" name="__ASYNCPOST" />
  101. <input type="hidden" value="" name="__EVENTARGUMENT" />
  102. <input type="hidden" value="" name="__EVENTTARGET" />
  103. <input type="hidden" value="" name="__VIEWSTATE" id="VIEWSTATE" />
  104. <input type="hidden" value="" name="__VIEWSTATEENCRYPTED" />
  105. <input type="hidden" value="Verificar CFDI" name="ctl00$MainContent$BtnBusqueda" />
  106. <input type="text" value="" name="ctl00$MainContent$TxTCaptchaNumbers" id="cap" />
  107. <input type="hidden" value="AXT940727FP8" name="ctl00$MainContent$TxtRfcEmisor" />
  108. <input type="hidden" value="AGU931206CH4" name="ctl00$MainContent$TxtRfcReceptor" />
  109. <input type="hidden" value="EF48422A-1B0D-467F-A9E5-BEEFAD703560" name="ctl00$MainContent$TxtUUID" />
  110. <input type="hidden" value="ctl00$MainContent$UpnlBusqueda|ctl00$MainContent$BtnBusqueda" name="ctl00$ScriptManager1" />
  111. <img id="c" src="" />
  112. </form>
  113.  
  114.  
  115. <?php
  116. }
  117. else
  118. {
  119.  
  120.  
  121. $op = "__ASYNCPOST=true&__EVENTARGUMENT=&__EVENTTARGET=&__VIEWSTATE=".$_POST['__VIEWSTATE']."&__VIEWSTATEENCRYPTED=&ctl00$MainContent$BtnBusqueda=".$_POST['ctl00$MainContent$BtnBusqueda']."&ctl00$MainContent$TxTCaptchaNumbers=".$_POST['ctl00$MainContent$TxTCaptchaNumbers']."&ctl00$MainContent$TxtRfcEmisor=".$_POST['ctl00$MainContent$TxtRfcEmisor']."&ctl00$MainContent$TxtRfcReceptor=:".$_POST['ctl00$MainContent$TxtRfcReceptor']."&ctl00$MainContent$TxtUUID=".$_POST['ctl00$MainContent$TxtUUID']."&ctl00$ScriptManager1=".$_POST['ctl00$ScriptManager1'];
  122.  
  123. $url="https://verificacfdi.facturaelectronica.sat.gob.mx/";
  124. $res = post_web_page($url,$op);
  125. echo htmlentities( $res['content']).'<br/>';
  126. echo $res['errmsg'].'<br/>';
  127. echo   $res['errno'].'<br/>';
  128.  
  129. }
  130. ?>
  131.  
  132.  
  133.  


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Problemas para cargar pagina mediante curl
« Respuesta #1 en: 6 Octubre 2012, 01:31 am »

Pon el error que te da.
Usa el CURLOPT_USERAGENT con un useragent valido tipo Mozilla / (Firefox 15 Win 6.1) o algo así..

Comprueba que los campos hidden no cambian de valor cada vez que recargas la pagina pues se suelen implementar para asegurarse de que no se hace precisamente lo que estas intentando hacer.


Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con cURL y páginas con redirección
PHP
Casidiablo 3 4,088 Último mensaje 22 Agosto 2007, 01:09 am
por дٳŦ٭
Que no me muestre la pagina en CURL
PHP
XafiloX 3 3,999 Último mensaje 12 Agosto 2009, 01:10 am
por дٳŦ٭
Autenticación en Tuenti mediante Curl
Scripting
swinman 1 4,240 Último mensaje 26 Marzo 2010, 10:48 am
por kamsky
{RESUELTO}Cargar documento dentro de una celda, mediante javascript+jquery « 1 2 3 »
Desarrollo Web
|Miguel| 23 15,345 Último mensaje 28 Marzo 2012, 00:30 am
por |Miguel|
Problemas al instalar PHP5-curl
GNU/Linux
sexto 3 6,902 Último mensaje 30 Julio 2012, 10:03 am
por sexto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines