Bagaimana cara mengidentifikasi ekstensi bahwa "telepon rumah"?

10

Apakah ada cara untuk mengidentifikasi kode yang mengirim permintaan HTTP ke server jauh di latar belakang?

Saya perhatikan bahwa ketika saya memiliki penerimaan jerawatan pada mesin pengembangan saya, banyak toko membutuhkan waktu lama untuk memuat, bahkan berjalan di localhost.

Saya punya perasaan itu karena beberapa server jarak jauh membutuhkan waktu lama untuk merespon karena koneksi saya yang tidak lancar. Saya ingin mengidentifikasi permintaan ini dan menghapusnya, karena saya khawatir mereka juga mungkin memperlambat instalasi langsung, misalnya jika server eksternal turun atau lambat ...

Louis B.
sumber
1
Harap perhatikan / periksa apakah Anda diizinkan untuk menghapus panggilan ini. Anda boleh saja diizinkan, tetapi saya telah melihat contoh di mana itu adalah salah satu persyaratan ekstensi.
David Mulder

Jawaban:

8

Kami melakukannya dengan fungsi command line (Bash) di server web mana saja di 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"
}

Singkatnya, Anda dapat memanfaatkan metode CURL / fopen di Magento (tapi itu dengan asumsi mereka repot-repot menggunakan metode inti untuk melakukannya), lebih sering daripada tidak, Anda akan menemukan modul khusus menggunakan metode terbuka file_get_contents()atau curlmetode mereka.

Anda dapat melakukan pemeriksaan cepat dengan sederhana grep(dengan asumsi kode tidak dikaburkan)

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

Dan seperti @Marius katakan di bawah ini, lihatlah modul-modul yang dikaburkan, yang mungkin menyembunyikan metode mereka dalam base64string terenkripsi

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

Satu-satunya masalah dengan metode CLI di atas, sementara sangat efektif untuk permintaan HTTP keluar, tidak berguna untuk HTTPS (mengingat lalu lintas dienkripsi), yang terbaik yang Anda dapatkan adalah IP / nama host, tetapi tidak lebih jauh.

Ben Lessani - Sonassi
sumber
2
Anda mungkin juga ingin mencari evaldan melihat apa yang terjadi pada evalfungsi - fungsi tersebut. Sebagian besar ekstensi yang digunakan di rumah telepon evalhanya agar Anda tidak menemukan nomor teleponnya dengan mudah.
Marius
2
Diperbarui untuk memasukkan regex untuk evalterlalu
Ben Lessani - Sonassi
1

Sulit untuk dijawab - jika beberapa ekstensi pihak ketiga mengirim permintaan ke server jauh, ini bisa terjadi dalam banyak cara tergantung pada bagaimana permintaan telah dibangun. Pilihan terbaik Anda untuk menemukan contoh seperti itu (meskipun berpotensi panjang lebar) adalah untuk benar-benar mempelajari kode ekstensi, sayangnya tidak ada metode satu selimut untuk mengidentifikasi hal-hal seperti ini.

Karena tidak tahu ekstensi apa yang telah Anda instal atau bagaimana ekstensi itu dibangun, saya akan menambahkan bahwa jika ekstensi telah dikembangkan dengan baik, komunikasi semacam itu seharusnya dilakukan sedemikian rupa sehingga tidak akan pernah memengaruhi kinerja frontend.

Jonathan Hussey
sumber