Come identificare gli interni che "telefonano a casa"?


10

Esiste un modo per identificare il codice che invia richieste HTTP a un server remoto in background?

Ho notato che quando ho una ricezione scadente sulla mia macchina di sviluppo, molti negozi impiegano molto tempo a caricarsi, anche in esecuzione su localhost.

Ho la sensazione che alcuni server remoti impieghino molto tempo a rispondere a causa della mia connessione instabile. Vorrei identificare queste richieste e rimuoverle, perché temo che potrebbero anche rallentare le installazioni live, ad esempio se il server esterno è inattivo o lento ...


1
Nota / controlla se ti è permesso rimuovere queste chiamate. Probabilmente hai il permesso, ma ho visto casi in cui è uno dei requisiti di estensione.
David Mulder,

Risposte:


8

Lo facciamo con una funzione da riga di comando (Bash) su qualsiasi rispettivo server Web nello stack,

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

In mancanza di questo, si può sfruttare il ricciolo / metodi fopen in Magento (ma questo è supponendo che si preoccupano di utilizzare metodi di base per farlo), il più delle volte, si trovano moduli personalizzati usano la loro apertura file_get_contents()o curlmetodi.

Puoi fare un rapido controllo con un semplice grep(supponendo che il codice non sia offuscato)

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

E come ha detto @Marius di seguito, dai un'occhiata ai moduli oscurati, che potrebbero nascondere i loro metodi in base64stringhe crittografate

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

L'unico problema con il metodo CLI sopra è estremamente efficace per le richieste HTTP in uscita, è inutile per HTTPS (dato che il traffico è crittografato), il migliore che otterrai è un IP / nome host, ma niente di più.


2
Puoi anche cercare evale vedere cosa succede in quelle evalfunzioni. La maggior parte delle estensioni che il telefono di casa usa evalsolo per non trovare facilmente il loro numero di telefono.
Marius

2
Aggiornato per includere una regex per eval'troppo
Ben Lessani - Sonassi

1

Difficile rispondere: se alcune estensioni di terze parti inviano richieste a un server remoto, ciò potrebbe accadere in molti modi a seconda di come è stata creata la richiesta. La tua migliore opzione per trovare tali casi (anche se potenzialmente prolisso) è effettivamente studiare il codice di estensione, purtroppo non esiste un metodo generale per identificare cose come questa.

Non avendo idea di quali estensioni hai installato o di come siano state costruite, aggiungerò che se l'estensione è stata sviluppata bene, qualsiasi comunicazione di questo tipo avrebbe dovuto essere fatta in modo tale da non influenzare mai le prestazioni del frontend.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.