Domingo 22 de Diciembre de 2024, 19:52
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
[Reto] Bot http
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: [Reto] Bot http (Leído 1575 veces)
Invisible
Nuevo Miembro
Mensajes: 7
[Reto] Bot http
«
en:
Domingo 25 de Diciembre de 2011, 14:52 »
0
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
)
;
}
}
Tweet
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
[Reto] Bot http