Comment identifier les extensions qui «téléphonent à la maison»?

10

Existe-t-il un moyen d'identifier le code qui envoie des requêtes HTTP à un serveur distant en arrière-plan?

J'ai remarqué que lorsque la réception est inégale sur ma machine de développement, de nombreux magasins prennent beaucoup de temps à charger, même en s'exécutant sur localhost.

J'ai l'impression que certains serveurs distants mettent beaucoup de temps à répondre en raison de ma connexion inégale. Je voudrais identifier ces demandes et les supprimer, car je crains qu'elles ne ralentissent également les installations en direct, par exemple si le serveur externe est en panne ou lent ...

Louis B.
la source
1
Veuillez noter / vérifier si vous êtes autorisé à supprimer ces appels. Vous avez porbably sont autorisés, mais j'ai vu des cas où c'est l'une des exigences d'extensions.
David Mulder

Réponses:

8

Nous le faisons avec une fonction de ligne de commande (Bash) sur n'importe quel serveur Web respectif de la pile,

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"
}

En dehors de cela, vous pouvez tirer parti des méthodes CURL / fopen dans Magento (mais cela suppose qu'ils prennent la peine d'utiliser des méthodes de base pour le faire), le plus souvent, vous trouverez des modules personnalisés utilisant leurs méthodes open file_get_contents()ou curl.

Vous pouvez faire une vérification rapide avec un simple grep(en supposant que le code n'est pas obscurci)

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

Et comme @Marius l'a dit ci-dessous, recherchez les modules obscufqués, qui pourraient masquer leurs méthodes dans base64des chaînes cryptées

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

Le seul problème avec la méthode CLI ci-dessus est extrêmement efficace pour les requêtes HTTP sortantes, inutile pour HTTPS (étant donné que le trafic est crypté), le mieux que vous obtiendrez est une adresse IP / nom d'hôte, mais rien de plus.

Ben Lessani - Sonassi
la source
2
Vous pouvez également rechercher evalet voir ce qui se passe dans ces evalfonctions. La plupart des extensions que le téléphone utilise à la maison evalne vous permettent pas de trouver facilement leur numéro de téléphone.
Marius
2
Mis à jour pour inclure une expression régulière pour evalaussi
Ben Lessani - Sonassi
1

Difficile de répondre - si certaines extensions tierces envoient des demandes à un serveur distant, cela peut se produire de multiples façons selon la façon dont la demande a été créée. Votre meilleure option pour trouver de telles instances (bien que potentiellement de longue haleine) est d'étudier réellement le code d'extension, il n'y a malheureusement pas de méthode globale pour identifier des choses comme celle-ci.

N'ayant aucune idée des extensions que vous avez installées ou de la façon dont elles ont été construites, j'ajouterai que si l'extension a été bien développée, une telle communication aurait dû être effectuée d'une manière qui n'affectera jamais les performances du frontend.

Jonathan Hussey
la source