国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 11:40:37
字體:
來源:轉載
供稿:網友

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

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

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

網上找了一圈,總結如下:

方法一:設置環境變量

  • 設置環境變量NODE_TLS_REJECT_UNAUTHORIZED=0
  • 即"不拒絕未認證的證書"
  • 但是直接修改系統環境變量比較危險,因為會影響到所有nodejs的程序;比較穩妥的辦法是腳本中調用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證書

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大英县| 广灵县| 泗洪县| 怀柔区| 图木舒克市| 阆中市| 广宗县| 锦屏县| 新沂市| 尖扎县| 格尔木市| 四子王旗| 胶州市| 中山市| 镇远县| 孟津县| 东明县| 竹山县| 莱阳市| 敖汉旗| 青海省| 乡城县| 桐梓县| 陇西县| 封开县| 达拉特旗| 泰安市| 红原县| 焉耆| 安达市| 绥江县| 玉龙| 汉寿县| 申扎县| 临沧市| 贵港市| 永康市| 册亨县| 万年县| 宜州市| 岐山县|