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のストレージエンジンの詳細な説明

推薦する

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....

CSSラベル表示モードについて1つの記事で学ぶ

タグの種類(表示モード) HTML タグは、一般的にブロック タグとインライン タグの 2 種類に分...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

Maven+Tomcat 基本イメージを構築する Docker の実装

序文Javaプログラミングでは、ほとんどのアプリケーションはMavenに基づいて構築されており、配信...

HTML タイトルに二重引用符を追加する方法

<a href="https://www.jb51.net/" title...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

MySQL のバックアップとリカバリの設計アイデア

背景まず、背景を説明します。ある制約により、当社の現在のバックアップ戦略では、1 日おきにフル バッ...

MySQLの始め方から諦め方まで徹底解説 - インストール

学ぶ内容1. ソフトウェアのインストールとサーバーの設定。 2. (オプションですが、強くお勧めしま...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

動的な色切り替えの実装コードをサポートするために、CSS で SVG 画像を参照します。

表示する svg 画像を追加すると、React はファイルが見つからないというメッセージを表示します...

メタタグのビューポートはデバイス画面のCSSを制御します

コードをコピーコードは次のとおりです。 <meta name="viewport&q...

CentOS7 ファイアウォール操作コマンドの完全なリスト

目次インストール: 1. ファイアウォールの基本的な使い方2. ファイアウォールd-cmdを設定する...

MySQL の undo、redo、binlog の違いを簡単に分析します

目次序文【ログ取り消し】 【REDOログ】 【バイナリログ】要約する序文MySQL には、REDO ...