ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js を使用して HTTPS リクエストをスクレイピングする方法

Node.js を使用して HTTPS リクエストをスクレイピングする方法

PHPz
PHPzオリジナル
2023-04-17 16:40:29825ブラウズ

Node.js は、Chrome V8 エンジンに基づいた JavaScript 実行環境であり、ネットワーク リクエストとページ クローリングを非常に便利にする豊富なモジュール セットを提供します。ただし、HTTPS リクエストを行う場合は、暗号化や証明書の検証などのプロセスにより、ある程度の複雑さが追加されます。この記事では、Node.js を使用して HTTPS リクエストをクロールする方法と、発生するいくつかの問題と解決策を紹介します。

1. 準備

開始する前に、次の点を確認する必要があります:

  1. Node.js 環境をインストールし、Node.js のバージョンがそれ以降であること0.11.13 以上 (以前のバージョンには SSL セキュリティの脆弱性がありました)。
  2. SSH またはその他の安全な手段を使用して、HTTPS リクエストをクロールする必要があるサーバーに接続します。
  3. HTTPS 暗号化と証明書の検証について学習します。
#2. HTTPS リクエストの処理方法

Node.js を使用して HTTPS リクエストを開始する場合は、次の点に注意する必要があります:

    Required https モジュールは、http モジュールの使用と同様にリクエストを作成します。
  1. プロキシ、証明書、その他の関連パラメーターを設定する必要があります。
  2. サーバー証明書の検証と証明書チェーンの構築に注意する必要があります。
たとえば、https モジュールを使用して単純な HTTPS リクエストを開始します。

var https = require('https');

https.get('https://www.example.com/', function(res) {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });
}).on('error', function(e) {
  console.error(e);
});
この場合、Node.js は独自の証明書検証を使用して Verify を行うことに注意してください。サーバー証明書。

3. カスタム証明書検証

場合によっては、プライベート HTTPS サービスへの接続や HTTPS のクロールなど、特定のニーズを満たすために証明書検証プロセスをカスタマイズする必要があります。SSL 証明書エラーを無視するリクエストするときなど。

カスタム証明書検証のプロセスは、基本的に、カスタム ルールに基づいて証明書から CA を生成し、その CA を Node.js の信頼リストに追加することです。このプロセスは、openssl ツールを使用して実行できます。具体的な手順は次のとおりです。

    キーと証明書のリクエストを生成する
  1. openssl genrsa -out private-key.pem 2048
    openssl req -new -key private-key.pem -out csr.pem
    証明書リクエストを使用して証明書を生成する
  1. openssl x509 -req -in csr.pem -signkey private-key.pem -out public-cert.pem
    Node.js の信頼リストに証明書を追加します
  1. var https = require('https');
    var fs = require('fs');
    
    var options = {
      hostname: 'www.example.com',
      port: 443,
      path: '/',
      method: 'GET',
      ca: [fs.readFileSync('public-cert.pem')]
    };
    
    https.request(options, function(res) {
      console.log(res.statusCode);
      res.on('data', function(chunk) {
        console.log(chunk.toString());
      });
    }).end();
4. SSLv3 POODLE セキュリティの脆弱性を検出して解決します

SSLv3 POODLE セキュリティの脆弱性は、次のような攻撃方法です。 SSLv3 を使用して攻撃ホールを埋めます。 SSLv3 自体にはセキュリティ上の脆弱性があり、TLS プロトコルが広く使用された後は段階的に廃止されてきたため、ほとんどのブラウザとサーバー アプリケーションは SSLv3 の使用を停止しました。ただし、特定の状況下では、依然として SSLv3 の使用を要求される場合があります。

Node.js では、次のコード ブロックを使用して、SSLv3 POODLE セキュリティの脆弱性があるかどうかを検出できます:

var https = require('https');
var tls = require('tls');
var constants = require('constants');

tls.DEFAULT_MIN_VERSION = 'TLSv1';

var options = {
  hostname: 'www.example.com',
  port: 443,
  path: '/',
  method: 'GET'
};

https.request(options, function(res) {
  var socket = res.socket;
  socket.on('secureConnect', function() {
    if (socket.getProtocol() == 'SSLv3') {
      console.error('SSLv3 is enabled');
      process.exit(1);
    }
  });
  res.pipe(process.stdout);
}).end();
SSLv3 がオンになっている場合、Node.js のインストール時に追加できます。 SSLv3 の脆弱性をブロックする

--ssl-protocol=TLSv1 パラメータが実行されています。

5. 結論

この記事では、HTTPS リクエストの処理、カスタム証明書の検証、SSLv3 POODLE セキュリティ脆弱性の検出と解決など、Node.js を使用して HTTPS リクエストをキャプチャする方法を紹介します。 。 Node.js の HTTPS リクエスト クロールを皆さんが理解するのに役立つことを願っています。

以上がNode.js を使用して HTTPS リクエストをスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。