从网络搜索,电信广告劫持一般用旁路插入,而不是路由插入。这种一般是电信机房交换机的局域网进行的,可以抓包,可以伪造包。那么广告劫持伪造数据包插入的时间是,
如果触发广告劫持,真正的服务器可能会被断开链接,所以解决方法有两个 ,
避开当然是首选。测试下来发现,我这边电信劫持触发条件可能就是HTTP头的 Host 包含某些网站域名。如果发送HTTP请求的时候,不要一股脑发出去,第一个数据包只发10个字节,等200-300ms后再发剩下的。等待时间主要是确保这10个字节已经按一个包发出去了,而不是在系统缓存可能会跟后续的数据合并。
我现在的实现是这样的。在linux路由器上 (我的是华硕的 RT-AC87U),用 iptables PREROUTING 的功能对80端口的请求转发到程序进行处理。这个方法跟 REDSOCKS 的透明代理一样。
现在这个方法用下来一天,只出现过一次劫持 (本来分分钟会见到,忍无可忍才要研究这个),调节第二个发送延迟到300ms就再也没出现过了。
也许还有更高效的方法,懂的来说说哦。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.