使用php脚本定期检查LAMP服务器主页时返回奇怪的Javascript

Posted

技术标签:

【中文标题】使用php脚本定期检查LAMP服务器主页时返回奇怪的Javascript【英文标题】:Strange Javascript is returned when using php script to periodically check LAMP server homepage 【发布时间】:2014-02-17 08:57:13 【问题描述】:

我有一个 cron 作业设置,它运行一个 php 脚本,它使用 file_get_contents() 每 5 分钟检查一次我的服务器,如果出现问题,会向我发送一封电子邮件。现在我两次收到包含相同 javascript sn-p 而不是它请求的主页的电子邮件。该脚本从不同的虚拟主机运行。

脚本正在接收的页面是:

<html>
<head>
    <title>  </title>

    <script type="text/javascript">
        function bredir(a, b, c, d, e, ldr, ifc) 
            var h, i, j;
            var f = 0;
            var g = 0;
            var k = false;
            var l = false;
            var m = [
                [300, 250, false],
                [250, 250, false],
                [240, 400, false],
                [336, 280, false],
                [180, 150, false],
                [468, 60, false],
                [234, 60, false],
                [88, 31, false],
                [120, 90, false],
                [120, 60, false],
                [120, 240, false],
                [125, 125, false],
                [728, 90, false],
                [160, 600, false],
                [120, 600, false],
                [300, 600, false],
                [300, 125, false],
                [530, 300, false],
                [190, 200, false],
                [470, 250, false],
                [720, 300, true],
                [500, 350, true],
                [550, 480, true],
                //YouTube:
                [560, 315, true],
                [640, 360, true],
                [853, 480, true],
                [1280, 720, true],
                //Vimeo:
                [400, 300, true],
                [500, 281, true],
                //Hulu:
                [480, 270, true],
                [512, 288, true],
                //metacafe:
                [440, 248, true],
                [460, 284, true],
                [540, 304, true],
                [600, 338, true],
                //Other dimensions (metacafe, myspace video, yahoo video, break.com, ustream, vevo, justin.tv, etc):
                [210, 120, true],
                [400, 300, true],
                [425, 350, true],
                [425, 360, true],
                [435, 251, true],
                [435, 271, true],
                [500, 300, true],
                [525, 295, true],
                [575, 324, true],
                [620, 389, true],
                [624, 351, true],
                [630, 381, true],
                [640, 385, true],
                [650, 368, true],
                [1000, 562, true],
                [1000, 563, true],
                [1000, 564, true]
            ];
            if (typeof window.innerHeight == "number") 
                g = window.innerHeight;
                f = window.innerWidth;
             else if (typeof document.body.offsetHeight == "number") 
                g = document.body.offsetHeight;
                f = document.body.offsetWidth;
            
            for (var n = 0; n < m.length; n++) 
                j = m[n];
                h = Math.abs(f - j[0]);
                i = Math.abs(g - j[1]);
                if (top != self) 
                    ifc = 1;
                 else 
                    ifc = 0;
                ;
                if (h <= 2 && i <= 2) 
                    k = true;
                    l = j[2]
                
            
            if(f === 0 && g === 0)
                return;
            
            if ((a != "www.facebook.com" && a != "platform.twitter.com") && (k || f < 100 && f !== 0 || g < 100 && g !== 0)) 
                if (l && self == parent) 
                    return;
                
                return "/b" + "anner.php?w=" + f + "&h=" + g + "&d=" + a + "&url=" + b + "&ref=" + c + "&view=" + d
             else if ((a == "www.facebook.com" || a == "platform.twitter.com") && (f >= 250 && g >= 60) && (k || f < 100 && f !== 0 || g < 100 && g !== 0)) 
                if (l && self == parent) 
                    return;
                
                return e + "&w=" + f + "&h=" + g + "&ldr=" + "b" + "&ifc=" + ifc;
             else if ((a == "www.facebook.com" || a == "platform.twitter.com") && (f < 250 || g < 60) && (k || f < 100 && f !== 0 || g < 100 && g !== 0)) 
                if (l && self == parent) 
                    return;
                
                return "/b" + "anner.php?w=" + f + "&h=" + g + "&d=" + a + "&url=" + b + "&ref=" + c + "&view=" + d;
             else 
                return e + "&w=" + f + "&h=" + g + "&ifc=" + ifc;
            
        
        function bdetect() 
            var loc = bredir(
                'mydomain.com',
                'mydomain.com',
                '',
                'error',
                '/main?wc=EWJoExdxBAVDBxduBAoL&url=mydomain.com'
            );

            if(typeof loc === 'undefined') 
                self.close();
                return;
            

            location.replace(loc);

        
    </script>
</head>
<body onLoad="bdetect()" style="margin: 0px;">
    <noscript>
        <iframe frameborder="0" src="/main?wc=EWJoExdxBAVDBxduBAoL&amp;url=mydomain.com"  ></iframe>
    </noscript>
</body>

我在网上发现这段代码有各种错误,但通常是 iis 错误,我不确定为什么我会得到这个而不是主页。

我在整个网络服务器上搜索了类似的东西,但一无所获。

php代码稍作修改的版本是:

$mail_these_people = "asdf@mydomain.com,asdf2@mydomain2.com"; 
$site_foot_code = 'Specific code to look for'; 

$mysite_url = "http://mydomain.com"; 
$mysite_site_title_code = "More specific txt to look for"; 

$mysite_code = file_get_contents($mysite_url); 

if(strpos($mysite_code,$mysite_site_title_code)===false || strpos($mysite_code,$site_foot_code)===false) 
 
        echo "mysite Down\n"; 
        if(mail($mail_these_people,"mysite not showing up correctly!","This is what we got instead:\n\n".$mysite_code)) 
                echo "Mail sent successfully\n"; 
        else 
                echo "Mail failded!\m"; 
 
else 
        echo "mysite Up\n"; 

【问题讨论】:

您的 ISP 是否有时会将请求重定向到其他站点?这听起来像是在您的请求和目标站点之间注入了一些东西。 当你直接运行php时,它会下载正确的页面吗? Patrick:当我在浏览器中浏览到该页面时以及该检查脚本每隔一次运行时,它都可以正常工作。在脚本运行了几个月的情况下,我只显示了两次 javascript。 Wolfgang:脚本在我从托管公司租用的灯 vps 上运行。当我得到 javascript 响应时,我可以在 apache 访问日志中看到连接和成功 200。 JS 看起来像是某种横幅引擎,连接到 Facebook 和 Twitter,这对您来说意味着什么吗?否则,您的服务器显然会响应您不知道的内容,这会有点令人担忧。 【参考方案1】:

我注意到了同样的事情,它似乎是 OpenDNS 在找不到域名的情况下发出的重定向页面。以下是 Fiddler 捕获的标头:

HTTP/1.0 200 OK
Cache-Control: no-cache, must-revalidate
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Content-Type: text/html; charset=utf-8
Pragma: no-cache
Content-Length: 5444
Connection: close
Date: Fri, 14 Feb 2014 13:36:22 GMT
Server: OpenDNS Guide

【讨论】:

以上是关于使用php脚本定期检查LAMP服务器主页时返回奇怪的Javascript的主要内容,如果未能解决你的问题,请参考以下文章

将数据推送到页面而不定期检查?

php - 检查贝宝定期付款状态[关闭]

返回 Jquery 站点主页时无法访问脚本

使用 Shell 脚本定期检查 MySQL 服务是否正常运行

使用 Shell 脚本定期检查 MySQL 服务是否正常运行

使用 Shell 脚本定期检查 MySQL 服务是否正常运行