利用dnsmasq和nginx阻断HTTP流量劫持(解决篇)

上篇文章中已经说过,一些“不可抗力”会利用对关键网络设备的控制权,在用户不知情的情况下,将用户网购的HTTP流量劫持到己方控制的服务器,加入推广链接达到获得私利的目的。“不可抗力”们并没有在电商的推广过程中加入任何附加价值,滥用推广返利,违背了用户和电商双方的初衷。

由于HTTP流量劫持发生在运营商机房里,脱离了用户可以控制和防范的范围,除了收集100%强力的证据,威胁客服或者投诉工信部以外,防范和解决起来相对比较困难。本文用比较EP的技术手段,在家庭局域网内阻断流量劫持,拒绝“尾巴”,纯净访问电商。

根据上篇文章中的分析,用户受到劫持的过程主要分下面3个步骤:

①用户试图访问电商,DNS服务器将用户解析到正确服务器IP地址。
②“不可抗力”阻断用户和电商间的通信,将用户流量劫持到套取返利链接。
③返利链接将用户重新定向到电商,用户购物,“不可抗力”就能获得分成。

在程序上讲,由于第一步完全合理、正确,而不合理、不正确的第二部又发生在运营商机房里,用户无能为力。所以需要考虑从源头上阻止用户前往返利链接,也就是在第二步上做文章。

我想到的思路就是,以其人之道还治其人之身,通过DNS劫持,将返利链接劫持到自己控制的服务器,重新将自己的流量重定向到正确的链接。

为了达到这个目的,我们需要:
1.一台受自己控制的DNS。
2.一台受自己控制的HTTP服务器。

第一个条件可以通过运行有dnsmasq的路由器来实现,比如笔者就通是给AC66U刷了Tomato固件来实现的。第二个条件其实也不难,可以是家庭网内任何一台电脑、或者任何一台电脑中的虚拟机也可以,笔者是通过一台老得树莓派安装了nginx来实现的(当然Apache、lighttpd甚至IIS也可以)。

IMG_7457(图中上面那个塑料盒子就是树莓派)

Tomato固件、Dnsmasq、树莓派和nginx的使用方法不是本文的重点,网上也有很多教程,这里就不赘述了。下面是dnsmasq和nginx的具体实现方法:

首先通过dnsmasq将已知的返利链接的域名解析到内网的HTTP服务器的IP(假设树莓派的IP是192.168.11.111):

随后在nginx里设置一个server,将所有近来的链接都302重定向到jd.com:

当然,这个配置文件的写法比较简单粗暴,我们还可以通过Refer将链接定向回去(比如Refer里是jd,我们就重定向到jd,Refer里是苏宁,我们就重定向到苏宁,哪来的回哪去)。这里只是个抛砖引玉,因为我主要用京东,所以就懒得写了。

除了上面举的例子,类似返利欺骗还很多,比如网上比较有名就有下面这些:

这几个貌似都是全国性的,zhitui是我一个北京朋友遇到的。其他还有很多,比如可以参考知乎《访问京东域名被劫持,是什么问题?》里最下面一个匿名用户回答的内容。

这么写估计会动很多利益集团的蛋糕,看上面那个知乎问题里,好多人都匿名回答就知道了。如果过一阵子dgwxx.com有幸被ddos之类的话,大家就勿念吧。

敝国没法律,大家随便来嘛。


 

关于该方法的可行性和有效性,补发一个图片证据:

《利用dnsmasq和nginx阻断HTTP流量劫持(解决篇)》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注