Páginas: [1]
  Imprimir  
Autor Tema: Ayuda, crear bot con php?  (Leído 1455 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Enfermin
Usuario regular
**

Karma: +3/-1
Mensajes: 54



Ver Perfil
« : Octubre 14, 2009, 12:00:50 »


hola a todos, siempre oia de los bots, y esta vez quiero saber.. al menos que me den una pista de como crear un bot en php para que se registre a mi sistema de usuarios y envie un mensaje (como en un foro)  ??? no encuentro informacion sobre ello, espero me puedan ayudar
En línea

WHK
吴阿卡
Administrador
Usuario constante
*****

Karma: +8/-3
Mensajes: 272


Coder

yan_unico_102
Ver Perfil WWW Email
« Respuesta #1 : Octubre 14, 2009, 05:52:04 »


Creo que estás un poco confundido, hacer un bot para que envíe peticiones a un sistema en PHP no necesariamente debe estar programado en php. Independiente del lenguaje en todas las ocaciones debes utilizar sockets o alguna función que implemente sockets para realizar una conección remota, ahora dependiendo el tipo de foro son las peticiones GET y POST que se les enviarán para poder registrarse, postear, etc ya que cada sistema de foro es diferente. Por ejemplo SMF utiliza tokens mas una verificación de hashses y referencias, phpbb verifica tokens solamente, vbulletin verifica referencias, debes pasar por sistemas anticsrf, etc etc. Cada sistema es único por lo tanto el bot que necesites hacer depende del sistema WEB y para eso debes entender bien el lenguaje en que lo harás. En este caso como quieres hacerlo en php debes utilizar sockets o curl, curl es mas cómodo si tienes esa extensión habilitada en tu servidor. Este script lo hize por ahi por marzo aproximadamente, aver si te sirve como referencia
Código:
<?php
if(!$_POST){ ?>
<form method="post" action="http://<?php echo $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="user" value="WHK" /> User <br />
<input type="password" name="pass" value="123456" /> Pass <br />
<input type="text" name="id_foro" value="3" /> Id del foro <br />
<input type="text" name="url" value="http://127.0.0.1/smf/" /> URL del foro <br />
<input type="text" name="titulo" value="YoRobot_<?php echo rand(10,1000); ?>" /> T&iacute;tulo <br />
<textarea name="mensaje">Hola, soy un bot :) [size=1pt]<?php echo rand(10,1000); ?>[/size]</textarea> <br />
<input type="submit" value="Enviar" />
</form>
<?php exit;
}
 
$seo4smf = true;
$tiempo_espera = '10';
$ruta = $_POST['url'];
$id_foro = $_POST['id_foro'];
$titulo = $_POST['titulo'];
$mensaje = $_POST['mensaje'];
$user = $_POST['user'];
$pass = $_POST['pass'];
 
if(postear_nuevo_mensaje($user, $pass, $ruta, $id_foro, $titulo, $mensaje, $seo4smf))
 echo 'OK<br>';
else
 echo 'Error<br>';
 
function postear_nuevo_mensaje($user, $pass, $ruta, $id_foro, $titulo, $mensaje, $seo4smf = false){
 global $tiempo_espera; // Tiempo de espera entre cada post.
 if($seo4smf){
  $ruta_prepara_post = 'post.html;board=';
  $ruta_postear = 'post2.html;start=0;board=';
 }else{
  $ruta_prepara_post = '?action=post;board=';
  $ruta_postear = '?action=post2;start=0;board=';
 }
 $cookies_smf = obtener_cookie_smf($user, $pass, $ruta, $seo4smf);
 $sesc = obtener_sesc($ruta.$ruta_prepara_post.urlencode($id_foro.'.0'), $cookies_smf);
 $seqnum = obtener_seqnum($ruta.$ruta_prepara_post.urlencode($id_foro.'.0'), $cookies_smf);
 sleep($tiempo_espera);
 $retorno = http_req(
  $ruta.'?action=post2;start=0;board='.$id_foro,
  'topic=0&subject='.urlencode($titulo).
  '&icon=lamp&message='.urlencode($mensaje).
  '&notify=0&post=Post&sc='.urlencode($sesc).'&seqnum='.(int)$seqnum,
  $cookies_smf,
  $ruta.$ruta_prepara_post.urlencode($id_foro.'.0')
 );
 if(eregi('302 Found', $retorno)) return true; else return false; 
}
 
function obtener_seqnum($ruta, $cookie){
 $buffer = http_req($ruta, false, $cookie);
 return desde_hasta('seqnum" value="', '"', $buffer);
}
 
function obtener_sesc($ruta, $cookie){
 $buffer = http_req($ruta, false, $cookie);
 return desde_hasta('sc" value="', '"', $buffer);
}
 
function obtener_cookie_smf($user, $pass, $ruta, $seo4smf){
 if($seo4smf) $ruta_ingresar = 'login2.html'; else $ruta_ingresar = '?action=login2';
 $buffer = http_req($ruta.$ruta_ingresar, 'user='.urlencode($user).'&passwrd='.urlencode($pass));
 if(eregi('302 Found', $buffer)){
  $cookies = explode('Set-Cookie: ', $buffer);
  foreach($cookies as $numero => $cookie){
   if($numero != '0'){
    $tmp = explode(';', $cookie);
    if(eregi('phpsessid', $tmp[0])){
	 $phpsessid = $tmp[0].'; ';
	}else{
	 $retorno .= $tmp[0].'; ';
    }
   }
  }
  return $retorno.$phpsessid;
 }else{
  return false;
 }
}
 
function http_req($url, $post_data = false, $cookie = false, $referer = false){
 // by WHK.
 $timeout = 100;
 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
 curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
 curl_setopt($ch, CURLOPT_HEADER, true);
 if($referer){
  curl_setopt($ch, CURLOPT_REFERER, $referer);
 }
 if($cookie){
 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
 }
 if($post_data){
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/x-www-form-urlencoded'));
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  }
 $contenido = curl_exec($ch);
 $error = curl_error($ch);
 curl_close($ch);
 if($error) return $error; else return $contenido;
}
 
function desde_hasta($desde, $hasta, $contenido){
 if(eregi($desde ,$contenido)){
  $retorno = explode($desde, $contenido);
  $retorno = $retorno[1];
  $retorno = explode($hasta, $retorno);
  $retorno = $retorno[0];
  return $retorno;
 }else{
  return false;
 }
}
?>
En línea

Enfermin
Usuario regular
**

Karma: +3/-1
Mensajes: 54



Ver Perfil
« Respuesta #2 : Octubre 15, 2009, 10:57:08 »


bueno, gracias por aclarar mis dudas  :P, estudiare tu script para lograr mi proposito  :D PD: yo solo queria mandar mensajes con un bot a mi sistema de usuarios creado por mi  :), osea como un simple libro de visitas  ;D
En línea

janito24
Programador
Usuario constante
*

Karma: +6/-0
Mensajes: 232


Booooooo!


Ver Perfil WWW
« Respuesta #3 : Octubre 15, 2009, 01:59:07 »


Pues fíjate en el formulario el nombre que recoges desde el archivo que procesa...   Por ejemplo sí tienes:   <input type="text" name="mensaje">   Tú bot debe enviar al archivo que procesa la variable mensaje :p   Y el archivo que procesa lo sacas del inicio del formulario...   <form metod="post" action="procesa.php"...   Con eso sabes que el formulario usa post para procesar las variables y también sabes que el archivo "procesa.php" es el que trabaja con las variables, por lo tanto envias directo a el :)
En línea

Dacan
Recién llegado
*

Karma: +0/-0
Mensajes: 1


Ver Perfil Email
« Respuesta #4 : Mayo 02, 2010, 11:39:47 »


Perdon por reabrir el tema. Que buen aporte me ha funcionado correctamente solo modifique lo del Seo por False y listo.... Quisiera poder contactarte para ampliar el Bot un poco habria alguna forma de Responder mensajes y respuestas pre definidas por ejemplo que me digan Hola, Como Estas y responda el bot. Saludos, Dacan 
En línea
WHK
吴阿卡
Administrador
Usuario constante
*****

Karma: +8/-3
Mensajes: 272


Coder

yan_unico_102
Ver Perfil WWW Email
« Respuesta #5 : Mayo 03, 2010, 12:29:07 »


si quieres hacerle cambios puedes postearlo acá mismo y lo revisamos entre todos  :P
En línea

Páginas: [1]
  Imprimir  
 
Ir a: