内容简介:正在尝试改用NodeJS编写爬虫,http请求库选择了现在有个需求,需要用Fiddler抓包我发出去的请求,以便和浏览器发出去的包进行对比。因为需要解密HTTPS报文,需要让node要么忽略证书安全,要么信任Fiddler的CA证书。
正在尝试改用NodeJS编写爬虫,http请求库选择了 request ,用起来还是挺简单的。
现在有个需求,需要用Fiddler抓包我发出去的请求,以便和浏览器发出去的包进行对比。
因为需要解密HTTPS报文,需要让node要么忽略证书安全,要么信任Fiddler的CA证书。
网上找了一圈,总结如下:
设置环境变量
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当然也支持自签名证书,不过我暂时没这方面需求,就没继续摸索了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java 静态代理和动态代理的使用及原理解析
- 使用Nginx代理上网
- 使用shadowtunnel配置多级代理
- Go get使用代理
- 使用 Javassist 实现动态代理
- 使用Nginx做反向代理,设置请求返回时带上被代理机器的信息
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mathematica Cookbook
Sal Mangano / O'Reilly Media / 2009 / GBP 51.99
As the leading software application for symbolic mathematics, Mathematica is standard in many environments that rely on math, such as science, engineering, financial analysis, software development, an......一起来看看 《Mathematica Cookbook》 这本书的介绍吧!