Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zoik en 4 Marzo 2015, 20:34 pm



Título: PHP, Curl y facebook
Publicado por: Zoik en 4 Marzo 2015, 20:34 pm
Buenas gente, cuanto tiempo

bien estoy practicando crawling y scraping en php, y estoy mirando a ver si se puede leer el código de una página cualquiera de facebook, para mi sorpresa cuando leo la url con curl, este no me devuelve nada.

Imagino que es debido a que facebook ya tiene contramedidas contra bots, pero me gustaría saber si hay alguna manera de hacerlo sin utilizar la propia api de facebook.

Un saludo y gracias de antemano.


Título: Re: PHP, Curl y facebook
Publicado por: engel lex en 4 Marzo 2015, 20:52 pm
si no muestras como lo haces, es dificil saber... capaz eres tu el que se equivoca...


Título: Re: PHP, Curl y facebook
Publicado por: Zoik en 4 Marzo 2015, 23:05 pm
Código
  1. <?php
  2. function curl($url)
  3. {
  4. $options = Array(
  5. CURLOPT_RETURNTRANSFER => TRUE,
  6. CURLOPT_FOLLOWLOCATION => TRUE,
  7. CURLOPT_AUTOREFERER => TRUE,
  8. CURLOPT_CONNECTTIMEOUT => 120,
  9. CURLOPT_TIMEOUT => 120,
  10. CURLOPT_MAXREDIRS => 10,
  11. CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8",
  12. CURLOPT_URL => $url,
  13. );
  14.  
  15. $ch = curl_init();
  16. curl_setopt_array($ch, $options);
  17. $data = curl_exec($ch);
  18. curl_close($ch);
  19. return $data;
  20. }
  21. echo curl("www.facebook.com");
  22. ?>

Un saludo.


Título: Re: PHP, Curl y facebook
Publicado por: engel lex en 5 Marzo 2015, 00:22 am
si... el error es tuyo... tu crees que los navegadores no usan curl o metodos similares? como podría FB saber la diferencia?

cambia
Código
  1. $data = curl_exec($ch);
por
Código
  1. $data = curl_error($ch);

para que veas el error...

el error es sobre el certificado local para la conexión https... bueno... busca sobre el error y verás de que va y por qué... si no te importa el certificado (ni que le hagan un MItM a tu bot)  a las opciones agregale estas 2 lineas

Código
  1. CURLOPT_SSL_VERIFYHOST => false,
  2. CURLOPT_SSL_VERIFYPEER => false

lo que siempre digo... hay que aprender a leer los errores... hay que ver siempre si la librería retorna errores o no


Título: Re: PHP, Curl y facebook
Publicado por: MinusFour en 5 Marzo 2015, 01:23 am
Yo creo que necesitas ejecutar curl antes de poder revisar el error, tecnicamente el error deberia aparecer justo despues de usar curl_exec entonces...

Código
  1. $data = curl_exec($ch);
  2. if($data === false){
  3.  $error = curl_error($ch);
  4. }

Es muy probable que no tengas instalado los certificados necesarios. Si usas PHP 5.3.7 en adelante hay una directiva que puedes usar en tu php.ini:

Código
  1. curl.cainfo = /etc/certificados.crt

de lo contrario creo que vas a tener que agregar:

Código
  1. CURLOPT_CAINFO => '/etc/certificados.crt'

A tu arreglo de opcioens.

Te puedes bajar un ca-bundle de mozilla o usar los de tu sistema (depende de tu SO). Si quieres usar los de mozilla, puedes bajarte el .crt de aqui:

https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

El archivo lo tienes que guardar donde tu quieras, pero tiene que tener permisos de lectura y el path debe verse reflejado en la configuracion (en mi ejemplo use /etc/certificados.crt). La otra opcion es simplemente olvidarse de los certificados y usar lo que engel lex te ha dicho.

Tambien puede ser que tu problema no tenga nada que ver con esto... pero no has puesto el error asi que esto es solo una conjetura.


Título: Re: PHP, Curl y facebook
Publicado por: dimitrix en 5 Marzo 2015, 06:11 am
Para Facebook eso usa mejor "Casper".

Igualmente.... si quieres hacerlo profesionalmente, hay unas cositas llamadas "API".

Mi consejo: Si de verdad quieres practicar, empieza por este foro y no por FB.


Título: Re: PHP, Curl y facebook
Publicado por: Zoik en 5 Marzo 2015, 06:57 am
Muchas gracias por responder tan rápido cuando llegue a casa lo probaré todo y ya comento.

Un saludo.


Título: Re: PHP, Curl y facebook
Publicado por: EFEX en 5 Marzo 2015, 14:20 pm
Igualmente.... si quieres hacerlo profesionalmente, hay unas cositas llamadas "API".

Se pero tengo que registrarme, registrar mi app, descargar sdk, que facebook me siga..