nginx アンチホットリンクおよびアンチクローラー設定の詳細な説明

nginx アンチホットリンクおよびアンチクローラー設定の詳細な説明

新しい設定ファイルを作成します (たとえば、nginx インストール ディレクトリの下の conf ディレクトリに移動し、agent_deny.conf を作成します)

Scrapyなどのツールによるクロールを無効にする if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; }

指定されたUAまたは空のUAによるアクセスを禁止する

#禁止のスクレイピー
$http_user_agent の場合、(Scrapy|Curl|HttpClient)
{
  403 を返します。
}

#禁止されたU​​A
if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" )
{
  403 を返します。
}

#GET|HEAD|POST メソッドによるアクセスは禁止
($request_method !~ ^(GET|HEAD|POST)$) の場合
{
  403 を返します。
}

次に、Web サイト構成のサーバー セクションに次のコードを挿入します: include agent_deny.conf;

nginxを再起動します。

/data/nginx/sbin/nginx -s リロード

クローリングをシミュレートするために curl -A を使用してテストを実行できます。例:

curl -I -A 'YYSpider' <<www.xxx.con>>

結果

[root@11 conf]# curl -I -A 'YYSpider' www.xxx.cn
HTTP/1.1 403 禁止
サーバー: nginx/1.12.0
日付: 2019年4月24日水曜日 11:35:21 GMT
コンテンツタイプ: text/html
コンテンツの長さ: 169
接続: キープアライブ

空の UA でクロールをシミュレートします。

curl -I -A' ' <<www.xxx.cn>>

結果

[root@11 conf]# curl -I -A' ' www.xxx.cn
HTTP/1.1 403 禁止
サーバー: nginx/1.12.0
日付: 2019年4月24日水曜日 11:36:06 GMT
コンテンツタイプ: text/html
コンテンツの長さ: 169
接続: キープアライブ

Baiduスパイダーのクローリングをシミュレートします。

curl -I -A 'Baiduspider' <<<www.xxx.cn>>>

[root@11 conf]# curl -I -A 'Baiduspider' www.xxx.cn
HTTP/1.1 200 OK
サーバー: nginx/1.12.0
日付: 2019年4月24日水曜日 11:36:47 GMT
コンテンツタイプ: text/html
コンテンツの長さ: 612
最終更新日: 2019年4月12日(金) 13:49:36 GMT
接続: キープアライブ
ETag: "5cb09770-264"
受け入れ範囲: バイト

UAタイプ

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 役に立たないクローラー

Nginx アンチホットリンク設定

背景: サードパーティの参照リンクが画像にアクセスしてサーバーのリソースとネットワーク トラフィックを消費するのを防ぐために、サーバー上でホットリンク防止制限を行うことができます。
ホットリンク保護を実装する方法には、参照方式と署名方式の 2 つがあります。

アンチホットリンクを実現するための方法を参照

動作モジュール: ngx_http_referer_module。

有効な変数: $invalid_referer、グローバル変数。

構成ドメイン: サーバー、場所

構成:

サーバー{
  聞く 80;
  サーバー名 www.imcati.com refer-test.imcati.com;
  ルート /usr/share/nginx/html;
  場所 ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    valid_referers なし、www.imcati.com がブロックされました。
    ($invalid_referer) の場合 {
      403 を返します。
      }
   }
  }
  • valid_referers: リソース アクセスが次の方法 (ホワイトリストなど) で合法であることを指定します。 vaild_referers 有効な参照リンクは次のとおりです。それ以外の場合は $invaild_refere を入力し、403 forbidden を返します。
  • none: 欠落しているヘッダーへのアクセスを許可します。
  • ブロック: 対応するリファラー値のないリクエストを許可します。
  • server_names: リファラー サイトのドメイン名が server_name のローカル マシンに設定されているドメイン名と同じ場合、アクセスが許可されます。

nginx アンチホットリンクとアンチクローラーの詳細な設定に関するこの記事はこれで終わりです。より関連性の高い nginx アンチホットリンクとアンチクローラーの設定内容については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様の今後の 123WORDPRESS.COM へのご支援をお待ちしております。

以下もご興味があるかもしれません:
  • JSP でアンチホットリンクを実装する方法
  • 一部のウェブサイトでは、空白のリファラーアンチホットリンク画像jsクラッキングコードを許可しています
  • 画像アンチホットリンククラッキング操作例のPHP実装【画像アンチホットリンク問題解決/リバースプロキシ】
  • Nginx でアンチホットリンクを設定するための手順を完了する
  • リファラー原理と画像ホットリンク防止実装方法の詳細な説明
  • Nginx のアンチホットリンクを設定する方法
  • .htaccess を使用して画像のホットリンク保護を設定する詳細な方法
  • PHP のアンチホットリンク実装方法の分析
  • Nginxはリファラディレクティブを使用してアンチホットリンク設定を実装します
  • JavaScriptアンチホットリンクの原理とクラッキング方法

<<:  VueはEChartsを使用して折れ線グラフと円グラフを実装します

>>:  MySQLのストレージエンジンの詳細な説明

推薦する

Centos7 に mysql 8.0.13 (rpm) をインストールする詳細なチュートリアル

yum か rpm か? yum によるインストール方法は非常に便利ですが、公式サイトから MySQ...

Yahooが開発したウェブページスコアリングプラグインYSlowのスコアリングルール

YSlow は、Yahoo USA が開発したページ スコアリング プラグインです。非常に優れていま...

特定のシンボルで複数の行と列に分割するMySQLの例

一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...

固定テーブル幅テーブルレイアウト: 固定

テーブルを画面全体(残りの空白領域)に表示するために、幅属性は 100% と定義されることが多く、セ...

VMware 仮想マシンの NAT モードを構成する方法

この記事では、VMware仮想マシンのNAT構成プロセスを詳しく説明します。具体的な内容は次のとおり...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

MySQL 選択最適化ソリューションに関する簡単な説明

目次実生活からの例クエリが遅い最適化する方法カウント制限最大値と最小値 min&max実生活...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

MySQLインデックスを正しく作成する方法

インデックス作成は大学図書館の書誌インデックスの構築に似ており、データ検索の効率を向上させ、データベ...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

MySQL のデッドロックとデータベースおよびテーブル シャーディングの問題の詳細な説明

MySQL 運用上の問題点を記録します。ビジネスシナリオと問題の説明外部インターフェースをリクエスト...

Windows Server のインストール後にワイヤレスとオーディオが機能しない問題を解決する

1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...

Tomcatのデフォルトパスの設定によって発生するプロジェクトURLの競合を解決する方法の詳細な説明

序文Tomcat は優れた Java コンテナですが、避けられない小さな落とし穴もいくつかあります。...

Vueでアイコンをカスタマイズする手順

ant-design-vue は Ali iconfont icons の使用をカスタマイズします\...

Linux sar コマンドの使用方法とコード例の分析

1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...