如何检查PHP脚本是否由Cron Tab wget执行?

时间:2014-03-04 15:56:04

标签: php crontab wget

如何检查我的PHP脚本,该脚本由wget util从 Cron Tab 执行完全,而不是从 Web浏览器由任何用户?

5 个答案:

答案 0 :(得分:2)

没有可靠的解决方案。你可以做任何事情,你的浏览器也可以做。

您最好的镜头就像发送到wget http://example.com/mysript.php?accesskey=some+really+obscure+password+that+only+you+should+know并检查脚本中的访问密钥。当然,如果有人获得密码,这种保护是没用的,但它比盲目依赖用户代理嗅探更加一致的失败。

答案 1 :(得分:0)

可能使用$argv。检查$argv[1]是否为某个值,并使用值作为参数从crontab调用脚本,如下所示:script.php argument1

答案 2 :(得分:0)

您可以在crontab中为脚本http://php.net/manual/reserved.variables.argv.php

传递一些参数

然后检查这些args,你会知道你的脚本是从命令行还是web使用。

编辑:

看到答案,让我们说清楚。

使用Wget或cURL或任何HTTP GET请求进行调用将不会通过ARGS! ARGS只会通过本地调用传递(例如:php script.php arg1 arg2)。

请不要,当你不知道它时,请停止说话,如果你不确定的话,可以自己在服务器上试试。

答案 3 :(得分:0)

你的问题是有点难以理解总线我想你不想确保wget请求PHP脚本(由cron发起)

虽然在这种情况下由cron直接调用PHP脚本可能更有效率,但您可以检查服务器的日志记录结束搜索是否匹配wget等用户代理。

答案 4 :(得分:0)

不安全的解决方案是检查User-Agent的标头:

wget -d http://www.google.com/

---request begin---
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: www.google.com
Connection: Keep-Alive

---request end---

所以你可以这样做:

<?php

$userAgent = $_SERVER['HTTP_USER_AGENT'];

if (strstr($userAgent, 'Wget')) {

   // wget Request

}