簡體   English   中英

如何檢查Cron Tab wget執行的PHP腳本?

[英]How can I check that PHP script execute by Cron Tab wget?

如何檢查我的PHP腳本,該腳本完全wget util從Cron Tab執行,而不由任何用戶從Web瀏覽器執行

沒有可靠的解決方案。 wget可以做的任何事情,您的瀏覽器也可以做。

最好的方法就是發送到wget到http://example.com/mysript.php?accesskey=some+really+obscure+password+that+only+you+should+know +知道並檢查腳本中的該訪問密鑰。 當然,如果有人得到了密碼,這種保護是沒有用的,但是與盲目地依靠User-Agent嗅探相比,這是更加一致的失敗點。

一種可能是使用$argv 檢查$argv[1]是否為某個值,然后從crontab以該值作為參數調用腳本,例如: script.php argument1

您可以在crontab中為您的腳本傳遞一些參數http://php.net/manual/reserved.variables.argv.php

然后檢查這些參數,您將知道是從命令行還是從Web使用腳本。

編輯:

看到答案,讓我們弄清楚。

使用Wget或cURL或任何HTTP GET請求進行的調用都不會通過Arggs! ARGS僅通過本地調用傳遞(例如:php script.php arg1 arg2)。

請,菜鳥們,當您不知道它時就停止講話,如果不確定,請在服務器上嘗試一下。

您的問題是很難理解總線,我想您可能無法確保wget(由cron啟動)請求了PHP腳本

盡管在這種情況下直接由cron調用PHP腳本可能更有效,但是您可以檢查服務器的日志記錄末尾搜索以查找與wget之類的用戶代理匹配的用戶代理。

一種不安全的解決方案是檢查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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM