使用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&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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Shell 脚本定期检查 MySQL 服务是否正常运行