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 に完全に準拠していない理由

推薦する

Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法

> MySQL 5.7 クラスタ マスターとスレーブをデプロイする (テストのみ)イメージバー...

30分でReact Hooksを包括的に理解できます

目次概要1. 使用状態1.1 3つの概念に関する質問1.2 例1.3 注記2. リデューサーを使用す...

Hadoop 3.2.0 クラスターの構築に関する一般的な考慮事項

1つのポートの変更バージョン 3.2.0 では、ネームノード ページ ポートは 9870、データノー...

WebpackはCSSファイルを読み込み、その設定方法

webpackはCSSファイルとその設定をロードします複数の CSS ファイルを作成した後、HTML...

HTML における DTD の使用法の概要

DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...

Linuxのwatchコマンドの使用

1. コマンドの紹介watch コマンドは、指定されたコマンドを定期的に実行し、実行結果を全画面に表...

CSS3 と JavaScript を使用して Web カラー ピッカーのサンプル コードを開発する

この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...

threejs でリアルタイムポリゴン屈折を実装する方法

目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...

Tomcat でのコネクタ構成

JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...

Divの境界と透明度に関する設定

フレーム:スタイル=”border-style:solid;border-width:5px;bor...

vue3 のストアを使用してスクロール位置を記録する例

目次全体的な効果コンテナのスクロールイベントをリッスンするストア内の構成ページが戻るときのスクロール...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

MySQL 重複インデックスと冗長インデックスの例の分析

この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参...

MySQL5.7 並列レプリケーションの原理と実装

データ操作とメンテナンスに少しでも知識のある人なら、MySQL 5.5 以前では再生に単一の SQL...