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

推薦する

MySQLクエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

Ubuntu 16.04 カーネルのアップグレード手順

1. 環境仮想マシン上で実行されているUbuntu 16.04では、コマンドuname -rを使用し...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

MySQL データベースの最適化に関する 9 つのヒント

目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...

nginxカスタム変数と組み込み定義済み変数の使用

概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...

MySQLインデックスの使用に関するヒントと注意事項

1. インデックスの役割一般的なアプリケーション システムでは、読み取りと書き込みの比率は約 10:...

React 高階コンポーネント HOC 使用方法の概要

HOCを紹介する一文高階コンポーネント (HOC) とは何ですか? 公式ドキュメントによると、「高階...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

Navicat Premium15 でクラウド サーバーに接続する際のデータベースの問題と落とし穴

クラウドサーバーを使用するとデータベースに接続できる場合もありますが、Navicat Premium...

CSS3アニメーション属性に基づくWeChatタップアニメーション効果の実装

最近人気のWeChatタップ機能を見て、CSS3アニメーションを見直し、このボックスシェイクアニメー...

バックアップ データをインポートするときに innodb_index_stats がエラーを報告する場合の主キー競合の解決方法

障害の説明percona5.6、mysqldump フルバックアップ、バックアップデータのインポート...

vue+elementUI で埋め込みテーブルを実装する方法の例

大学 4 年生のときのインターンシップ中に、表内のデータの番号をクリックすると、そのデータの下に新し...

Vant Uploaderは1枚以上の写真をアップロードするコンポーネントを実装します

この記事では、1枚以上の写真をアップロードするためのVant Uploaderコンポーネントを紹介し...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

ブートストラップ学習体験のまとめ - CSS スタイル デザイン共有

プロジェクトのニーズにより、ブートストラップ フレームワークを慎重に学習する予定です。以前から少しは...