使用nginx代理https网站,并注入自己js的方法

文章介绍了如何通过Nginx代理和JS注入技术,在不改动上级系统的前提下,实现实时将网站收集到的数据同步到已有的老系统中。这种方法适用于上级系统无法进行二次开发的情况。同时,文章提到了这种方式可能不适用于开启CSP的网站,以及在高并发场景下的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到一个变态的问题,客户要我们做的网站收集到的数据直接上传到他们上级的一个数据汇总系统,但是上级系统已经运行了很多年,貌似没有再进行二次开发的可能了,并且别人的系统也不一定给我们对接,那么有什么办法能把我们的数据直接在用户提交表单的时候直接就同步到上级系统里去么?

经过我多次实验,发现了一种简单可行的方式:nginx代理+js注入

由于对方系统使用了https,所以nginx代理后要将响应进行解压后再注入js。

nginx配置如下

server {
			listen       80;
			listen       [::]:80;
			server_name  mytestweb.cn;
			location / {
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header X-Real-IP $remote_addr;//这两句是透传客户端ip,防止被代理服务器把我们的服务器ip拉黑
				proxy_set_header Accept-Encoding '';#禁用压缩,这一句必须写,否则注入失败
                #这里是注入自己js的方法
				sub_filter '</head>' '<script charset="utf-8" src="//mytestweb.cn/my.js"></script></head>';
				sub_filter_once on; #匹配到第一个就替换,其他不管
				proxy_pass   https://www.baidu.com;#这里是你要代理的网站
			}
	}
	server { #配置https,为啥要配https,因为http不能调用https资源,现在大部分网站都是https,具体视自己情况而定
		listen 443 ssl;
		server_name mytestweb.cn;
		ssl_certificate ./cert/mytestweb.cn.pem; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写
		ssl_certificate_key ./cert/mytestweb.cn.key; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写
		ssl_session_cache shared:SSL:1m;
		ssl_session_timeout 5m;
		ssl_ciphers HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers on;
        #以上是配置https的,这样保证自己的域名也支持https,https的证书自己去申请
        #以下跟上边是一样的,不用改
		location / {
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header X-Real-IP $remote_addr;//这两句是透传客户端ip,防止被代理服务器把我们的服务器ip拉黑
				proxy_set_header Accept-Encoding '';#禁用压缩,这一句必须写,否则注入失败
				sub_filter '</head>' '<script charset="utf-8" src="//mytestweb.cn/my.js"></script></head>';
				sub_filter_once on; #匹配到第一个就替换,其他不管
				proxy_pass   https://www.baidu.com;#这里是你要代理的网站
			}
	}

my.js写一行弹窗代码

alert("我是注入的js,现在已经执行了!");

nginx -s reload 重启一下nginx

然后测试一下看

成功注入,现在就可以愉快的在自己的js里写代码了。

---------------------------------------------------

注意:

1、这种方式不适合开启了csp的网站,如果你发现自己的网站被js注入了,可以开启csp保证不被注入。

2、由于本地代理了所有的请求,所以如果并发比较大的情况不适合这种方式,或者你自己弄个牛逼的机器也是ok的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灿宝宝lo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值