nodejsでrequestライブラリはHTTPSエージェントを使用しています.
2004 ワード
ツールと資料 QQ群-Javascript高級爬虫類-作者の自己建築群、参加を歓迎します. awesome-java-crawler-作者が収集した爬虫関連ツールと資料 本文
NodeJSに変えて爬虫を編むことを試みています.httpライブラリはrequestを選んでいます.使うのは簡単です.今は必要なものがあります.ブラウザから送られたカバンと比較するために、Fiddlerで私が送った要求を追跡してください.FiddlerでHTTPS報文を解読する必要があるので、nodeを有効にするか、証明書の安全を無視するか、またはFiddlerのCA証明書を信頼する必要があります.ネットで一周探しましたが、以下のようにまとめられています.
方法1:環境変数の設定環境変数NODE_を設定します.TLS_REJECT_UNAUTHORIZED=0 すなわち「未認証証明書を拒否しない」 しかし、システム環境変数を直接修正するのは危険です.すべてのnodejsのプログラムに影響を与えます.比較的妥当な方法は、シナリオ中の呼び出し である.
方法2:要求ごとに個別に証明書のセキュリティを無視する上記の方法はまだ一定のリスクがあります.現在のnodejsプロセスはこの全体的な設定に影響されています. は、requestのoptionsに を行うことができる.はもちろん、request.defaultsで直接にデフォルトオプション を設定することもできます.
方法3:Fiddlerを使用するCA証明書この方法は最も妥当であり、あなたのサブシステムにオーバーフローの影響を与えない. まずFiddler内でそのルート証明書をデスクトップにエクスポートします.Tools->Options->HTTPS->アクション->Export Root Cot Citifeat to Deskytop で導出されたファイルは.cer証明書で、テストされたnodejsは直接サポートしていません.opensslでPEMフォーマットに変換する必要があります.(私のopensslはcygwinです.) 変換されたfiddler.pemをあなたのプログラムにアクセスできる位置に置いてください. は、 を指定する.
また:requestはもちろん自署証明書もサポートしていますが、私はしばらくこのような需要がないので、引き続き模索していません.
NodeJSに変えて爬虫を編むことを試みています.httpライブラリはrequestを選んでいます.使うのは簡単です.今は必要なものがあります.ブラウザから送られたカバンと比較するために、Fiddlerで私が送った要求を追跡してください.FiddlerでHTTPS報文を解読する必要があるので、nodeを有効にするか、証明書の安全を無視するか、またはFiddlerのCA証明書を信頼する必要があります.ネットで一周探しましたが、以下のようにまとめられています.
方法1:環境変数の設定
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
であり、このように本プロセスに対してのみ有効となる方法2:要求ごとに個別に証明書のセキュリティを無視する
rejectUnauthorized: false
オプションを追加して、単一の要求に対して証明書を無視するためのチェック const request = require("request").defaults({
proxy: "http://127.0.0.1:8888",
rejectUnauthorized: false,
})
request.get("https://www.baidu.com").on("response", console.log)
方法3:Fiddlerを使用するCA証明書
openssl x509 -inform DER -in FiddlerRoot.cer -outform PEM -out fiddler.pem
ca
オプションを使用して、CA証明書 const request = require("request").defaults({
proxy: "http://127.0.0.1:8888",
ca: require("fs").readFileSync("path/to/fiddler.pem", {encoding: "utf-8"}),
})
request.get("https://www.baidu.com").on("response", console.log)
また:requestはもちろん自署証明書もサポートしていますが、私はしばらくこのような需要がないので、引き続き模索していません.