我們在工作時在這裏安裝了Drupal7的MU(多站點),並且正在嘗試 暫時阻止我們收到的機器人羣,直到我們有機會加載我們的 內容。如果我們在Xpath中找到某個 條件(如果DOM沒有形成,這也可以作爲strpos/preg_match來完成),我寫了一個快速且髒的腳本來發送503頭文件。在頁面加載前捕獲Drupal7 DOM內容進行比較
爲了讓球滾動,雖然我需要通過之前的過濾器,以找出如何可以
A)劫持Drupal7引導,並通過該過濾器拉下面
B中的所有內容)使用ob_flush內容內容加載
值得一提的我們使用一個被稱爲域訪問模塊,我相信 使我在首位這個瘋狂的追逐。我知道這樣一個事實,它沾染了 與相當多的文件...
我遇到的問題是確切地搞清楚我在哪裏可以趕上內容 在?應該可以將流推入一個變量,然後釋放它,正確嗎?我認爲Drupal7中的index.php會成爲犯罪嫌疑人,但我對我在哪裏或如何捕獲內容感到困惑。這裏的腳本, ,希望有人能指出我在正確的方向。
//error_reporting(-1);
/* start query */
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->Load($_SERVER['PHP_SELF']);
$xpath = new DOMXPath($dom);
//if this exists we aren't ready to be read by bots
$query = $xpath->query(".//*[@id='block-views-about-this-site-block']/div/div/div");
//or $query = 'klat-badge'; //if this is a string not DOM
/* end query */
if(strpos($query) !== false) {
//require banlist
require('botlist.php');
$str = strtolower('/'.implode('|', array_unique($list)).'/i');
if(preg_match($str, strtolower($_SERVER['HTTP_USER_AGENT']))) {
//so tell bots we're broken
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
exit;
}
}
這給了我一個很好的起點,還有值得一看的東西,謝謝。 – ehime
由於某種原因,我無法獲取模塊捕獲內容=(是否有我應該尋找的變量或某個應該緩衝的流? – ehime