Programación Web y Scripting > PHP

 [Reto] Bot http

(1/1)

Invisible:
Hay un tipo de retos incrementales que son más productivos que los retos habituales.

http://en.wikipedia.org/wiki/Cutting_contest
http://en.wikipedia.org/wiki/Guitar_battle

Esto es un reto a ese estilo, consiste en ir añadiendo algo al bot para hacerlo más parecido a una persona en la navegación (con cookies, con referer, con todo eso), además para que sea más fácil indicarle los parámetros que tiene que rellenar (por ejemplo muchos formularios tienen campos hidden, podría rellenarlos él mismo), para que sea más fácil parsear el html después, para que sea más fácil usar proxies... el límite lo pone vuestra imaginación.

Creo que puede ser un reto interesante, entretenido, productivo y del que todos saquemos el divertirnos, un código interesante y aprender y hacer algo útil. Vosotros diréis.

Aquí tenéis un ejemplo de cómo podría empezarse, veremos si alguien continua o no, en unos días pondré una mejora si nadie se anima, y con eso espero que ya sí se anime alguien.


--- Código: PHP ---class PHPBot {     function PHPBot (){      $this->ch = curl_init();      $ch = $this->ch;      curl_setopt($ch, CURLOPT_HEADER, 1); // Include headers in response or not      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Return (don't print) answer of exec      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12");      curl_setopt($ch, CURLOPT_AUTOREFERER, true); // Isn't this great?      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: */*', 'Accept-Language: en-us,en;q=0.5', 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'));          }        private function act($url, $params = false){      $ch = $this->ch;      curl_setopt($ch, CURLOPT_URL, $url);      if ($params != false){        curl_setopt($ch, CURLOPT_POSTFIELDS, $this->myurlencode($params));        curl_setopt($ch, CURLOPT_POST, 1);      }      else        curl_setopt($ch, CURLOPT_POST, 0);      $r = curl_exec($ch);      return $r;    }        private function myurlencode($dict){      $r = "";      foreach($dict as $key => $value)        $r = $r.urlencode($key).'='.urlencode($value).'&';      return $r;    }        function get ($url){      return $this->act($url);    }        function post($url, $params){      return $this->act($url, $params);    }   }

Navegación

[0] Índice de Mensajes

Ir a la versión completa