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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Capturar Pagina Web Curl (Ayuda)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Capturar Pagina Web Curl (Ayuda)  (Leído 3,291 veces)
Altaren

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Capturar Pagina Web Curl (Ayuda)
« en: 30 Julio 2014, 23:35 pm »

Hola soy bien novato programando tengo un código para capturar paginas. Me funciona con la mayoría de paginas pero por ejemplo cuando lo intento con
Código:
http://www.filemare.com/
me redirige a la pagina
Código:
http://www.filemare.com
/ y no a mi index

Este es el codigo:

Código
  1. $curl = curl_init();
  2. $header[0] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  3. $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  4. $header[] = "Cache-Control: max-age=0";
  5. $header[] = "Connection: keep-alive";
  6. $header[] = "Keep-Alive: 300";
  7. $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  8. $header[] = "Accept-Language: es-419,es;q=0.8";
  9. $header[] = "Pragma: ";
  10.  
  11. curl_setopt($curl, CURLOPT_URL, "http://www.filemare.com/");
  12. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36");
  13. curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  14. curl_setopt($curl, CURLOPT_REFERER, "https://www.google.cl/");
  15. curl_setopt($curl, CURLOPT_ENCODING, "gzip,deflate");
  16. curl_setopt($curl, CURLOPT_AUTOREFERER, true);
  17. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  18. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  19. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  20.  
  21. $html = curl_exec($curl);
  22. echo 'Curl error: ' . curl_error($curl);
  23. curl_close($curl);
  24.  
  25. echo $html;


Si me pudieran ayudar a encontrar mi problema de los agradecería mucho  ;D

Saluds

MOD: Etiquetas GeSHi obligatorias. Normas del subforo de PHP


« Última modificación: 30 Julio 2014, 23:52 pm por #!drvy » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #1 en: 31 Julio 2014, 00:17 am »

No creo entender bien el problema, ¿No quieres que te redirija?

Código
  1. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);

¿El curl se ejecuta bien?


En línea

Altaren

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #2 en: 31 Julio 2014, 16:40 pm »

Exacto, intente lo que me sugeriste pero igualmente me redirige  :-(
Mi idea es capturar para después aplicarle expresiones regulares
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #3 en: 31 Julio 2014, 17:20 pm »

Es raro, el curl me devuelve el error 301:

Código:
m1n054@debiantest:~$ curl -iv 'http://www.filemare.com'
* Rebuilt URL to: http://www.filemare.com/
* Hostname was NOT found in DNS cache
*   Trying 198.7.57.228...
* Connected to www.filemare.com (198.7.57.228) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: www.filemare.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently
* Server nginx is not blacklisted
< Server: nginx
Server: nginx
< Date: Thu, 31 Jul 2014 15:11:40 GMT
Date: Thu, 31 Jul 2014 15:11:40 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 178
Content-Length: 178
< Connection: keep-alive
Connection: keep-alive
< Location: http://filemare.com/
Location: http://filemare.com/

<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

Prueba a agregar:

Código
  1. curl_setopt($curl, CURLOPT_MAXREDIRS, 0);

Y si esto no funciona, prueba a eliminar por completo las dos entradas, debería tomar el valor por default de no seguir los locations.
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #4 en: 31 Julio 2014, 21:59 pm »

Citar
y no a mi index

¿ Como que y no a tu index ? Tienes usuario o algo asi ?

Saludos
En línea

Altaren

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #5 en: 31 Julio 2014, 22:05 pm »

Tampoco me resulto.
Mirando el codigo fuente de la pagina detecte que este un javascript era el culpable
 
Código
  1.  
  2. <script type="text/javascript">
  3. eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2(5!=1)1.0=0;2(0.6!=\'3.4\')1.0=\'7://3.4\';',8,8,'location|top|if|filemare|com|self|hostname|http'.split('|'),0,{}))
  4.  </script>
  5.  <script type="text/javascript">
  6. eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('8 F(j){3 5=j.b.v(\'/\');6(5[0]==\'\')5.L();6(5[5.C-1]==\'\')5.17();7 5}8 M(5){7(\'/\'+5.B(\'/\'))}8 N(h){7 h&&h.A(/^[a-z]{2}(-[a-z]{2})?$/i)}8 E(j){3 r={};6(j.9!=\'\'){3 u=j.9.Z(1).v(\'&\');m(3 i=0;i<u.C;i++){3 k=u[i].v("=");r[x(k[0])]=k[1]?x(k[1]):I}}7 r}8 H(4,c){c=c.o();m(3 a w 4){6(c==a.o()){7 U}}7 V}8 K(4){3 q={};m(3 a w 4){6(!a.A(/^[0-R-z]{O}$/i))q[a]=4[a]}7 q}8 J(4){3 p=[];m(3 a w 4){p.14(y(a)+(4[a]?(\'=\'+y(4[a])):\'\'))}3 h=p.B(\'&\');6(h==\'\')7\'\';7\'?\'+h}8 10(){3 l={"b":e.g.b,"9":e.g.9,"t":e.g.t};3 f=n.11(\'D\');6(f){3 d=f.X||f.12.n;6(d){3 s=13.16(d.W.P);n.D=s;6(s.G){3 5=F(l);6(N(5[0]))5.L();5.Y(s.G.o());l.b=M(5)}3 4=E(l);6(s.c){6(!H(4,s.c)){4[s.c]=I}}Q{4=K(4)}l.9=J(4);6(l.b!=e.g.b||l.9!=e.g.9){e.S(8(){e.g.T(l.b+l.9+l.t)},15)}}}}',62,70,'|||var|args|path|if|return|function|search||pathname|xid||window||location|str||loc|item||for|document|toLowerCase|pairs|args2|result||hash|data|split|in|decodeURIComponent|encodeURIComponent||match|join|length|state|parse_args|parse_path|locale|args_have_xid|null|fmt_args|args_remove_xid|shift|fmt_path|is_locale|40|textContent|else|9a|setTimeout|replace|true|false|body|contentDocument|unshift|substr|on_state|getElementById|contentWindow|JSON|push|500|parse|pop'.split('|'),0,{}))  </script>

Bueno al final opte por rescatar la información mediante un archivo y trabajar con el.

Dejo si alguien le sirve
Código
  1.  
  2.            $ch = curl_init("http://www.filemare.com/");
  3.            $fp = fopen("filemare.html", "w");
  4.            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
  5.            curl_setopt($ch, CURLOPT_FILE, $fp);
  6.            curl_setopt($ch, CURLOPT_HEADER, 0);
  7.            curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  8.            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  9.            curl_exec($ch);
  10.            curl_close($ch);
  11.            fclose($fp);
  12.  
  13.  


Disculpen las molestias y gracias por todo
« Última modificación: 31 Julio 2014, 22:10 pm por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #6 en: 31 Julio 2014, 22:09 pm »

cUrl no interpreta javascript -___-

Edit: Ya vi el echo... perdon xD
Saludos
« Última modificación: 31 Julio 2014, 22:21 pm por #!drvy » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #7 en: 31 Julio 2014, 22:20 pm »

cUrl no interpreta javascript -___-

Saludos

Pero si imprimes la variable $HTML como lo está haciendo el, en la última linea, si imprime el javascript en el navegador lo que hace parecer que esta redirigiendo.

Aún así, probe tu código tal cual solo con el false en followlocation y me regreso el 301 de Nginx y ningún archivo javascript.

Quizás lo que estaba pasando era que el 301 te enviaba a otra página y está te enviaba a otra página. Un doble redirect por así decir. Claro que el $HTML solo debería regresar el codigo 301 de Nginx si deshabilitas el followlocation.

Si quieres imprimir el codigo para observarlo puedes simplemente cambiar:

Código
  1. echo $html;

por

Código
  1. echo htmlentities($html);
« Última modificación: 31 Julio 2014, 22:25 pm por MinusFour » En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Capturar Pagina Web Curl (Ayuda)
« Respuesta #8 en: 4 Agosto 2014, 16:04 pm »

En mi web, estoy escribiendo artículos relacionados con éste tema. Por si te interesa, en un par de días habrá uno nuevo para hacer nuestra propia API de Twitter con PHP

http://zonaisc.webcindario.com/?p=35
En línea

- Pásate por mi web -
https://codeisc.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Que no me muestre la pagina en CURL
PHP
XafiloX 3 3,798 Último mensaje 12 Agosto 2009, 01:10 am
por дٳŦ٭
Como capturar la URL de una pagina abierta......
Scripting
markus_bitman 9 7,020 Último mensaje 26 Marzo 2010, 02:23 am
por invisible_hack
Problemas para cargar pagina mediante curl
PHP
gio.garciap 1 3,399 Último mensaje 6 Octubre 2012, 01:31 am
por #!drvy
[BASH] Capturar y descargar web con CURL
Scripting
Hekaly 0 2,627 Último mensaje 3 Junio 2014, 17:29 pm
por Hekaly
Quiero capturar contenido de una pagina web
Dudas Generales
Frameworka 5 3,857 Último mensaje 13 Febrero 2015, 14:31 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines