我写了一个在Example Domain
上运行的小型代理服务器,它应该替换特定网址上的某些内容,同时保留其他网址不变。
目前的做法是将Hello World!
替换为example.com
页面上的proxy-server.js
。为了构建这个,我使用了proxy-tamper
包。
代码如下(保存在"use strict";
const proxy = require('proxy-tamper').start({port: 8000});
// block share-term.me
proxy.tamper(/share-term.me\/$/, 'This content is blocked!');
// Replace the content on example.com
proxy.tamper(/example.com\/$/, request => {
delete request.headers['accept-encoding'];
request.onResponse(response => {
response.body = response.body.replace(/Example Domain/g, 'Hello World!');
response.headers['server'] = 'proxy-tamper 1337';
response.headers['content-length'] = response.body.length;
response.complete();
});
});
中):
node proxy-server.js
然后,为了启动我使用的代理服务器:
google-chrome-stable
最后,通过设置--proxy-server
选项启动google-chrome-stable --proxy-server='http=http://localhost:8000;https=http://localhost:8000' http://domain.com
:
http://example.com
这适用于https://example.com
,但https
失败。实际上它不支持http://example.com
。
当我打开https://example.com
时,我会看到替换的内容:
但是当我打开https
(或任何ERR_EMPTY_RESPONSE
网址)时,它会失败,以https
结尾:
如何为我的代理服务器添加https
支持,或至少让Chrome绕过http
的{{1}}网址?
我尝试使用--ignore-certificate-errors
和--allow-insecure-content
运行Chrome进程,但他们没有帮助。
我不是主要想要拥有强大的https相关安全性,但我想通过我的服务器代理这些https请求并在客户端上发送响应。
答案 0 :(得分:0)
看起来代理篡改没有https请求的功能。它只支持http(编写本文并查看文档时)。
您可以使用包node-http-proxy代替。有一个很好的部分支持https here。
编辑有人可以验证您是否可以实际更改https响应正文服务器端?这些信息在技术上不会被加密吗?服务器上的解密是否在技术上违反了协议并且不被允许?