La prueba de humanidad en la Web: humans.txt

La prueba de humanidad en la Web: humans.txt

Henry Tejera
Henry Tejera Internet

Imagínate esta situación: llegas a un sitio web. Un clic aquí y otro allá. Le das una buena recorrida. Te gusta lo que ves, tanto que terminas por guardarlo en tus marcadores. Pero… ¿Quién está detrás del sitio? ¿Quién escribe todo eso?

Cuando vas a ver el nombre del autor… ¡Pum! Un genérico y apático Admin.

"By admin" meme.

Te entra la desesperación. Habías encontrado un alma gemela, esa que te entiende, piensa como vos y valida tus ideas. Pero… ¿Y si resulta que en realidad Admin no hace otra cosa más que generar «contenido» usando inteligencia artificial, desprovisto de toda humanidad? A esta altura es razonable preguntarte si hay algún humano detrás de todo esto.

En esos casos, y como último recurso, te conviene buscar la prueba de humanidad: humans.txt


Hablando con los bots

No hace tanto, te hablé de robots.txt, un estándar creado en los años 90, pensando para decirles a los bots, a que secciones de un sitio web tienen permitido acceder.

Este estándar no es más que un sencillo archivo de texto (.txt)en donde, para hacerlo funcionar, se tiene que seguir un acotado conjunto de reglas que los robots web saben cómo interpretar. 

Como ejemplo te muestro el que uso en Tecnolocuras 👉   https://tecnolocuras.com/robots.txt

Más o menos se ve así:

# so.com chinese search engine
User-agent: 360Spider
User-agent: 360Spider-Image
User-agent: 360Spider-Video
# google.com landing page quality checks
User-agent: AdsBot-Google
User-agent: AdsBot-Google-Mobile
# google.com app resource fetcher
User-agent: AdsBot-Google-Mobile-Apps
# bing ads bot
User-agent: adidxbot
# apple.com search engine
User-agent: Applebot
user-agent: AppleNewsBot
# baidu.com chinese search engine
User-agent: Baiduspider
User-agent: Baiduspider-image
User-agent: Baiduspider-news
User-agent: Baiduspider-video
# bing.com international search engine
User-agent: bingbot
User-agent: BingPreview
# bublup.com suggestion/search engine
User-agent: BublupBot
# commoncrawl.org open repository of web crawl data
User-agent: CCBot
# cliqz.com german in-product search engine
User-agent: Cliqzbot
# coccoc.com vietnamese search engine
User-agent: coccoc
User-agent: coccocbot-image
User-agent: coccocbot-web
# daum.net korean search engine
User-agent: Daumoa
# dazoo.fr french search engine
User-agent: Dazoobot
# deusu.de german search engine
User-agent: DeuSu
# duckduckgo.com international privacy search engine
User-agent: DuckDuckBot
User-agent: DuckDuckGo-Favicons-Bot
# eurip.com european search engine
User-agent: EuripBot

Lo anterior fue desarrollado específicamente para «hablar» con máquinas; y si bien el archivo sigue siendo legible para los humanos, todo lo que se salga del estándar, será ignorado por los robots. Al fin y al cabo, y a diferencia de los humanos, los bots solo «entienden» aquello para lo cual fueron programados, ¿no?

Humans.txt, los humanos detrás del telón

Parece ser cosa de humanos dejar una marca de autoría; señalar quién está detrás de algo. Y quizás eso fue lo que impulsó a un grupo de desarrolladores españoles que, en el año 2011, decidieron crear la iniciativa humans.txt.

Logo de humans.txt

Como bien lo dice el eslogan del proyecto: «Somos personas, no máquinas».

«Es fácil y rápido de crear. Porque no es intrusivo en el código. Muchas veces los propietarios de los sites no quieren que los autores firmen su web alegando que reduce el rendimiento de la misma. De esta forma puedes demostrar la autoría (que no propiedad) de forma externa, rápida, sencilla y accesible.» — humans.txt.

Pongámoslo lo más sencillo posible: humans.txt es un archivo, en formato txt, en donde los humanos que desarrollan un sitio web, pueden poner lo que quieran

¿Hay un estándar para escribir los archivos humans.txt?

Respecto a eso, en el sitio oficial del proyecto dicen lo siguiente:

¿Hay un estándar para escribir los archivos humans.txt?

Lo que hace que el proyecto sea interesante, es justamente la parte que se encuentra resaltada en la imagen anterior:  «También eres libre de añadir lo que quieras»

A diferencia de robots.txt, que tiene una sintaxis y estructura específicas que deben seguirse para que funcione correctamente con los bots, humans.txt no tiene un formato fijo.

Los creadores de un sitio pueden incluir la información que consideren relevante y útil. Comúnmente, el archivo contiene nombres, detalles del equipo, contactos, agradecimientos, información sobre las tecnologías utilizadas, entre otros elementos.

Aunque ellos hacen una recomendación de cómo podría lucir un archivo humans.txt (qué por cierto, su recomendación es correcta pero bastante aburrida), el haber añadido esa pequeña, pero potente oración, hizo posible que hoy tengamos presente el factor sorpresa cada vez que abrimos un archivo humans.txt. Y justamente porque, en muchos aspectos, los humanos somos impredecibles, creativos; algo que nos diferencia, al menos por ahora, de las máquinas.

También hay que destacar el hecho de que el archivo humans.txt, a diferencia de robots.txtno provee funcionalidad, en términos de utilidad, al sitio que lo incluye. El propósito no es otro que comunicar. De humano a humano. 

Si el archivo no existe, los sitios van a funcionar de la misma manera. No hay diferencia. Lo único que se pierde es un componente «humanizador», en un contexto global en donde se prioriza la optimización para tratar de aparecer en las primeras posiciones de cierto motor de búsqueda hegemónico.

Algunos, como Nicholas A. Ferrell, señalan que la existencia de esta iniciativa, puede ser visto como un símbolo de compromiso con la creación de contenido pensado primero para las personas y no para los motores de búsqueda.

Adopción de la iniciativa

Me contacté con uno de los creadores del proyecto para tener, de primera mano, información sobre la evolución de la iniciativa, así como también datos sobre la adopción que ha tenido humans.txt. Sin embargo, al momento de publicar este artículo, no he tenido respuesta. Así que, tengo que ser creativo para continuar con esto.

Mi primer pensamiento (abominable, por cierto), consideró la posibilidad de hacer un bot para indexar los archivos humans.txt. Sin embargo, es complicado de implementar por el volumen de sitios que habría que recorrer; aunque se podrían acotar siguiendo algún criterio, pero no sé cual.

Luego de darle unas vueltas al asunto, no me quedó otra que usar el motor de búsqueda que critique más arriba (je, soy un humano incongruente). Al fin y al cabo, tiene indexado la mayoría de los sitios que existen.

Usando el operador de búsqueda inurl:"humans.txt" ext:txt, trate de acotar los resultados a páginas web que contengan el término «humans.txt» específicamente en la URL de la página. Esto arrojó casi 4000 resultados, de los cuales no todos ellos tienen archivos humans.txt.

Hice un recorrido guardando la URL de los sitios que, efectivamente tienen el archivo.

Operador de búsqueda inurl:"humans.txt" ext:txt, para encontrar archivos humans.txt en Google.

Al final, no me resistí a la idea de hacer algún script básico para descargar los humans.txt, con el objetivo de guardarlos por si algún día desaparecen.

Habiendo guardado las URL en un archivo, el siguiente script Groovy se encarga de todo:

import java.net.URL
import java.io.File

def downloadHumansTxtFromURL(String url) {
    try {
        URL parsedURL = new URL("https://${url}")
        println(parsedURL);
        String domain = parsedURL.getHost()
        String path = parsedURL.getPath()
        String fileName = path.replaceAll('/', '_')

        File file = new File("files/${domain}${fileName}")

        if (!file.parentFile.exists()) {
            file.parentFile.mkdirs()
        }

        if (file.exists()) {
            println("The human.txt file for ${domain}${fileName} has already been downloaded.")
            return
        }

        def connection = parsedURL.openConnection()
        connection.setRequestMethod("GET")
        connection.connect()
        int responseCode = connection.responseCode

        if (responseCode == 200) {
            println("Found and downloading humans.txt from ${domain}${path}")
            def text = connection.content.text
            file.text = text 
        } else {
            println("No humans.txt found at ${domain}${path}")
        }
    } catch (Exception e) {
        println("Error accessing ${url}: ${e.message}")
    }
}

def urls = new File("sites.txt").readLines()

urls.each { url ->
    downloadHumansTxtFromURL(url)
}

¿Un robot accediendo a humans.txt?

Quizás estés detectando cierta ironía en que un bot pueda descargar archivos humans.txt, como lo demuestra el script ejecutado anteriormente.

Quizás se podría negar la indexación de humans.txt en el archivo robots.txt, con una sencilla regla, por ejemplo:

User-agent: *
Disallow: /humans.txt

Sin embargo, que no se indexe implica que los nombres de los cientos de humanos registrados en esos archivos, no aparezcan en los resultados, quitándole visibilidad. Además, no todos los bots respetan lo que dice el archivo robots.txt

El estado del arte

A partir de los humans.txt que pude encontrar, noté que algunas empresas utilizan este medio, no solo para registrar a los humanos que están detrás, sino que también como un canal para ofrecer empleo. Veamos algunos ejemplos.

Artsy

Artsy nos invita a encontrar los huevos de Pascua que escondieron, y enviarles un correo electrónico contándoles cómo los encontramos. En una de esas, podemos pasar a ser parte del equipo: https://api.artsy.net/humans.txt

Artsy humans.txt

🤔 Lo curioso de Artsy, es que tienen (al menos) 2 archivos human.txt. El otro es: https://www.artsy.net/humans.txt. En este último, nos ofrecen la promesa de un reconocimiento.

Slack

El archivo humans.txt de Slack, es el menos… humano que encontré. Te muestran un simpático robot y 0 humanos: https://app.slack.com/humans.txt

Contenido del archivo humans.txt de Slack.

Flickr

El equipo de Flickr nos habla de pandas, humanos y unicornios en su archivo:

«Flickr es la mejor manera de compartir tu vida en fotografías. Está hecho por un pequeño equipo de humanos brillantes, unicornios y pandas. Si desea ayudarnos, visite flickr.com/jobs.»

Netflix

La empresa que cambió el paradigma de cómo consumimos contenido audiovisual (¿exagero?), hace uso de un simpático ASCII art y nos deja su email para ver si hay algún laburo para nosotros: http://netflix.com/humans.txt

Contenido del archivo humans.txt de Netflix.

Coralogix

Coralogix, una empresa que no conocía hasta ahora, también aprovecha su humans.txt para decir muchas cosas: https://coralogix.com/humans.txt

Contenido del archivo humans.txt de Coralogix.

Google

El archivo de Google adolece de gracia. Supongo que si incluyeran a todos los empleados, sería un archivo bastante largo. Según la página de la empresa en Wikipedia, Google tenía, en el 2021, 139,995 empleados.

Google también utiliza humans.txt como un medio para comunicar su subdominio con oferta de empleos: http://google.com/humans.txt

«Google está construido por un gran equipo de ingenieros, diseñadores, investigadores, robots y otros en muchos sitios diferentes en todo el mundo. Se actualiza continuamente y se construye con más herramientas y tecnologías de las que podemos imaginar. Si desea ayudarnos, careers.google.com.»

Arte ASCII

La flexibilidad del formato humans.txt (¿recuerdas la frase «También eres libre de añadir lo que quieras»?), lo hace un lienzo ideal para el ASCII art; al menos eso lo demuestra la cantidad de archivos que tienen una pizca de arte, como ser:

Contenido del archivo humans.txt de awg.com.
Contenido del archivo humans.txt de rails assets.
Contenido del archivo humans.txt de Stripe.
Contenido del archivo humans.txt de un sito.
Contenido del archivo humans.txt de Tumblr.

✋ El humans.txt de Tumblr, tiene una curiosa propuesta. Podés verla acá 👉 Una historia escondida en archivos de textos.

La prensa 

Algunos de los medios de prensa más populares, también incluyeron el archivo humans.txt, por ejemplo:

😳 Si llegaste hasta acá y te estás preguntando si PornHub tiene un archivo humans.txt, la respuesta es afirmativa.

Una historia de arrepentimiento

Buscando información para armar esto que estás leyendo, me encontré con un aguerrido artículo de Jeff Starr, en donde comenta cómo bloquear el acceso al archivo humans.txt.

Así comienza la historia:

«Me desperté esta mañana con el sonido de miles de solicitudes 404 llegando al servidor. Es triste que haya niños por ahí que no tienen nada mejor que hacer que comprar un patético script de 50 dólares y luego sentarse ahí como un imbécil acosando a la gente durante horas y horas. Pero, por desgracia, así es el mundo en el que vivimos; afortunadamente, no es tan trivial bloquear todo el escaneo con solo unas pocas líneas del viejo .htaccess.». 

Si bien el ataque que se describe en ese artículo, nada tiene que ver con la iniciativa humans.txt, parece que lo marcó.

En el incidente mencionado por Starr, los casi hackers tratan de incluir http://www.google.com/humans.txt como parte de una cadena de consulta en la URL de otro sitio web, por ejemplo: http://example.com/wsk/wsk.php?wsk=http://www.google.com/humans.txt?

Esto se realiza a menudo en un intento de explotar vulnerabilidades de Inclusión de Archivos Remotos (RFI por sus siglas en inglés)

Con el paso del tiempo y luego de comprobar que en sus registros se encontraban peticiones bien intencionadas al archivo humans.txt, Starr comenzó a adoptar la iniciativa en sus proyectos, incluso se anima a recomendar un template para el archivo:

/* PROJECT */

	Site Name:   Perishable Press
	Site URL:    https://perishablepress.com/
	Created:     2005/01/01
	Standards:   HTML5, CSS3
	Components:  jQuery
	Software:    WordPress
	Plugins:     Akismet, XML Sitemaps, Broken Link Checker, et al
	Web Design:  Jeff Starr @ Monzilla Media

/* AUTHOR */

	Name:        Jeff Starr
	Nickname:    Perishable
	Title:       CEO, Monzilla Media & Perishable Press Books
	Location:    Washington State
	Site:        https://monzillamedia.com/
	Blog:        https://perishablepress.com/
	Contact:     https://perishablepress.com/contact/
	Donation:    https://m0n.co/donate

/* SOCIAL */

	About.me:    https://about.me/jeffstarr
	WordPress:   https://profiles.wordpress.org/specialk/
	Linkedin:    https://linkedin.com/in/perishable
	Twitter:     https://twitter.com/perishable
	Plugins:     https://plugin-planet.com/
	Themes:      https://perishablepress.com/perishable-wordpress-themes/
	Books:       https://books.perishablepress.com/
	Facebook:    https://www.facebook.com/jeff.m.starr
	Instagram:   https://www.instagram.com/perishable/
	YouTube:     https://www.youtube.com/channel/UCU8j5aGOd8jhk-Hyj6ZF7gw
	Tumblr:      http://perishable.tumblr.com/

/* META */

	Built with: WordPress, PHP, HTML, CSS, jQuery, JavaScript, SQL, .htaccess :)

/* THANKS */

	To everyone who shares, likes, comments, and contributes!

Extensiones de Chrome para humans.txt

No son pocas las extensiones desarrolladas para Chrome, que permiten mostrar el contenido del archivo humans.txt de un sitio. Te muestro algunas de ellas

Robots vs Humans

«Robots vs Humans» es una extensión para navegadores basados en Chromium, que te permite, de forma sencilla, ver si un sitio web tiene el archivo humans.txt

Una vez instalada la extensión, se mostrarán el contenido de los archivos robots.txt y humans.txt (siempre y cuando los mismos existan).

Extensión «Robots vs Humans».

En la pestaña fight!, vas a poder iniciar una pelea entre ellos, como se puede apreciar en el siguiente GIF:

Made by Humans

Esta extensión te permite saber, rápidamente, si el sitio en el que estás navegando tiene un archivo human.txt.

Plugin para Chrome "Made by humans".

En la descripción de este plugin, se hace mención a las ofertas de trabajo que se suelen encontrar en estos archivos:

«¿Por qué debería importarte? Porque los sitios web requieren mucho trabajo en equipo, herramientas y suerte para funcionar. Además, a veces tienen huevos de Pascua y ofertas de trabajo secretas ;)»

Humans.txt plugin

Otro plugin muy similar al anterior, cuyo objetivo (obviamente) es el mismo: mostrarte el archivo humans.txt de un sitio.

Humans.txt plugin para Chrome.

La extensión fue desarrollada por Michael Mahemoff, y fue creada mientras trabajaba en Google.

Web Humans!

Esta extensión para Firefox, simplemente agrega un enlace al archivo human.txt de la página actual en la esquina superior izquierda. 

Awesome Humans.txt

Ni lento ni perezoso, me pareció interesante disponer de un lugar en donde se vayan registrando los sitios que se adherían a la iniciativa, incluyendo un archivo humans.txt. Con ese objetivo en mente surgió https://github.com/htejera/awesome-humans.txt

Awesome Humans.txt

El funcionamiento del repositorio es muy sencillo y su gestión artesanal: se agrega una lista con los vínculos hacia los archivos humans.txt, además de un directorio que los contiene

El repositorio también contiene recursos relacionados con la iniciativa, como ser: plugins para diferentes CMS y navegadores, librerías para generar el archivo, y algunos artículos que profundizan en diferentes aspectos de humans.txt.

👉 Quizás en futuras iteraciones, se pueda automatizar la recuperación de los humans.txt, y conservar un registro histórico de sus actualizaciones.

¿Vale la pena incluir el archivo humans.txt?

Daño no te hace.

¿Algún beneficio? Quizás el de apoyar a una iniciativa con una consigna muy simple: demostrar que hay humanos «atentos» detrás de los sitios web.

Se puede argumentar, no sin razón, que ya existen mecanismos para ofrecer información sobre las personas que participan en la creación de una web, por ejemplo: las páginas de autor o de créditos.

Los SEOs suelen mencionar que las fichas de autor suman a la estrategia de posicionamiento, sobre todo a la hora de demostrar experiencia, autoridad y confiabilidad (el infame E-E-A-T). Tienen razón. Pero, aun así, hay algo en el archivo humans.txt. ¿Un espacio descontracturado que no persigue otro objetivo que decir «Acá estoy. Presto atención a este detalle anodino de demostrar humanidad, porque soy humano».? Quizás.

Hasta la próxima.


/ Súmate al boletín. No es gran cosa, pero es gratis 👇 /