Mostrando entradas con la etiqueta curl. Mostrar todas las entradas
Mostrando entradas con la etiqueta curl. Mostrar todas las entradas

miércoles, 9 de marzo de 2016

Servidores web más populares en el IBEX 35

Hace poco vimos cómo analizar las cabeceras en las comunicaciones HTTP con cURL [aquí].

Entre otras cosas, vimos el valor de la propiedad "Server", que nos informaba del servidor web y algunas tecnologías que podían estar disponibles en el servidor (PHP, ASP...).

Pues bien, hace unos días me surgió la pregunta de qué servidores web son los más populares entre las "empresas grandes". Veamos cómo podemos usar cURL y los filtros de Linux (lo mismo se puede hacer en Windows) para hacer una pequeña estadística de esto.

Primero, como "empresas grandes" he considerado las que forman parte del IBEX 35.

Si queremos ver lo que nos devuelven un par de ellas, podemos escribir algo así:

curl -I --url www.abertis.com --url www.endesa.com

Y obtendríamos esta respuesta


Fig. 1. Cabeceras de dos sitios web

Podemos filtrar sólo aquellas cabeceras que tengan la cadena "Server:"

curl -I --url www.abertis.com --url www.endesa.com |grep "Server:"


Fig. 2. Filtrando para quedarnos exclusivamente con la cabecera "Server:"

Como se puede ver, al usar cURL en pipelines nos va mostrando una estadística con los porcentajes de descargas, un medidor de progreso (cURL lo llama "Progress Meter"). De momento lo ignoraremos.

En el ejemplo anterior he puesto únicamente dos URLs, pero como me interesan las 35 URLs de las empresas del IBEX 35, lo que haré será poner estas URLs en un fichero y usar la opción -K de cURL para decirle que tome de allí las URLs.


Fig. 3. Fichero con las URLs de las empresas del IBEX 35.

Ya podemos invocar a cURL con ese fichero:

curl -I -K urls_ibex35.txt |grep "Server:"


Fig. 4. Vamos viendo los servidores, pero el medidor de progreso nos ensucia la salida

Con la opción -s (silent) podemos hacer que desaparezca el medidor de progreso.

curl -I -K urls_ibex35.txt -s |grep "Server:"


Fig. 5. La cabecera "Server" sin el medidor de progreso

Vale, ya estamos cerca del final. Podemos ver unas cuantas cosas interesantes. En primer lugar, no todos los servidores devuelven la cabecera "Server". De hecho, hay tan sólo 26 resultados, lo cual quiere decir que más de la cuarta parte de los administradores web de estas empresas (9 servidores) han decidido ocultar la información acerca del servidor web que utilizan. Además, uno de ellos devuelve una cadena en blanco, lo cual es lo mismo que ocultarlo. Total, 10 de 35 no lo indican, casi un 29%. Lo cual quiere decir que el otro 71% ven con buenos ojos publicar esta información, aunque con diferentes niveles de detalle. Y todo esto, asumiendo que no hayan falseado esta cadena para devolver un valor erróneo, cosa que también cae dentro de lo posible (aunque lo considero poco probable, la verdad).

Por último, en vez de contar a mano, hagamos un poco de "pipelining".

curl -I -K urls_ibex35.txt -s |grep "Server:" |sort |uniq -c |sort -nr


Fig. 6. Agrupando por Servidor web

Como vemos, el ganador es...(redoble de tambores...)... ¡APACHE!

Apache está disponible en 12 de los 26 sitios web que publican la información, o sea, un 46%. Una gran diferencia con respecto a la segunda posición, ocupada por diferentes versiones del servidor de Microsoft, IIS, con 4 sitios (un 15%) y en tercera posición hay un (sorprendente para mí, pues no lo conocía) servidor llamado AkamaiGHost, que tienen 3 de las 26 empresas (casi un 12%).

Bueno, me parecen unos resultados interesantes de conocer. Además, no puede uno evitar pensar enseguida en extender esta estadística a otras empresas, universidades, organismos oficiales, gobiernos... Pero eso lo dejaremos para otra ocasión.



¿Y tu organización, qué servidor web utiliza? ¿Publica su nombre, versión, tecnologías asociadas...?

viernes, 15 de enero de 2016

Cabeceras en comunicaciones HTTP con cURL

Aparte del contenido HTML que se transfiere durante una consulta a un sitio web, también se transmite otra información en forma de cabeceras, que no son más que pares del tipo "valor: resultado". Estas cabeceras normalmente no se muestran al usuario que está visitando el sitio web, pero el navegador sí que las recibe, pudiendo ignorar algunas y utilizar otras, según le interese. Es interesante echar un vistazo a esta información que, en principio, no se ve.

Echando un vistazo a lo que no se ve
Imagen: Lector con lupa, Lesser Ury. Fuente: wikipedia.

Con curl podemos ver las cabeceras que nos está enviando un servidor web usando la opción -I. Por ejemplo, para ver las cabeceras que envía el servidor de la RAE:

Fig. 1. Cabeceras del servidor web de la RAE

Como se puede ver en la Fig. 1, una de las cabeceras se llama Server. En el caso de la RAE, el valor es Apache, lo cual nos puede llevar a pensar que la RAE utiliza como servidor web Apache.

Digo "nos puede llevar a pensar" porque esto no es necesariamente así. Al fin y al cabo, el administrador del servidor web puede configurarlo para que devuelva en esa cabecera cualquier cadena de texto que quiera.

Algunos administradores, por motivos de seguridad, prefieren no informar a los visitantes del servidor web que utilizan, por ponérselo un paso más difícil a los hackers (esta técnica de ocultación tampoco contribuye demasiado, la verdad, pero algo es algo). Otros dejan tan sólo el nombre del servidor web y eliminan los números de versión (informar del nombre y versión del servidor web suele ser la opción configurada por omisión). Así, al menos, intentan dificultar que un hacker pueda explotar alguna vulnerabilidad conocida que sea específica de esa versión del servidor web o del motor de PHP, de ASP...

En este caso, podemos comprobar que el administrador del servidor web de la RAE ha eliminado la versión de la cadena que describe el servidor Apache (suponiendo que sea ese el servidor real, lo cual asumiremos por el momento).

Otras veces, en las cabeceras podemos encontrar si el servidor está utilizando PHP, ASP u otras tecnologías, incluyendo el número de versión:

Fig. 2. Cabeceras del servidor web de Endesa indicando que utiliza IIS en 
su versión 7.0 y ASP.NET (sin indicar número de versión)

Pero recordad, dado que lo que se devuelve es una cadena de texto libremente modificable, también puede darse el caso, siendo un poco más retorcido, de que se esté informando de un número de versión erróneo, a fin de despistar al visitante. Así que no conviene, como decía Microsoft en un anuncio, asumir que "por llamarse Mercedes, eso signifique que sea un coche".




Related Posts Plugin for WordPress, Blogger...