UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

クローラー対策ポリシー ファイルを追加しました:

vim /usr/www/server/nginx/conf/anti_spider.conf

ファイルの内容

#Scrapyなどのツールによるクロールを無効にする if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { 
   403 を返します。 
} 
# 指定された UA または空の UAif によるアクセスを無効にします ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) { 
   403 を返します。        
} 
#GET|HEAD|POST以外の方法によるクロールを無効にする if ($request_method !~ ^(GET|HEAD|POST)$) { 
  403 を返します。 
}
#単一のIPをブロックするコマンドは#deny 123.45.6.7です
#123.0.0.1 から 123.255.255.254 までのセグメント全体をブロック#deny 123.0.0.0/8
#123.45.0.1 から 123.45.255.254 までの IP 範囲をブロックします #124.45.0.0/16 を拒否します
#123.45.6.1から123.45.6.254までのIP範囲をブロックするコマンドは#deny 123.45.6.0/24です
# 以下の IP はすべて不正です #deny 58.95.66.0/24;

構成の使用法

サイトのサーバーに導入する

# クローラー対策には /usr/www/server/nginx/conf/anti_spider.conf を含める

最後にnginxを再起動します

有効かどうかを確認する

YYSpiderのシミュレーション

λ curl -X GET -I -A 'YYSpider' https://www.myong.top
HTTP/1.1 200 接続が確立されました
HTTP/2 403
サーバー: marco/2.11
日付: 2020年3月20日金曜日 08:48:50 GMT
コンテンツタイプ: text/html
コンテンツの長さ: 146
xソース: C/403
x-リクエストID: 3ed800d296a12ebcddc4d61c57500aa2

Baiduspiderをシミュレートする

λ curl -X GET -I -A 'BaiduSpider' https://www.myong.top
HTTP/1.1 200 接続が確立されました
HTTP/2 200
サーバー: marco/2.11
日付: 2020年3月20日金曜日 08:49:47 GMT
コンテンツタイプ: text/html
変化: Accept-Encoding
xソース: C/200
最終更新日: 2020年3月18日水曜日 13:16:50 GMT
電子タグ: "5e721f42-150ce"
x-リクエストID: e82999a78b7d7ea2e9ff18b6f1f4cc84

クローラーの一般的なユーザーエージェント

FeedDemon コンテンツ コレクション BOT/0.1 (JCE 用 BOT) SQL インジェクション CrawlDaddy SQL インジェクション Java コンテンツ コレクション Jullo コンテンツ コレクション Feedly コンテンツ コレクション UniversalFeedParser コンテンツ コレクション ApacheBench cc 攻撃者 Swiftbot 役に立たないクローラー YandexBot 役に立たないクローラー AhrefsBot 役に立たないクローラー YisouSpider 役に立たないクローラー (UC Shenma Search に買収されました。このスパイダーはリリースできます!) 
jikeSpider 役に立たないクローラーMJ12bot 役に立たないクローラーZmEu phpmyadmin 脆弱性スキャンWinHttp コレクションcc 攻撃EasouSpider 役に立たないクローラーHttpClient tcp 攻撃Microsoft URL コントロール スキャンYYSpider 役に立たないクローラーjaunty wordpress ブラスト スキャナーoBot 役に立たないクローラーPython-urllib コンテンツ コレクションIndy ライブラリ スキャンFlightDeckReports Bot 役に立たないクローラーLinguee Bot 役に立たないクローラー

上記は、UA による Web サイトのクロールを防ぐための Nginx アンチクローラー戦略の詳細です。Nginx アンチクローラーの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • SpringBoot+webMagicはウェブサイトクローラーのサンプルコードを実装します
  • Springboot+webmagicはJavaクローラーJDBCとMySQLメソッドを実装します
  • Python クローラーが Taobao 製品の価格比較をクロールします (Taobao アンチクローラー メカニズム ソリューションを使用)
  • Python でアンチクローラーを回避する方法のまとめ
  • Pythonのアンチクローラー知識ポイントをクッキーで処理する方法の詳細な説明
  • Selenium-webdriver のアンチクローラー メカニズムを回避する 4 つの方法の詳細な説明
  • ウェブサイトのクローラー対策戦略
  • Python の一般的なクローラー対策戦略
  • 淘宝スライダー検証機能をスキップするSeleniumアンチクローラー実装コード
  • Python クローラーとアンチクローラーの戦い
  • Pythonのアンチクローラーはブラウザを偽装してクロールする
  • Springboot アンチクローラー コンポーネント kk-anti-reptile の使用方法

<<:  MySQLのファジークエリのような遅い速度を解決する方法

>>:  Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

推薦する

知っておくべき 7 つのネイティブ JS エラーの種類

目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...

組み込み移植 docker エラー問題 (概要)

長い移植と情報検索の期間を経て、組み込みDockerの問題を解決することができました。インターネット...

MySQL ページングパフォーマンスの調査

一般的なページング方法: 1. エスカレーター方式エスカレーター方式では通常、前のページ/次のページ...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

JSはマップを使用してdouble配列を統合します

目次序文データのシミュレーション結合されたデータ合併のアイデアコードの表示と分析最初のステップステッ...

MySQL 8.0 の新機能 - 管理ポートの使用の概要

目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

::before/:before と ::after/:after の使用に関する深い理解

パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...

vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

目次1. はじめに2. 使用1. vue2とvue3の違い2. ページ上の一部のデータはキャッシュす...

JavaScript の高度なプログラミングの基本参照型

目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...

Linux コマンドにおける Ctrl+z、Ctrl+c、Ctrl+d の違いと使い方

Linux で Ctrl+c、Ctrl+d、Ctrl+z はどういう意味ですか? Ctrl+c と ...

スクロールラグの問題を解決するためのオーバーフロースクロールの詳細な説明

序文div またはモジュールに overflow: scroll 属性を使用すると、iOS フォンで...

Vue でのルーティングガードの具体的な使用法

目次1. グローバルガード1.1 グローバルフロントガード1.2 グローバルポストルートガード1.3...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...