如何设置节点http代理来拦截特定的request/response?
How to set up a node http proxy to intercept a particular request/response?
我正在制作一个加载网页的 nodejs pupeteer 应用程序。在该页面中,加载了许多资源。用于拦截 requets/response 的 pupeteer API 似乎不适用于所有资源,所以我想使用 http 代理。
我想在我的代理中拦截特定的 request/response。如果远程服务器发回响应,内容的第一行是单词“cat”,那么在将响应转发回客户端之前,我想 console.log 该资源 URL。该请求可以使用 https。我怎样才能实现这样的目标?
https://anyproxy.io/en/#use-anyproxy-as-an-npm-module
首先安装AnyProxy
对于 Debian / Ubuntu 用户,首先执行:
sudo apt-get install nodejs-legacy
然后安装AnyProxy:
npm install -g anyproxy
您需要编写一个规则来拦截以 cat 和 console.log 开头的响应。所以也许是这样的:
// file: sample.js
module.exports = {
summary: 'a rule to log responses starting with cat',
*beforeSendResponse(requestDetail, responseDetail) {
if responseDetail.body.startsWith("cat "){
console.log(responseDetail.body);
}
},
};
AnyProxy默认不拦截https请求。要查看解密信息,您必须配置 CA 证书。
anyproxy-ca #generate root CA. manually trust it after that.
anyproxy --intercept --rule sample.js #launch anyproxy and intercept all https traffic, and use sample.js rule
根据您的设置,您可能需要进行其他配置,但是一旦设置好,编写用于拦截响应的规则似乎很简单。
https://anyproxy.io/en/#use-anyproxy-as-an-npm-module
如果没有安装node,先安装,再安装AnyProxy
npm install -g anyproxy
编写一个规则来拦截以 cat 开头的响应。它可能是这样的:
// file: sample.js
module.exports = {
summary: 'a rule to log responses starting with cat',
*beforeSendResponse(requestDetail, responseDetail) {
if responseDetail.body.startsWith("cat "){
console.log(responseDetail.body);
}
},
};
同样,AnyProxy 也支持 beforeSendRequest 方法来拦截请求。
我正在制作一个加载网页的 nodejs pupeteer 应用程序。在该页面中,加载了许多资源。用于拦截 requets/response 的 pupeteer API 似乎不适用于所有资源,所以我想使用 http 代理。
我想在我的代理中拦截特定的 request/response。如果远程服务器发回响应,内容的第一行是单词“cat”,那么在将响应转发回客户端之前,我想 console.log 该资源 URL。该请求可以使用 https。我怎样才能实现这样的目标?
https://anyproxy.io/en/#use-anyproxy-as-an-npm-module
首先安装AnyProxy
对于 Debian / Ubuntu 用户,首先执行:
sudo apt-get install nodejs-legacy
然后安装AnyProxy:
npm install -g anyproxy
您需要编写一个规则来拦截以 cat 和 console.log 开头的响应。所以也许是这样的:
// file: sample.js
module.exports = {
summary: 'a rule to log responses starting with cat',
*beforeSendResponse(requestDetail, responseDetail) {
if responseDetail.body.startsWith("cat "){
console.log(responseDetail.body);
}
},
};
AnyProxy默认不拦截https请求。要查看解密信息,您必须配置 CA 证书。
anyproxy-ca #generate root CA. manually trust it after that.
anyproxy --intercept --rule sample.js #launch anyproxy and intercept all https traffic, and use sample.js rule
根据您的设置,您可能需要进行其他配置,但是一旦设置好,编写用于拦截响应的规则似乎很简单。
https://anyproxy.io/en/#use-anyproxy-as-an-npm-module
如果没有安装node,先安装,再安装AnyProxy npm install -g anyproxy
编写一个规则来拦截以 cat 开头的响应。它可能是这样的:
// file: sample.js
module.exports = {
summary: 'a rule to log responses starting with cat',
*beforeSendResponse(requestDetail, responseDetail) {
if responseDetail.body.startsWith("cat "){
console.log(responseDetail.body);
}
},
};
同样,AnyProxy 也支持 beforeSendRequest 方法来拦截请求。