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:
# -*- 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


ahuevo
A ver cuánto tarda en venir a darte tu cátedra de “VISITAS NO SON VISTAS” xDDD
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
ya que hagan un blog de solo como joder galaxialinux ya van como 3 o 4 xD
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!"
@Josue Gracias por el comment
llegué tarde xD luego publicas el desenlace de tu experimento
Pues no va a haber desenlace @yobageM nada mas probé que el script funciona, no es que tenga intereses en manipular el rank
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.
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.