Node.js は、Chrome V8 エンジンに基づいた JavaScript 実行環境であり、ネットワーク リクエストとページ クローリングを非常に便利にする豊富なモジュール セットを提供します。ただし、HTTPS リクエストを行う場合は、暗号化や証明書の検証などのプロセスにより、ある程度の複雑さが追加されます。この記事では、Node.js を使用して HTTPS リクエストをクロールする方法と、発生するいくつかの問題と解決策を紹介します。
1. 準備
開始する前に、次の点を確認する必要があります:
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); });
openssl genrsa -out private-key.pem 2048 openssl req -new -key private-key.pem -out csr.pem
openssl x509 -req -in csr.pem -signkey private-key.pem -out public-cert.pem
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();
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();
--ssl-protocol=TLSv1 パラメータが実行されています。
以上がNode.js を使用して HTTPS リクエストをスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。