「フォンホーム」の内線を識別する方法


10

バックグラウンドでリモートサーバーにHTTPリクエストを送信するコードを特定する方法はありますか?

開発マシンでレセプションがむらがあると、localhostで実行している場合でも、多くのショップで読み込みに時間がかかることに気付きました。

一部のリモートサーバーが接続が不安定なために応答に時間がかかるためだと感じています。これらのリクエストを特定して削除したいと思います。たとえば、外部サーバーがダウンしているか遅い場合など、ライブインストールが遅くなるのではないかと心配です。


1
これらの通話の削除が許可されているかどうかを確認してください。あなたはたぶん許可されますが、私はそれが拡張要件の1つである場合を見てきました。
David Mulder

回答:


8

スタック内のそれぞれのWebサーバーでコマンドライン(Bash)関数を使用してそれを行います。

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

それ以外にも、MagentoのCURL / fopenメソッドを利用できます(ただし、コアメソッドを使用する必要があると想定しています)。多くの場合、カスタムモジュールはopen file_get_contents()またはcurlメソッドを使用します。

簡単な方法で簡単なチェックを行うことができますgrep(コードが難読化されていない場合)

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

そして、@ Mariusが以下で言ったように、base64暗号化された文字列でメソッドを隠す可能性がある、難読化されたモジュールを探します

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

上記のCLIメソッドの唯一の問題は、アウトバウンドHTTPリクエストに対して非常に効果的であり、HTTPSには役に立たない(トラフィックが暗号化されている場合)、得られる最善の方法はIP /ホスト名ですが、それ以上のものはありません。


2
またeval、これらのeval関数で何が発生するかを調べて確認することもできます。自宅に電話をかけるほとんどの内線eval番号は、電話番号を簡単に見つけることができないためです。
マリウス

2
以下のための正規表現を含むように更新evalあまりにS」
Sonassi -ベンLessani

1

答えが難しいもの-サードパーティの拡張機能がリモートサーバーにリクエストを送信している場合、これはリクエストの作成方法に応じてさまざまな方法で発生する可能性があります。そのようなインスタンスを見つけるための最良のオプション(潜在的に時間がかかる可能性があります)は、実際に拡張コードを調査することです。残念ながら、このようなことを識別するための包括的なメソッドはありません。

インストールした拡張機能やそれらがどのように構築されたかがわからないので、拡張機能が適切に開発されていれば、そのような通信はフロントエンドのパフォーマンスに影響を及ぼさないような方法で行われているはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.