Estudio sobre el uso real de Wordpress 2019

5 minutos

WordPress

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 Clojure que recorriera toda la base de datos, representado con un CSV, capaz de analizar dominio por dominio.

(ns wordpress-used.core
  (:require
   [clojure.data.csv :as csv]
   [clojure.java.io :as io]
   [clojure.java.shell :as shell]
   ) (:gen-class))

(defn request
  "Make a request by means of curl"
  [url]
  (shell/sh "curl" "-L" "-m" "5" "-H" "User-Agent: Firefox" url))


(defn read-csv-domains
  "Read CSV file with all domains"
  [url]
  (with-open [reader (io/reader (io/resource url))]
    (doall (csv/read-csv reader))))

(defn wordpress?
  "Check if a web page is generated with WordPress"
  [url]
  (let [response (request url)]
    (every? identity [(re-find (re-pattern "meta.*generator.*WordPress") (:out response))])))

(defn -main
  [& args]
  (let [;; Name of the file containing the CSV with the domains
        file-csv          "top-1m.csv"
        ;; Get domains from CSV
        domains-csv       (vec (read-csv-domains file-csv))
        ;; Filters leaving those that have not been checked
        domains-unchecked (vec (filter #(= (get % 2) "nil") domains-csv))]
    ;; List with domains with a boolean indicating if it is generate or not in WordPress
    (prn "Start")
    (doseq [domain-data domains-unchecked] (let [line (get domain-data 0)
                                                 url  (get domain-data 1)]
                                             ;; Show info
                                             (prn (str line " " url))
                                             ;; Edit domains-csv with check WordPress
                                             (shell/sh "sed" "-i" (str line "s/nil/" (wordpress? url) "/g") (str "resources/" file-csv))))
    (prn "Complete")))

Si quieres utilizarlo lo he alojado en un repositorio de Github con algunas automatizaciones y comentarios.

Resultados finales

El analisis y filtrado de los datos fue lento, pero después de muchos días se llegó al resultado final: 19%.

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 19% 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 viejo curl.
  • 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.

Tal vez también te interese...