技术解析

用 Nginx 反向代理屏蔽 iframe 方式 http 劫持
0
2021-05-26 22:29:51
idczone
原来研究过一个用浏览器userscript脚本跳过iframe劫持的方法,但效果不理想
原来的方法在这https://www.v2ex.com/t/193060

新研究这个通过nginx反代的方法,效果很好
运营商通过http链路劫持的方式直接修改用户的HTTP数据包,达到加载广告的目的
JS注入的方式用ADBLOCK之类的插件很容易就屏蔽掉了
但有一个把用户原始网页放进iframe窗口里的劫持方式特别烦人
iframe方式劫持有一点可以反劫持,原理就是iframe里的窗口都带一个小尾巴,带特定的尾巴就不会被劫持,不然就会无限循环劫持
以淘宝的item.taobao.com/item.htm?xxxxxxxxx为例 我这里的加上小尾巴 noj=true后就不会被劫持, 不同的网址和不同的地区小尾巴不一样,需要根据本地情况修改
下面是nginx配置,我用的是windows版本,以item.taobao.com为例

server {
listen 80;
server_name item.taobao.com;
location / {
rewrite ^/item.htm?(.+) /item.htm?noj=true&$1 b美国服务器reak;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://item.taobao.com/;
}
}

#--------按这个格式,有几个网站被劫持就加几个

在本机或者局域网一台机器上配置好后,有2个方法
方法1,用浏览器的代理软件,把item.taobao.com用开了nginx的机器代理就行,HTTP协议,端口就是NGINX的端口,这个方法需要在每台上网的机器上都配置一下,且依赖浏览器的代理软件

方法2,在路由器上把item.taobao.com解析到开了NGINX的机器IP上,且端口只能是80
然后配置改一行 proxy_pass http://目标网址的IP/;
这个方法不需要每台上网电脑都配置,也不用浏览器代理软件,但对路由器有要求,需要路由DNSMASQ之类的功能
你是怎么发现小尾巴的?

反正我是host拉黑域名,防火墙拉黑IP,este加黑名单,yiqifa什么的跳来跳去全没了

以 chrome为例,打开被劫持的网页,空白处右键,会显示框架什么的 ,而且一般是右下角会有一个广告,,iframe窗口是100%大小的,网页标题一般也是iframe里窗口的标题,普通人一般不会在意.
小尾巴就是iframe窗口里的真实的URL,跟top URL对比一下,区别一般会多xxx=xxx之类的尾巴,我这里劫持了淘宝,天猫,还有优酷,搜狐视频,腾讯视频... 运营商太丧心病狂了

我这里iframe劫持不是必然事件,很难重现,有时候访问v2主页也会被劫持。为江苏电信点赞!

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服