2010-04-12 87 views
3

我的網站有查詢數據庫;填寫CAPTCHA會給你5分鐘的查詢時間。還有一些自定義代碼可以檢測任何自動腳本。我這樣做,因爲我不希望有人數據挖掘我的網站。允許Google繞過CAPTCHA驗證 - 明智與否?

問題是,Google在抓取我的網站時看不到搜索結果。如果有人正在搜索查找結果中存在的字符串,我希望他們通過Google搜索來查找此頁面。

給我最明顯的解決方案是使用PHP變量$_SERVER['HTTP_USER_AGENT']繞過CAPTCHA和自定義的安全代碼,谷歌機器人。我的問題是這是否合理。然後

人們可以使用谷歌的緩存來查看查找結果,而無需填寫驗證碼,但將谷歌自己的腳本檢測方法防止其數據挖掘這些網頁嗎?

還是會有某種方式爲人們做出$_SERVER['HTTP_USER_AGENT']顯示爲谷歌繞過安全措施?

在此先感謝。

+0

我不是專家,但我會說,如果有人想挖掘你的數據庫,他們會弄清楚?爲什麼不是一個capatcha只是將每秒請求的數量限制在人性化的可能範圍內呢?像每10秒左右一次 – studioromeo 2010-04-12 11:15:03

+0

我很確定這會落入「你不能發送一件事給谷歌機器人和另一件事給用戶」的'類別'。這種「針對普通用戶而不是針對Google」的流程可能會降低您的知名度。 – Narcissus 2010-04-12 11:31:07

+0

我無法想象任何情況下,你的整體設計會很好。如果您的網站上有一些公開信息,則應該在具有永久地址的網頁上可見,並且該網頁應該列在網站導航的某個位置,以便任何搜索引擎都可以對其進行索引。任何查找定義爲臨時重新排列,不應緩存或索引。你能解釋你爲什麼使用這種方法嗎? – 2010-04-12 11:36:56

回答

4

或者是否會有某種方法讓人們使$ _SERVER ['HTTP_USER_AGENT']顯示爲Google來繞過安全措施?

肯定。用戶代理非常容易僞造。見例如User Agent Switcher for Firefox。垃圾郵件機器人也很容易將其用戶代理標頭設置爲Google bot。

雖然它仍然值得一試。我會說試試看看結果是什麼。如果你遇到問題,你可能不得不考慮另一種方式。

識別谷歌機器人的另一種方法可能是是它使用的IP範圍。我不知道該機器人是否使用了定義的IP範圍 - 可能不是這種情況,你必須找出答案。

更新:似乎有可能通過分析其IP來驗證Google Bot。從Google Webmaster Central: How to verify Googlebot

告訴網站管理員使用DNS驗證個案的基礎似乎是最好的方式去。我認爲推薦的方法是做一個反向DNS查詢,驗證名稱在googlebot.com域中,然後使用該googlebot.com名稱進行相應的正向DNS-> IP查找;例如:

主機66.249.66.1 1.66.249.66.in-addr.arpa域名指針crawl-66-249-66-1.googlebot.com。

主機crawl-66-249-66-1.googlebot.com crawl-66-249-66-1.googlebot.com地址爲66.249.66.1

我不認爲只是做了反向DNS查找已足夠,因爲欺騙者可能會將反向DNS設置爲指向crawl-abcd.googlebot.com。

+0

謝謝 - 正是我需要的。 – edanfalls 2010-04-12 11:29:41

1

$_SERVER['HTTP_USER_AGENT']參數是不是安全的,人們可以假冒的,如果他們真的想要得到你的結果。你的決定是商業決定,基本上你是希望降低安全性,並可能允許人們/機器人刮你的網站,或者你希望你的結果隱藏在谷歌。

0

一種解決方案是安全的,必須由ASN排序的小地理數據庫,阻止壞的ASN博特(代理,服務器託管服務提供商爲OVH),並允許一個小機器人(谷歌,必應,雅虎),GSM手機ASN像橙色,SFR沃達豐... 只是一個想法:)