¿Cómo identificar las extensiones que "llaman a casa"?

10

¿Hay alguna manera de identificar el código que envía solicitudes HTTP a un servidor remoto en segundo plano?

Me di cuenta de que cuando tengo una recepción irregular en mi máquina de desarrollo, muchas tiendas tardan mucho en cargar, incluso ejecutando en localhost.

Tengo la sensación de que es porque algunos servidores remotos tardan mucho en responder debido a mi conexión irregular. Me gustaría identificar estas solicitudes y eliminarlas, porque temo que también puedan ralentizar las instalaciones en vivo, por ejemplo, si el servidor externo está inactivo o lento ...

Louis B.
fuente
1
Tenga en cuenta / compruebe si tiene permiso para eliminar estas llamadas. Es probable que esté permitido, pero he visto casos en los que es uno de los requisitos de las extensiones.
David Mulder

Respuestas:

8

Lo hacemos con una función de línea de comando (Bash) en cualquier servidor web respectivo en la pila,

monitor_outbound ()
{
  tcpflow -p -c -i bond0 '( port 80 or port 443 ) and ' $(ip addr list | grep -Eoh "([0-9]{1,3}\.){3}[0-9]+" | sort -u | awk '{print "src host " $1 " or"}' | tr '\n' ' ' | sed -E 's# or $##g') | grep --line-buffered -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*' | sed --unbuffered "s/^/$(date "+%b %d %T"): /g"
}

Aparte de eso, puede aprovechar los métodos CURL / fopen en Magento (pero eso es suponiendo que se molesten en usar métodos básicos para hacerlo), la mayoría de las veces, encontrará módulos personalizados que usan sus métodos abiertos file_get_contents()o curlmétodos.

Puede hacer una verificación rápida con un simple grep(suponiendo que el código no esté ofuscado)

grep -ilrE "curl|file_get_contents|fopen|Zend_Http_Client" app/code/local app/code/community

Y como dijo @Marius a continuación, eche un vistazo a los módulos ocultos, que podrían ocultar sus métodos en base64cadenas cifradas

grep -ilrE "eval[\t ]+\(" app/code/local app/code/community

El único problema con el método CLI anterior es extremadamente efectivo para las solicitudes HTTP salientes, es inútil para HTTPS (dado que el tráfico está encriptado), lo mejor que obtendrá es una IP / nombre de host, pero nada más.

Ben Lessani - Sonassi
fuente
2
También es posible que desee buscar evaly ver qué sucede en esas evalfunciones. La mayoría de las extensiones que usan los teléfonos de casa evalsolo para que no encuentres su número de teléfono fácilmente.
Marius
2
Actualizado para incluir una expresión regular para eval's también'
Ben Lessani - Sonassi
1

Difícil de responder: si algunas extensiones de terceros envían solicitudes a un servidor remoto, esto podría suceder de muchas maneras, dependiendo de cómo se haya creado la solicitud. Su mejor opción para encontrar tales instancias (aunque potencialmente sin aliento) es estudiar realmente el código de extensión, desafortunadamente no existe un método general para identificar cosas como esta.

Sin tener idea de qué extensiones ha instalado o cómo se han construido, agregaré que si la extensión se ha desarrollado bien, cualquier comunicación de ese tipo debería haberse realizado de alguna manera que nunca afecte el rendimiento de la interfaz.

Jonathan Hussey
fuente