自从换到电信后,每次上网拨号后必然比弹一个广告我已经习惯了,但是最近开始不定期随机往页面上插广告了,这还可以忍,但是广告的代码写的太烂居然不兼容Firefox,搞得网页乱码,这不能忍。
最先还以为是 Firefox 扩展又出 bug 了,又是换版本,禁用扩展搞了一大圈,结果没什么用。后来发现是电信插广告导致的,因为隔壁的 chrome 和 ie 都是好的,只是有广告而已。

不过现在总算解决了,记录一下:

具体情况:

  • 以为是 DNS 劫持,但换了别的 DNS 还是如此,排除掉是 DNS 劫持的可能。
  • 那估计就是 TCP 劫持了,用 Wireshark 抓个包看看,发现了广告的 js 和页面上被插的一样,果然是。

截图1 截图2

  • 以至于这段广告 js 代码为什么会使 Firefox 跳转到 wyciwyg 页面还不清楚,很好奇为什么。
  • 正好路由器固件是 tomato 可以用 iptables 干掉,而且我的番茄 iptables 可以用 string ,真是太好了。

解决方案:

进入 tomato 的 web 管理界面找到 Administration - Scripts - Firewall 把下面的规则保存进去

modprobe -a xt_string
iptables -I FORWARD -p tcp --sport 80 --tcp-flags ALL FIN,PSH,ACK -m string --algo bm --string "news.paimingkong.com/fenlei/h.js" -j DROP

参考:
url经常出现http://wyciwyg://
Tomato解决电信广告劫持
Blocking Facebook in Tomato Shibby v 1.28