188_7d3f4775af1ff15c44b29f1ea1a99b51_habitaclick.png

GlobexCorp

wpe.jpg

Get Firefox

Descarga Firefox 3

Sponsor

RSS

Places

Tagboard

zer0: =) Saludando
Bucio: ¬¬ estuve contigo en el kinder
<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

My Plurk

Photo meme

1. Take a picture of yourself right now.

2. Don’t change your clothes, don’t fix your hair…just take a picture.

3. Post that picture with NO editing.

4. Post these instructions with your picture.

Proyecto pepon

Desde hace una semana a la fecha he venido trabajando en un pequeño proyecto  al cual he bautizado pepon, pepon nace de la necesidad de tener acceso a un traductor   y evitarme la pereza de ir a abrir  el traductor de google cada vez que lo necesite, la idea inicial era crear un pequeño script para usarlo en la terminal pero esa idea fue evolucionando hasta convertirse en lo que hoy es pepon.

Pepon es un pequeño (si es pequeño por que aun no sabe hacer muchas cosas)  robot de gtalk escrito en python que actualmente sabe hacer lo siguiente:

  • Generar la tinyUrl de una dirección  web  ( tinyurl http://gnuget.org)
  • Generar el md5 hash de una cadena  (md5 cadena_De_Texto)
  • Trata de descifrar la cadena  de un hash previamente dado (unmd5 d8578edf8458ce06fbc5bb76a58c5ca4 )
  • Traducir en todos los lenguajes que traduce translate.google.com  (translate en-es  hello world)

Actualmente algunos amigos y yo estamos trabajando en implementarle mas cosas a  este pequeño robot así que con el tiempo ira creciendo, si quieres tener a este robot en tu lista de contactos de google talk su dirección es esta:

Si tienes  alguna sugerencia de alguna buena característica que te gustaría que pepon aprendiera a hacer deja un comentario  e intentaremos implementarla.

Igualmente nos gustaría que pepon tuviera  un nombre mas acorde  a lo que es (un acronimo relacionado con un robot quizá)  así que igual  cualquier sugerencia es bien recibida.

Nuevo tema en el blog

280_7c117bfc871f02f28bd2f0a6172ad373_new_theme.png

Cortesía de  Blacknash

LIDSOL INVITA

280_65671bfac28a2f6fdfc855023e73a035_publicidad.png

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

Páginas: [1] 2 3 ... 37 38 39