検出されたくないWebクローラーを検出するためのオプションは何ですか?
(リスト検出技術により、スマートステルスクローラープログラマーがより良いスパイダーを作成できることは知っていますが、スマートステルスクローラーをブロックできるのは間違いであり、ミスを犯したクローラーのみです。)
GooglebotやYahoo!などのニースクローラーについては話していない。啜る。次の場合、ニースのボットを検討します。
悪いクローラーについて話している、一般的なユーザーエージェントの背後に隠れている、帯域幅を使用しているが、見返りを何も与えない。
構築できるトラップドアがいくつかありますリストを更新しました(Chris、gsに感謝):
一部のトラップは、「良い」ボットと「悪い」ボットの両方によってトリガーされます。それらをホワイトリストと組み合わせることができます:
robots.txt
を要求しますか?robots.txt
に従っているため、別のトラップをトリガーしません。ここでもう1つ重要なことは:
。
通常の人間の訪問者として自分自身を隠そうとしているWebクローラーを自動的に検出する方法はありますか
アップデート
質問は次のとおりではありません。どのようにしてすべてのクローラーをキャッチしますか。 質問:クローラーを検出する可能性を最大限にするにはどうすればよいですか。
一部のスパイダーは本当に優れており、実際にhtml、xhtml、css javascript、VB scriptなどを解析して理解します...
幻想はありません。彼らを倒すことはできません。
ただし、一部のクローラーがどれほど愚かであるかに驚くでしょう。 (私の意見では)愚かさの最良の例は、すべてのURLを小文字にキャストしてから要求することです。
そして、さまざまなトラップドアを回避するのに「十分ではない」クローラーがたくさんあります。
しばらく前、私は小規模なホスティング会社と協力して、彼らがこれに対する解決策を実装するのを手伝いました。私が開発したシステムは、特定のIPアドレスからの過剰なアクティビティについてWebサーバーログを調べ、攻撃者をブロックするファイアウォールルールを発行しました。 http://www.iplists.com/ に基づいたIPアドレス/範囲のホワイトリストが含まれており、要求されたユーザーエージェント文字列をチェックすることにより、必要に応じて自動的に更新されます。ホワイトリストにはない正当なスパイダーは、DNS /リバースDNSルックアップを実行して、送信元IPアドレスがボットの所有者と主張されていることを確認します。フェイルセーフとして、これらのアクションは、評価が間違っている場合にアドレスをブラックリスト/ホワイトリストへのリンクとともに、電子メールで管理者に報告されました。
私はそのクライアントと6か月ほど話をしていませんが、最後に聞いたところ、システムは非常に効果的に機能していました。
サイドポイント:ヒットレート制限に基づいて同様の検出システムを実行することを考えている場合は、少なくとも1分(できれば少なくとも5分)の合計を使用してください。 1秒間に5〜10ヒットを超えるすべてのユーザーをブロックしたいこれらの種類のスキームについて多くの人々が話します。これにより、画像が多いページで誤検知が発生する可能性があります(画像が集計から除外されない限り)およびwill私のような誰かがすべてを読みたいと思う面白いサイトを見つけたときに偽陽性を生成するので、タブですべてのリンクを開いてバックグラウンドでロードします彼は最初のものを読みます。
Project Honeypot を参照してください-彼らは大規模にボットトラップを設定しています(そしてIPでDNSRBLを持っています)。
トリッキーなURLとHTMLを使用します。
<a href="//example.com/"> = http://example.com/ on http pages.
<a href="page&#hash"> = page& + #hash
HTMLでは、コメント、CDATA要素、エンティティなどで多くのトリックを使用できます。
<a href="foo<!--bar-->"> (comment should not be removed)
<script>var haha = '<a href="bot">'</script>
<script>// <!-- </script> <!--><a href="bot"> <!-->
簡単な解決策は、リンクを作成して非表示にすることです
<a href="iamabot.script" style="display:none;">Don't click me!</a>
もちろん、ソースコードを見る人の中には、それがどこにつながるかを見るためにそのリンクをたどる人もいることを期待すべきです。しかし、それらのユーザーにキャプチャを提示することができます...
もちろん、有効なクローラーもリンクをたどります。ただし、rel = nofollowを実装するのではなく、有効なクローラーの兆候を探してください。 (ユーザーエージェントのように)
リストに挙げていないことの1つは、不良クローラーを検出するためによく使用されます。
ヒット速度、優れたWebクローラーはヒットを分割するため、リクエストでサイトをあふれさせることはありません。悪いものは、次の3つのいずれかを実行します。
また、一部のオフラインブラウジングプログラムは、IPアドレスによるブロックを開始するために、使用するしきい値の種類がわからないため、多くのページを丸Sみします。
このメソッドは、fmirrorやwgetなどのミラーリングプログラムもキャッチします。
ボットが時間間隔をランダム化する場合、リンクがシーケンシャルまたは深さ優先方式でトラバースされるかどうかを確認するか、ボットが大量のテキスト(読み上げる単語など)をトラバースするかどうかを確認できます短すぎる期間。一部のサイトでは、1時間あたりのリクエスト数も制限しています。
実際、私はどこかでアイデアを聞いたが、ユーザーがキロバイト単位で大量のデータを取得した場合、ボットではないことを証明するためのキャプチャが表示されることを覚えていない。それが実装されているのを見たことがありません。
リンクの非表示に関する限り、CSS(描画順序で最初に配置する)と、場合によってはz順序を設定して、divを別のdivの下に配置できます。ボットは、それがメニューかどうかを確認するためにすべてのJavaScriptを解析することなく、それを無視できませんでした。ある程度、ボットがすべてのJavaScriptを解析しないと、目に見えないDIV要素内のリンクも無視できません。
このアイデアを完成させると、隠れた要素を潜在的に表示する可能性のある、呼び出されていないjavascriptは、ボットを解析するjavascriptのサブセットをだまします。また、実装するのに多くの労力はかかりません。
フォームについて聞いた単純なボット検出方法の1つは、隠し入力手法です。フォームを保護しようとしている場合は、完全に正当なIDを持つフォームに入力を配置します。次に、外部ファイルでcssを使用して非表示にします。または、あなたが本当に妄想的な場合は、ページの読み込み時に入力ボックスを非表示にするjqueryのようなものをセットアップします。これを正しく行うと、ボットが把握するのは非常に困難になると思います。これらのボットは、特にid = "fname"などのようなIDを非表示の入力に与えた場合に、ページ上のすべてを埋めることができることを知っています。
テストされていませんが、正規表現を作成できるユーザーエージェントの一覧を示します。そこにほとんどの方法を得ることができます:
ADSARobot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston\ Project|BravoBrian\ SpiderEngine\ MarcoPolo|Bot\ mailto:[email protected]|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|DISCo|DISCo\ Pump|DISCoFinder|Download\ Demon|Download\ Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|efp@gmx\.net|Email\ Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites\ Sweeper|Fetch|FEZhead|FileHound|FlashGet\ WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go\!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green\ Research|grub-client|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http\ generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy*Library|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkagent|Internet\ Ninja|InternetSeer\.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC\ Web\ Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac\ Finder|Mag-Net|Mass\ Downloader|MCspider|Memo|Microsoft.URL|MIDown\ tool|Mirror|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS\ FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net\ Vampire|NetZIP|NetZip\ Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa\ Foto|Packrat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|psbot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRobot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web\ Downloader|w3mir|Web\ Data\ Extractor|Web\ Image\ Collector|Web\ Sucker|Wweb|WebAuto|WebBandit|web\.by\.mail|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEbot|WWWOFFLE|x-Tractor|^Xaldon\ WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC]
から取得: http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/
実際、優れたユーザーエージェント文字列についていくのは簡単ではありません。ブラウザのバージョンは行き来します。さまざまな動作によってユーザーエージェント文字列に関する統計を作成すると、興味深いことが明らかになります。
これをどれだけ自動化できるかはわかりませんが、少なくとも1つの差別化された点です。
現在、Webサイトを分類するためにWebサイトをスキャンする会社で働いています。また、マルウェアのサイトをチェックします。
私の経験では、Webクローラーの一番のブロッカー(もちろん、IEまたはFirefox UAを使用し、robots.txtに準拠していません。Duh。)は、意図的にマルウェアをホストしているサイトです。サイトは手動でサイトを読み込んで分類し、マルウェアをチェックする必要がある人間にフォールバックするためです。
Webクローラーをブロックすることで、悪い会社に身を投じていることになります。
もちろん、それらがひどく失礼で、帯域幅を大量に消費している場合は、別の話になります。理由は十分にあるからです。
ユーザーはウェブサイト専用のクローラーではなく、幅広いクローラーに対応しています。
ステルスクローラーを作成します。個別に構築された場合、ハニーポットや隠しリンクの量は一切影響しません。特殊なクローラーを検出する唯一の実際の方法は、接続パターンを調べることです。
最適なシステムはAIを使用します(たとえば、Linkedin)AIを使用してこれに対処します。
最も簡単な解決策は、IP接続を分析し、それらのIPを単にブラックリストに登録するか、少なくとも一時的にキャプチャを提供するログパーサーを作成することです。
例えば.
IP Xが2秒ごとにfoo.com/cars/*.html
に接続しているが、他のページには接続していない場合-おそらくボットまたは空腹のパワーユーザーです。
別の方法として、保護として機能するさまざまなJavaScriptチャレンジ(Cloudflareのアンチボットシステムなど)がありますが、それらは簡単に解決可能であり、カスタムの何かを書くことができ、クローラーの努力に見合わないほど十分な抑止力になります。
ただし、偽陽性の正当なユーザーに喜んで質問し、ボットのトラフィックを防止するためにユーザーに不便をもたらすかどうかを質問する必要があります。公開データの保護は不可能なパラドックスです。
紹介を確認することもできます。紹介によってボットが停止される可能性はありません。悪い紹介は、確かにそれがブラウザではないことを意味します。
非表示のリンク(おそらくrel = "nofollow"としてマークされていますか?)
* style="display: none;" on link or parent container
* placed underneath another element with higher z-index
私はそれをしないだろう。あなたはブラックハットSEOのためにグーグルによってブラックリストに載ることができます:)