188_7d3f4775af1ff15c44b29f1ea1a99b51_habitaclick.png

GlobexCorp

wpe.jpg

Get Firefox

Descarga Firefox 3

Sponsor

Places

Tagboard

<h2>: cosa
<h1>l: l
Gnuget: Cual panda cual panda? :p, Bucio me suenas conocido pero la neta no te ubico, ibas conmigo a la secundaria? :p
zodman: donde esta el pandita ?
Bucio: :) gnuget hola te acuerdas de mi
yobageM: hola _o/
GnDx: jaja xD =D

My Plurk

Caso de estudio: Galaxia Linux y por que no basar un rank en impresiones.

Si leyeron el post anterior vieron el conflicto que causo Eduardo por  que damog  rompió la credibilidad del rank de  Galaxia Linux.

Después de esa gran tragedia yo tuve la oportunidad de tener una “lluvia de ideas” para mejorar galaxia linux,  bien,  en lugar de ser una lluvia de ideas vimos a un Programador defendiendo su trabajo  convencido que la forma en que hace las cosas es fiable.

El nos cuenta que por ahora están afinando el método y están en beta a lo que yo conteste que  el script de damog demostró que tal cosa no va a ser viable y que tendría que replantear la forma en que rankea los sitios; Eduardo en ese momento me reto a que probara el script de damog para demostrar que tal  script ya no funciona y que él en cuanto detecte  nuevas formas de “meter gol”  les iba a programar filtros para que no puedan quitarle fidelidad al rank.

La conclusión al final  de la conversación era que si me daba tiempo iba a extender el ejemplo de David Moreno a algo que no se pudiera filtrar  y que mostraría que  usar impresiones para armar el rank era algo inviable.

Así que hoy deje de ver mi episodio Sara Connors Chronicles  y prepare  un pequeño caso de estudio.

Primero,  pensemos un poco acerca de como funciona  su sistema de ranking  de galaxialinux.com

1. Crear un script que genere una imagen que a la vez cuente como impresión la pagina del blog que ha sido visitado. (osea este: http://www.galaxialinux.com/rank/banners/banner.php)

2. Contar  estas impresiones, pero para darle mas fidelidad tenemos que considerar algunas cosas:

-  La ip del visitante no puede ser repetida una cantidad excesiva de veces por que querría decir que el usuario esta apretando repetidamente el botón refresh con tal de subir rank

-  Tampoco podemos  meter su IP a una black list permanente por que quizá este usuario gusta de visitar este blog mas de una vez al díá por que este se  actualiza en mas de una ocasión diariamente

Oks ahora describamos un poco de lo que vamos a escribir:

Lo primero,  La ip del visitante no puede ser repetida una cantidad excesiva de veces aquí es donde  actualmente YA falla el script de Damog  (antes no hacían esta revisión) vamos a ver,  la forma mas viable de nunca ser la misma ip sería usando un proxy ¿no? oks, aquí hay un pequeño problema,  muchas paginas de proxies tiene pequeños “hacks” para que alguien no pueda usar curl  y parsear las ips, vi un caso donde  generaban el puerto con javascript y otro donde te exigian javascript “encendido” para poder acceder a la lista, y mejor aun uno hasta tenia un pequeño captcha.

Oks lo mas sano  (para mi)  fue buscar unos minutos en google  y  cualquier cosa que tuviera forma de una lista de proxies pegarla en un archivo de texto (aunque esta lista se pegara con pedazos de html o de la pagina no importa realmente, solo importa tener los proxies juntos en un solo texto), rápidamente tenia en un archivo de texto mucha basura junto con  proxies revueltos así que parte del script iba a ser obtener esta lista de proxies.

Una vez  teniendo mi lista de proxies escribí el siguiente script:

#! /usr/bin/evn python
# -*- coding: utf-8 -*-

#Caso de Estudio  Galaxia Linux
#Autor David Valdez


import urllib
import urllib2
import re



class anti_rank:
    """testing"""
   
    def __init__(self):
        pass


    def main(self):
        #request (aquí podemos meter diferentes combinaciones de headers e irlas intercambiando)
        #además podemos poner la pagina que queremos que suba en el rank
        headers = {'User-Agent':'Firefox','Referer':'http://www.tecnologiaslibres.net/'}        
       
        #esta función devuelve una lista de proxies
        ips = self.get_ips()        

        #por cada proxy intentamos hacer una petición
        for ip in ips:
            try:
                proxy = urllib2.ProxyHandler({'http': ip})
           
                opener = urllib2.build_opener(proxy,urllib2.HTTPHandler)
                urllib2.install_opener(opener)
           
                response = urllib2.Request("http://www.galaxialinux.com/rank/banners/banner.php",None,headers)
                response = urllib2.urlopen(response)
               
         
                response.close()
                #un poco de verbose
                print "Visitado con la siguiente ip: "+ ip + " al sitio:tecnologiaslibres.net"
               
            except:
                print "Error usando este proxy: "+ ip

        print "numero de visitas realizadas: %d" % visitas

       
    #lista de proxies    
    def get_ips(self):
        #lo único que necesitamos esa esta expresión regular que extrae las puras ips
        #de toda la basura que tenemos de texto
        get_ip  = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{0,4}")
        file = open("proxies.txt","r")
       
       
        cadena = ""
        for line in file.readlines():
            cadena =  cadena + line
           
        ips = get_ip.findall(cadena)    
               
        file.close()

        return ips #regresamos una gran lista de  direcciones de proxies


if __name__ ==  "__main__":
    text =  anti_rank()
    text.main()

EN base a esto, poniéndome en los zapatos de Eduardo, consideraría lo siguiente:

- Siempre cada petición será  una ip diferente.

- Suponiendo que los filtros revisen cualquier otra cosa en el header (como user Agent)  puede ser fácilmente fálsificable así que no es una solución validar por alguna otra cosa del header.

- Además, banear impresiones por user Agent  aumentaría dramáticamente el caso de falsos positivos y muchas impresiones genuinas  serían tomados como negativos.

- Quizá  banear si dos peticiones pasan muy juntas,  tampoco es viable, los primeros lugares en el rank tiene muchisimas impresiones,  limitar por tiempo las peticiones  afectaría directamente a estos primeros lugares (además que podríamos aleatoreamente “pausar” nuestro script para que tampoco tenga peticiones juntas.

Concluyendo,  NO hay forma de saber si una impresión es real o es generada por un script como el arriba escrito entonces TAMPOCO hay forma de Programar un  filtro para evitar las impresiones falsas.  así que la única forma de tener un rank viable es REPLANTEAR la forma de generar el rank que este no se base en vistas.

[UPDATE] SI no alcanzan a apreciar el código, aquí se ve mucho mas claro

Sobre el autor

Gnuget

Programador de tiempo completo,  Con enorme gusto  por el software libre.

Comentarios

sábado 4 de octubre, 2008 @ 09:19

Bucio

ahuevo

sábado 4 de octubre, 2008 @ 10:58

maop

A ver cuánto tarda en venir a darte tu cátedra de “VISITAS NO SON VISTAS” xDDD

sábado 4 de octubre, 2008 @ 11:24

Fr@nK666

A mi me gusta el Rank tal como esta por que aunque no es muy fiable por que los autores pueden modificar los valores pero el numero de impresiones muestra realmente el interés de los visitantes en el contenido del Sitio u Blog.

Puedes tener 100 visitantes y 500 impreciones por que a los visitantes les gusto el sitio y navegaron por mas de una pagina.

Ahora hay que clasificar a los visitantes que practicamente solo son 2 los que bienen de motores de busqueda y los visitantes fieles. Ambos tienen caracteristicas diferentes Ejemplo en Mi Blog de www.frank666.org estoy en el puesto tres del rank el 70% de mi trafico vienen de buscadores y el 20% restante es trafico fiel y lo que falta son de sitios de referencia u algun agregador social.

Agregar otras variables como el numero de articulos, el numero de referencias de otros Blogs, datos de Alexa, Google Analytics, Meneame,<cite>technorati</cite>  creo que no me dice nada sobre como valorar a un Blog o sitio Los que realmente valoran son los visitantes y sobre todo las impreciones que realizan por que nos muestra que estan interesados en la informacion.

Si bien el metodo que utilizan en el rank no es adecuado es facil detectar cuando alguien sube muy rapido. pero tambien es facil de engañar para subir un poco.

En conclusion yo lo uso por que es simple, el dia que le pongas mas mamadas simplemente me salgo

Si buscan un rank donde se valore el contenido y no las visitas ni las impreciones alli esta linuxfera.net que no es unrank propiamente dicho pero deja a un lado los visitas y solo toma en cuenta los Votos. mm hacer un Alianzo linuxero no es muy relevante por de cualquier forma un Rank cualquiera que sea no muestra realmente la verdadera importancia de un sitio.

Ami como usuario de galaxia Linux para lo unico que me sirbe es pa presumir a mis conocidos que estoy en el tercer lugar jajajaja y pa decir tengo mas impreciones y por ende mas visitas que varios Miembros del Planeta Linux (Solo de algunos que estan en el Rank) e incluso me acerco mucho a www.alcancelibre.org quien me decepciono pues me imaginaba que tenia muchisimas mas impreciones jajaja

Saludos

sábado 4 de octubre, 2008 @ 17:47

zodman

ya que hagan un blog de solo como joder galaxialinux ya van como 3 o 4 xD

sábado 4 de octubre, 2008 @ 18:17

Josue

Muy buen post Gnuget :), tiempo sin ver algo por el estilo, las impresiones no demuestran realmente que tanto “RANK” tienes en un “RANK”

@maop, no lo dudo

@frank666 lo usas ¿por que es simple?, ¿por que te gusta aumentar tu ego diciendo que alguien da F5 un chingo de veces  en lugar de tener datos mucho más reales y ciertos del “pequeño espacio de internet” que te lee?, chale :P, esta vez lo he visto todo .

@zodman pos aprovecho para saludar

@gnuget no odias los posts dentro de posts x) pero que realmente son un comment :).

Viva la familia y visiten mi blog :> jajajajaja u_u!"

domingo 5 de octubre, 2008 @ 01:00

Gnuget

@Josue   Gracias por el comment

domingo 5 de octubre, 2008 @ 04:14

yobageM

llegué tarde xD luego publicas el desenlace de tu experimento

domingo 5 de octubre, 2008 @ 17:20

Gnuget

Pues no va a haber desenlace  @yobageM nada mas probé que el script funciona, no es que tenga intereses  en manipular el rank

domingo 5 de octubre, 2008 @ 23:14

yobageM

Bueno, pues esperemos que este caso se solucione aunque por lo que se ha visto hasta ahora el rank no sale de una y ya está en otra.

lunes 6 de octubre, 2008 @ 14:42

garaged

El método webalizer es bueno, pero hay que tener en cuenta que solo estás clasificando por cantidad de tráfico, no por calidad de info, ni popularidad en referencias.