No hace mucho leí en un blog que el uso de WordPress superaba el 30%, pregunté ¿eso era cierto? Por ello seguí la fuente que mencionaba, la sorpresa fue enorme al comprobar que bajaba a un 27% y además hacia referencia como origen del dato a una tercera página que vendía plantillas de WordPress. Dentro del artículo nadie hacía un comentario al respecto. En ese preciso momento es cuando me picó la curiosidad, ¿por qué no investigar hasta sacar un dato paralelo o influenciado? Pero antes quería encontrar de donde salían tanta rotundidad, ¿por qué todos daban por cierto el dato? Navegué por tipo de páginas (especializadas en SEO, desarrollo, creación de extensiones, foros…). Prácticamente todas jugaban la cifra del 27% al 32%, pero si seguía tirando del hilo siempre acababa en el mismo estudio: W3Techs.
Al entrar en el estudio, o web que habría realizado el análisis, me topé con un anuncio para contratar hosting en WordPress… que conveniente, ¿verdad?. Y al leer los datos anunciaba que el uso de WordPress a nivel mundial era de un 34,8% , ¡incluso mayor que otro sitios! Pero con un matiz que nadie mencionaba, el título de la tabla se presenta como: “Most popular content management systems” (Los sistemas de gestión de contenidos más populares). Solo se centra en los CMSs, ignorando las páginas realizadas a medida o generadas por algún otro lenguaje.
Continué explorando el informe, y leí la metodología de W3Techs que usa para alcanzar esa cifra. Algunos puntos eran cuestionables.
- No cuentan subdominios.
- No analizan todas las páginas de un sitio, sino lo que consideran razonables.
- Ignoran algunas páginas realizas en Javascript.
- Afirman que usan una base de datos de 10 millones de dominios sacadas directamente de Alexa todos los meses, pero cuando vas a la fuente no existe enlace alguno. Aunque es cierto que por medio del
API Alexa Top Sites
es posible acumularlos por el módico precio de 25.000$ (22.386€ aprox). ¿Pagan esa cantidad cada mes? Alexa proporciona una capa gratuita de 1 millón, más viable para el estudio.
En este punto fue cuando me remangué y decidí construir mi estudio para calcular el uso real de WordPress a nivel mundial.
Técnicas para revelar si un sitio esta realizado en WordPress
Primero me asesoré para discernir si un sitio estaba realizado en el famoso CMS o en cualquier otro. En general, hay 3 maneras:
- Robots.txt.
Los sitios en WordPress poseen una estructura de carpetas, y no todas ellas quieren que sean visibles por los navegadores. Para ocultarlo de los buscadores se utiliza un archivo llamado robots.txt
con alguna de las siguientes líneas:
Disallow: /wp-content/cache/
Disallow: /wp-includes/
Disallow: /wp-admin/
Se puede apreciar, por ejemplo, en el Blog de playstation.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
O en Geeks for geeks.
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Estas rutas no tienen porque estar siempre presentes, aunque sea una buena práctica. En ciertos casos en conveniente mover todo a otro sitio con otros nombres.
- Cookie test para login.
Si se realiza una petición HTTP a la página /wp-login.php
de cualquier sitio WordPress devolverá una cookie llamada wordpress_test_cookie
.
set-cookie: wordpress_test_cookie=WP+Cookie+check;
La pega a esta estrategia es que este fichero, que esta en la raíz del hosting, puede ser redireccionado o bloqueado por medio del servidor web.
- Meta etiqueta generator.
Si no se le dice lo contrario, WordPress genera en el código fuente una etiqueta que indica su versión. Por ejemplo en el blog de playstation:
<meta name="generator" content="WordPress 5.2.4" />
Y en Geeks for geeks:
<meta name="generator" content="WordPress 4.9.8" />
Si en el código HTML esta presente un <meta>
que contiene WordPress
podremos afirmar que el sitio esta realizado con esa tecnología. A no ser que esté suprimida, lo cual es posible con algunas configuraciones. O incluso, algunos frameworks como Genesis la quitan por defecto sin preguntar.
No existe una forma incuestionable para saber si un sitio esta montado en WordPress aunque se puede intuir por algunas de las pistas ya mencionadas.
Código que analiza todos los dominios
La colección más amplia y fiable de dominios que encontré fue la lista gratuita de Top sites Alexa, la misma fuente que dice utilizar W3Techs.
Realicé un pequeño script en Bash que comprobaba los 3 puntos anteriores. Si uno de ellos se cumplía, podría asumir que era WordPress.
#!/bin/bash
# HOW TO USE IT
# ./is-wordpress [domain]
# EXAMPLE
# ./is-wordpress https://blog.us.playstation.com/
# PRINT true
# Globals variables
DOMAIN="$1"
method1=false
method2=false
method3=false
##
############## Method 1: searching in robots.txt
##
# Local ariables
ROBOTS_TXT="$(curl -L -s $DOMAIN/robots.txt)"
SEARCH_DISALLOW="wp-admin"
DISALLOW_STRING="Disallow:"
# Check if contains string: Disallow: wp-admin
if [[ ${ROBOTS_TXT,,} == *${DISALLOW_STRING,,}*${SEARCH_DISALLOW,,}* ]]; then
method1=true
fi
##
############## Method 2: Search for the test cookie on the login page
##
# Local variables
HEADERS_LOGIN="$(curl -L -s -I $DOMAIN/wp-login.php)"
COOKIE_SEARCH_LOGIN="set-cookie: wordpress_test_cookie=WP+Cookie+check"
# Check if contains cookie in HEADERS, ignore case
if [[ ${HEADERS_LOGIN,,} == *${COOKIE_SEARCH_LOGIN,,}* ]]; then
method2=true
fi
##
############## Method 3: Search in HTML the WordPress Meta Generator
##
# Local vriables
HTML="$(curl -L -s $DOMAIN)"
REGEX_SEARCH_GENERATOR="<meta.*generator.*wordpress.*>"
# Check if contains meta generator WordPress
if [[ ${HTML,,} =~ $REGEX_SEARCH_GENERATOR ]]; then
method3=true
fi
##
############## Echo result
##
if $method1 || $method2 || $method3 ; then
echo true
else
echo false
fi
Si quieres utilizarlo lo he alojado en un repositorio de Github con algunas automatizaciones y comentarios, como por ejemplo recorrer todo el CSV y comprobar dominio por dominio.
Resultados finales
El analisis y filtrado de los datos fue lento, pero después de muchos días se llegó al resultado final: 29%.
Como primera conclusión puedo sugerir que hay intereses económicos para que la cifra sea la mayor posible, las pruebas que me encuentro son bastantes endebles al igual que mi método. Si uno quiere, puede ocultar en su totalidad que su sitio esta realizado en WordPress, al igual que puede dejar rastros falsos de lo contrario. Sin embargo no se duda al dar una cifra con cierta rotundidad como si fuera la ley. El mensaje ha calado profundamente entre los desarrolladores, hay como una afirmación generalizada de que un tercio de internet esta montado sobre WordPress y no se duda de ello.
A pesar de todo un 29% es un número importante, una quinta parte de los dominios con más visitas. No olvidemos que es una herramienta increíblemente versátil, amplia y que da de comer a muchísimas personas. Sin embargo, no deberíamos olvidar el dicho: “Cuando sólo tienes un martillo, todo se parece a un clavo”. La misma curiosidad que me ha dado el impulso para encontrar mis propias respuestas es igual de poderosa para irrumpir en otras técnicas y lenguajes de Back-End (Python, Ruby, Node, Go…), es importante utilizar uniformemente las tecnologías. Si no puedes desprenderte de WordPress, te posee.
Para finalizar agradecer la lectura del artículo, Si encuentras algún dato o fuente es errónea, por favor indícamelo en los comentarios para subsanarlo.
Anécdotas
- Probé varios clientes HTTP para descargar el HTML, y todos fallaban por alguna razón.
clj-http
caía sin motivos aparentes y sin mensajes de log en determinadas circunstancias. Nada me ha ido tan rápido y eficiente como el viejocurl
. - Ciertas páginas no me dejaban entrar si usaba un
User Agent
de un navegador conocido. Tuve que disfrazarme de Firefox, ¿que persona cuerda no lo ama? - Analizar todas las rutas costó cerca de 20 días en un VPS trabajando día y noche.
- Encontré algunos servidores que justo en el momento que pasaba estaban caídos. Tuve que volver a analizarlos en una segunda pasada.
{{ comments.length }} comentarios