我有一個包含大量產品和價格數據庫的網站。
我一直在爲價格而曲折。防止來自我網站的cURL請求
我想過用<noscript>
標籤來防止它,但我所能做的就是隱藏內容,機器人仍然能夠刮掉我的內容。
是否有一種運行JS測試的方法,以查看js是否被禁用(檢測殭屍程序)並將這些請求重定向,可能在黑名單中。
這樣做會阻止谷歌通過我的網站?
我有一個包含大量產品和價格數據庫的網站。
我一直在爲價格而曲折。防止來自我網站的cURL請求
我想過用<noscript>
標籤來防止它,但我所能做的就是隱藏內容,機器人仍然能夠刮掉我的內容。
是否有一種運行JS測試的方法,以查看js是否被禁用(檢測殭屍程序)並將這些請求重定向,可能在黑名單中。
這樣做會阻止谷歌通過我的網站?
由於CURL只是一個html請求,您的服務器無法區分,除非您限制某些URL的訪問權限或檢查引薦網址,並針對本地未引用的任何內容實施過濾器。如何建立一個檢查一個例子可以在這裏找到:
發送請求時,我可以使用任何我想要的引用程序。這只是另一個標題 – PeeHaa
我沒有說它不可能欺騙,我說這是一個可行的選擇,也是少數幾個如果不只是過濾傳入的http請求的方法之一。不知道爲什麼人們投下一些有效和有用的建議。爲什麼不發佈更好的解決方案,而不是進行投票。 – Silvertiger
那麼答案是不正確的。正確的答案是:你不能。 – PeeHaa
您可以通過檢查User Agent
塊在PHP unspoofed cURL
請求。據我所知,沒有一個搜索引擎抓取工具在用戶用戶代理字符串中捲曲,所以這不應該阻止它們。
if(stripos($_SERVER['HTTP_USER_AGENT'],'curl') !== false) {
http_response_code(403); //FORBIDDEN
exit;
}
注意改變User Agent
字符串cURL
請求是微不足道的,所以有人可以很容易地繞過這一點。
您將需要創建一個塊列表和訪問內容分塊的IPS,包括來源和用戶代理的所有頭可以捲曲用簡單的下面的代碼
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, 'http://www.yoursite.com?data=anydata');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.yoursite.com');
$html = curl_exec($ch);
上面會設定很容易使curl請求看起來像來自使用Firefox的瀏覽器的正常連接。
您可以在沒有'userAgent'的情況下拒絕請求(但是cURL可以繞過這個),也可以將Google,Facebook,Twitter機器人userAgent等列入白名單。 –
只要數據是公開的,確實沒有簡單的自動化解。機器人總是可以重寫,繞過你的支票。 –
爲什麼不使用htaccess按IP或位置阻止殭屍程序? –