如何识别“电话回家”的分机?


10

有没有办法识别在后台将HTTP请求发送到远程服务器的代码?

我注意到,当我在开发机上收到不满意的邮件时,许多商店都需要很长时间才能加载,即使在本地主机上运行也是如此。

我的感觉是,由于我的连接不连贯,一些远程服务器需要很长时间才能响应。我想识别并删除这些请求,因为我担心它们还会降低实时安装的速度,例如,如果外部服务器关闭或速度缓慢...


1
请注意/检查是否允许您删除这些电话。您可能被允许,但我看到了一些实例,其中它是扩展要求之一。
大卫·穆德

Answers:


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
奔Lessani - Sonassi

1

很难回答-如果某些第三方扩展将请求发送到远程服务器,则可能会根据请求的构建方式以多种方式发生。找到此类实例的最佳选择(尽管可能很费劲)是实际研究扩展代码,但不幸的是,没有一种通用的方法可以识别这种情况。

不知道您安装了什么扩展或如何构建它们,我会补充说,如果扩展开发得很好,则任何此类通信都应该以某种方式进行,而这绝不会影响前端性能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.