在开发中我们可能会在node中请求其它的地址,例如
request("http://baidu.com", function (error, response, body) {
})
我们该怎么抓到这个请求呢 fiddler? 我查了fiddler没有查到怎么抓命令行的包。默认是抓不到的,如果fiddler可以,请告诉我一下,怎么配置呢
@i5ting node debug 不是断点调试吗,我想看到真实的网络请求呢 这是我查的node debug 可选项 用途 run 执行脚本,在第一行暂停 restart 重新执行脚本 cont, c 继续执行,直到遇到下一个断点 next, n 单步执行 step, s 单步执行并进入函数 out, o 从函数中步出 setBreakpoint(), sb() 当前行设置断点 setBreakpoint(‘f()’), sb(…) 在函数f的第一行设置断点 setBreakpoint(‘script.js’, 20), sb(…) 在 script.js 的第20行设置断点 clearBreakpoint, cb(…) 清除所有断点 backtrace, bt 显示当前的调用栈 list(5) 显示当前执行到的前后5行代码 watch(expr) 把表达式 expr 加入监视列表 unwatch(expr) 把表达式 expr 从监视列表移除 watchers 显示监视列表中所有的表达式和值 repl 在当前上下文打开即时求值环境 kill 终止当前执行的脚本 scripts 显示当前已加载的所有脚本 version 显示v8版本
const request = require('request');
const http = request.defaults({
proxy: "http://127.0.0.1:8888", //for fiddler
jar: true,
headers: {
Accept: '*/*',
"User-Agent": 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36'
}
});
其实原理就是http.request
的opts.host
设置为你自己的代理服务,想抓包的话就是指给fiddler
的127.0.0.1:8888
纯node
的话就这样写,
if (config.PROXY.DEBUG) {
hostname = config.PROXY.DEBUG_SERVER.HOST;
port = config.PROXY.DEBUG_SERVER.PORT;
}
var req = http.request({
hostname: hostname,
port: port,
method: options.method,
path: options.path,
headers: Object.assign({}, options.headers),
agent: false
});