真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nodejs中request庫使用HTTPS代理的方法

正在嘗試改用NodeJS編寫爬蟲,http請求庫選擇了 request ,用起來還是挺簡單的。

創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、水磨溝網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、html5成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為水磨溝等各大城市提供網(wǎng)站開發(fā)制作服務。

現(xiàn)在有個需求,需要用Fiddler抓包我發(fā)出去的請求,以便和瀏覽器發(fā)出去的包進行對比。

因為需要解密HTTPS報文,需要讓node要么忽略證書安全,要么信任Fiddler的CA證書。

網(wǎng)上找了一圈,總結(jié)如下:

方法一:設置環(huán)境變量

  • 設置環(huán)境變量NODE_TLS_REJECT_UNAUTHORIZED=0
  • 即"不拒絕未認證的證書"
  • 但是直接修改系統(tǒng)環(huán)境變量比較危險,因為會影響到所有nodejs的程序;比較穩(wěn)妥的辦法是腳本中調(diào)用process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0; 這樣僅對本進程生效

方法二:每請求單獨設置忽略證書安全

  • 上述方法還是有一定風險,因為當前nodejs進程都受此全局設置影響
  • 可以在request的options中添加rejectUnauthorized: false選項來針對單個請求忽略證書檢查
  • 當然也可以用request.defaults直接設置默認選項
 const request = require("request").defaults({
   proxy: "http://127.0.0.1:8888",
   rejectUnauthorized: false,
 })
 request.get("https://www.baidu.com").on("response", console.log)

方法三:使用Fiddler的CA證書

  • 這個方法是最穩(wěn)妥的,不會讓你的子系統(tǒng)產(chǎn)生任何溢出影響
  • 首先在Fiddler內(nèi)把其根證書導出到桌面:Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop
  • 導出的文件是個.cer證書,經(jīng)測試nodejs不直接支持,需要用openssl轉(zhuǎn)換成PEM格式(我的openssl是cygwin裝的)
  • openssl x509 -inform DER -in FiddlerRoot.cer -outform PEM -out fiddler.pem
  • 把轉(zhuǎn)換出來的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當然也支持自簽名證書,不過我暫時沒這方面需求,就沒繼續(xù)摸索了

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


新聞名稱:nodejs中request庫使用HTTPS代理的方法
文章出自:http://weahome.cn/article/jhghdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部