原来研究过一个用浏览器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 break;
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之类的功能