如果沒有配置,cURL和Wget會爲其請求使用自定義»用戶代理«字符串。例如,curl/7.47.0
或Wget/1.17.1 (linux-gnu)
。你可以在https://requestb.in上測試這個easiliy。
幾個應用程序可能會訪問請求標頭中的用戶代理字符串。在PHP中,它可用於$_SERVER['HTTP_USER_AGENT']
變量。
所以檢測捲曲或Wget的請求,並提供不同的內容,你可以使用
<?php
// Catch cURL/Wget requests
if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/^(curl|wget)/i', $_SERVER['HTTP_USER_AGENT'])) {
echo 'Hi curl user!';
}
else {
echo 'Hello browser user!';
}
?>
在我的應用我發現捲曲請求,然後讓在if
循環過程die()
。所以如果它只是一個瀏覽器,條件不匹配並執行下面的所有PHP代碼。
如前所述,cURL和Wget都允許用戶設置一個任意的用戶代理。但對於所要求的服務,此解決方案已足夠。
如果您的用戶足夠聰明以實現自動化,那麼請爲此提供一個不同的URL?即通過提供API來分開用於人類消費的頁面和用於軟件消費的頁面。 –
他不應該被要求足夠聰明;)一個示例服務是ifconfig.io→通過瀏覽器請求:很多信息。通過cURL請求:僅限IP地址。我想要達到相同的有用行爲。 – pixelbrackets