lunes, 8 de febrero de 2010

PHP - Curl y Proxy (Vota Summercase Boadilla)

Hoy nos sentimos democráticos, por ello mismo, como creemos en las reglas del juego, crearemos un script que votará en una encuesta tantas veces como nuestro número de proxys tengamos.

Para ello mismo, he decidido apoyar a los poppers amigos de lo indie y su festival por excelencia en Madrid, el Summercase.

Resulta que el ayuntamiento de Boadilla (localidad donde se realiza el festival) esta haciendo una encuesta preguntando si se debe seguir realizando el festival y la verdad, no les va muy bien, ya que ganan por poco y seguramente como van las cosas no habrá festival.

Por ello mismo, quiero aportar mi granito de arena. Seguramente tanto voto negativo esté causado por algún vecino anti poperos, con un mínimo conocimiento de programación. A pesar de todo esto, nos valdrá como perfecto ejemplo de como no hacer en la vida una encuesta. Como errores destacan: no hay Captcha y la única medida de seguridad que aporta es 1 voto por IP por día. Pues ya está, PROXYs a cholón y listo.

Lo primero de todo que necesitaremos, será una lista de proxys, en internet hay muchísimas, yo os adjunto una que es un poco mala pero no importa. El único requisito que tiene que cumplir vuestra lista es el siguiente: ip:puerto, una proxy por cada línea y que el fichero se llame proxys.txt

Aquí os dejo un ejemplo:
proxys.txt
125.163.255.154:8080
95.56.230.12:80
92.61.240.22:80
95.104.116.82:8080
121.31.126.93:80
87.250.47.219:8080
89.31.6.24:8080
84.20.81.196:8080
125.160.162.16:8080
202.143.146.205:8080
119.6.253.31:8000
208.180.65.242:8080
121.14.158.75:80
201.48.212.166:80
117.25.177.242:8080
200.141.202.162:8080
119.2.42.163:8080
202.90.112.43:8080
187.5.91.82:8080
208.180.60.126:8080
200.226.251.217:80
221.1.223.10:808
220.178.47.253:8080
202.159.90.163:80
202.57.33.134:8008
115.31.64.12:8008
189.108.142.5:8080
124.82.221.194:8080
41.154.7.52:8080
203.172.138.211:8080
200.25.200.178:8080
190.203.34.86:8080
200.3.170.210:80
201.72.7.2:80
202.143.129.200:8080
212.184.79.66:80
201.2.110.84:8080
200.14.96.57:80
119.70.40.102:8080
41.243.216.27:8080
217.10.246.4:8080
87.98.249.24:80
202.152.59.235:80
186.56.68.6:8080
119.70.40.101:8080
200.91.248.82:80
189.41.69.151:80
219.90.91.69:8080
190.228.70.4:80
114.57.172.78:80
125.162.38.175:8080
74.206.98.202:8080
222.66.116.108:8080
121.14.158.76:80
84.20.81.196:80
Una vez guardado el fichero, procederemos a crear el script en php que está bastante comentado por lo que sólo tenéis que leerlos para enteraros de  que hace.
vota_summercase.php
<?php
/*
 *      vota_summercase.php
 *     
 *      Copyright 2010 Don ZeYt
 *     
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *     
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *     
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *      MA 02110-1301, USA.
 */
//Abrimos archivos de proxy
$archivo = "proxys.txt";
$f = fopen($archivo, "r");
$datos = fread($f, filesize($archivo));
fclose($f);
//Creamos array de proxys
$datos = explode("\n",$datos);
//URL votacion
$URL ="http://www.aytoboadilla.com/opinion/encuesta.asp";
//Inicializamos contadores
$error=0;
$acierto=0;
$proxy_error=0;
//Bucle para todas las proxys
foreach($datos as $d){
    //Separamos puerto de IP
    $d= explode(":",$d);
    $ip=$d[0];
    $puerto=$d[1];
    //Usamos CURL
    $ch = curl_init();
    echo $ip." ".$puerto."\n";
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $ip);
    curl_setopt($ch, CURLOPT_PROXYPORT, $puerto);
    curl_setopt($ch, CURLOPT_URL, $URL);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, "respuesta=r1");
    curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT, 5);
    $datos = curl_exec($ch);
    curl_close($ch);
    //Si no son vacios
    if ($datos != ""){
        if (!ereg("contabilizado",$datos)){
            $error++;
            echo "Error ".$error."\n";
        }else{
            $acierto++;
            echo "Acierto ".$acierto."\n";
        }
    }else{
        $proxy_error++;
        echo "Error Proxy ".$proxy_error."\n";
    }
}
echo "Aciertos: ".$acierto." Errores: ".$error." Errores de Proxy: ".$proxy_error;
?>
Una vez guardado, el único requisito es que estén los dos archivos en el mismo directorio. Ahora bien, para votar sólo habrá que ejecutar el script. Si es tu primera vez leyendo este blog, para poder ejecutarlo necesitarás GNU/Linux con geany , geany con php, php5 y curl. También es valido cualquier editor, incluso subir el script a un servidor.
¡Si usas otro sistema operativo búscate la vida!

No hay comentarios:

Publicar un comentario