Nginx サーバーで Web クローラーをブロックおよび禁止する方法

Nginx サーバーで Web クローラーをブロックおよび禁止する方法

通常、すべての Web サイトは、多くの非検索エンジン クローラーに遭遇します。これらのクローラーのほとんどは、コンテンツ収集に使用されるか、初心者によって作成されます。検索エンジン クローラーとは異なり、非検索エンジン クローラーには頻度制御がなく、多くのサーバー リソースを消費することが多く、帯域幅の無駄になります。

実際、Nginx は User-Agent に基づいてリクエストを簡単にフィルタリングできます。要件を満たさないクローラー リクエストをフィルタリングするには、必要な URL エントリ位置で単純な正規表現を使用するだけです。

位置 / {
  $http_user_agent の場合、"python|curl|java|wget|httpclient|okhttp") {
    503 を返します。
  }
  # その他の通常の構成...
}

注: 変数$http_user_agentその場所で直接参照できる Nginx 変数です。 ~* は大文字と小文字を区別しない正規一致を示し、Python を通じて Python クローラーの 80% を除外できます。

Nginx で Web クローラーをブロックする

サーバー{ 
    聞く 80; 
    サーバー名 www.xxx.com; 
    #文字セット koi8-r; 
    #access_log ログ/host.access.log メイン; 
    #位置 / { 
    #ルートhtml; 
    # インデックス index.html index.htm; 
    #} 
  if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") { 
        403 を返します。 
    } 
  場所 ~ ^/(.*)$ { 
        proxy_pass http://localhost:8080; 
    proxy_redirect オフ; 
    proxy_set_header ホスト $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    クライアントの最大ボディサイズは10mです。 
    クライアントボディバッファサイズ 128k; 
    プロキシ接続タイムアウト 90; 
    プロキシ送信タイムアウト 90; 
    プロキシ読み取りタイムアウト 90; 
    プロキシバッファサイズ 4k; 
    プロキシバッファ 4 32k; 
    proxy_busy_buffers_size 64k; 
    proxy_temp_file_write_size 64k; 
  } 
    #エラーページ 404 /404.html; 
    # サーバーのエラーページを静的ページ /50x.html にリダイレクトします 
    # 
    エラーページ 500 502 503 504 /50x.html; 
    場所 = /50x.html { 
      ルートhtml; 
    } 
    # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします 
    # 
    #場所 ~ \.php$ { 
    # プロキシパス http://127.0.0.1; 
    #} 
    # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します 
    # 
    #場所 ~ \.php$ { 
    #ルートhtml; 
    #fastcgi_pass 127.0.0.1:9000; 
    # fastcgi_index インデックス.php; 
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
    #fastcgi_params を含めます。 
    #} 
    # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する 
    # nginxのものと一致します 
    # 
    #場所 ~ /\.ht { 
    # すべて拒否; 
    #} 
  }

curlでテストできます

curl -I -A "qihoobot" www.xxx.com

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • 悪意のあるクローラーの頻度を制限するために nginx 設定を変更する
  • Nginx でクローラーをフィルタリングするための User-Agent を設定する簡単な方法
  • Linux/Nginx で検索エンジン スパイダー クローラーの動作を表示する方法
  • 検索エンジンのクローラーの頻度を制限し、Web クローラーのブロックを禁止する Nginx 構成の例
  • UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

<<:  MySQL マスターライブラリ binlog (master-log) とスレーブライブラリ relay-log 間のコードの詳細な説明

>>:  vue3 統合 API における vue2 の $refs の代替方法についての簡単な説明

推薦する

mysqlはエクスポートされたデータのsqlファイルから指定されたテーブルのみをインポートすることを実装します

シナリオ昨日、システムは dbAll.sql.gz という名前の特定のデータベースのすべてのテーブル...

React Nativeはモニタリングジェスチャーの上下プル効果を実現します

React Native は、プルアップとプルダウンの監視ジェスチャを実装します。詳細なコアコードは...

Docker で Tomcat、MySQL、Redis をインストールするための詳細な手順

目次DockerでTomcatをインストールするtomcatイメージを使用してコンテナを作成する(イ...

MySQL で複数の主キーが定義されているエラーの解決方法

主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...

JavaScriptの基礎を学ぶ

目次1. JavaScriptを記述する場所2. JavaScriptでよく使われる入力文と出力文1...

ウェブデザインを改善するための 8 つの CSS ツールを共有する

ウェブサイトのデザインを編集または変更する必要がある場合、CSS が重要な役割を果たします。 CSS...

ユーザーのニーズがマーケティング指向のデザインにつながる

<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...

Nginx のパラメータをオンにして Web パフォーマンスを 3 倍向上させる方法

1. 遭遇したいくつかの問題2008 年にパフォーマンス テストを行っていたとき、パフォーマンス テ...

要素タイムラインの実装

目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...

複数のサーバーにNginxリバースプロキシを実装する方法

Nginx は複数のサーバーをリバース プロキシします。つまり、nginx に異なるリクエストを送信...

CentOS8 - bash: 文字化けとその解決方法

この状況は通常、中国語言語パックがインストールされていないか、デフォルトの言語設定に問題があるために...

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...

MySQLはデフォルトのエンジンと文字セットの詳細を変更します

目次1. データベースエンジン1.1 ビューデータベースエンジン1.2 デフォルトのデータベースエン...

Echarts 凡例コンポーネントのプロパティとソース コード

凡例コンポーネントは、ECharts でよく使用されるコンポーネントです。シリーズ マーカーの名前を...

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...