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

 更新时间:2019年04月30日 09:34:03   作者:rockswang  
这篇文章主要介绍了nodejs中request库使用HTTPS代理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

正在尝试改用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当然也支持自签名证书,不过我暂时没这方面需求,就没继续摸索了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Nodejs + Websocket 指定发送及群聊的实现

    Nodejs + Websocket 指定发送及群聊的实现

    这篇文章主要介绍了Nodejs + Websocket 指定发送及群聊的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Node.js异步I/O学习笔记

    Node.js异步I/O学习笔记

    这篇文章主要介绍了Node.js异步I/O学习笔记,本文详细讲解了异步I/O的基本概念、Node的异步I/O、非I/O的异步API、事件驱动与高性能服务器等内容,需要的朋友可以参考下
    2014-11-11
  • Node+Express搭建HTTPS服务的实现

    Node+Express搭建HTTPS服务的实现

    最近开发需要搭建一个https的服务,正好最近在用nodejs和express,本文章主要介绍了Node+Express搭建HTTPS服务的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • node.js中ws模块创建服务端与客户端实例代码

    node.js中ws模块创建服务端与客户端实例代码

    在Node.js中提供了http模块与https模块,专用于创建HTTP服务器、HTTP客户端,以及HTTPS服务器及HTTPS客户端,同时实现这些服务器端与客户端之中所需进行的处理,下面这篇文章主要给大家介绍了关于node.js中ws模块创建服务端与客户端的相关资料,需要的朋友可以参考下
    2023-05-05
  • 简单了解小程序+node梳理登陆流程

    简单了解小程序+node梳理登陆流程

    这篇文章主要介绍了简单了解小程序+node梳理登陆流程,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • node.js+postman实现模拟HTTP服务器与客户端交互

    node.js+postman实现模拟HTTP服务器与客户端交互

    本文主要介绍了node.js+postman实现模拟HTTP服务器与客户端交互,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Nodejs基于LRU算法实现的缓存处理操作示例

    Nodejs基于LRU算法实现的缓存处理操作示例

    这篇文章主要介绍了Nodejs基于LRU算法实现的缓存处理操作,结合具体实例形式分析了LRU算法的原理、功能以及nodejs使用LRU算法实现缓存处理操作的相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • Yapi安装部署详细图文教程

    Yapi安装部署详细图文教程

    YApi 是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台,下面这篇文章主要给大家介绍了关于Yapi安装部署的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Node的事件处理和readline模块详解

    Node的事件处理和readline模块详解

    这篇文章主要为大家详细介绍了Node的事件处理和readline模块,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 浅谈node中的exports与module.exports的关系

    浅谈node中的exports与module.exports的关系

    本篇文章主要介绍了浅谈node中的exports与module.exports的关系,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论