消除:ISP 为广告注入带有 iframe 脚本的页面

Eliminate: ISP Injects Pages with Iframe Script for Ads

所以我的 ISP(Smartfren;印度尼西亚)已决定开始向所有非 SSL 页面注入 iframing 脚本,允许他们将广告插入页面。这是正在发生的事情:

  1. 我的浏览器向服务器发送请求。 ISP 拦截它,取而代之的是 returns javascript 将请求的页面加载到 iframe 中。

  2. 除了原则上令人讨厌之外,这种注入还破坏了许多标准页面功能;并存在潜在的安全隐患。

到目前为止我尝试做的事情:

  1. 使用 GreaseMonkey 脚本消除注入的代码并重定向到原始代码 URL。结果:破坏了一些合法的 iframe。此外,ISP 的代码会被执行,因为 GreaseMonkey 仅在页面加载后才会启动。

  2. 使用 Privoxy 作为本地代理并设置过滤器来清理注入并将其替换为普通 javascript 重定向到原始 URL。结果:破坏了一些合法的 iframe。 ISP 的代码永远不会到达浏览器。

您可以在以下粘贴中查看我一直在处理的 GreaseMonkey 和 Privoxy 修复程序:http://pastebin.com/sKQTvgY2 ... 以及 ISP 的注入示例。

理想情况下,我可以将 Privoxy 配置为在检测到更改时立即重新发送请求,而不是过滤掉注入的 JS 并将其替换为指向原始 URL 的 JS 重定向。 (当立即重新发送相同的请求时,ISP 注入将被关闭。)我还没有弄清楚如何完成它。我相信它会解决 iframe 破坏问题。

我知道我可以切换到 VPN 或使用 Tor 浏览器。 (或更改 ISP。)我希望有另一种解决方法。关于如何消除这种滋扰有什么建议吗?

其实现在我有一个解决办法: ISP 代理对浏览器发送的 Accept:header 作出反应。

因此这是 firefox 的默认设置:

接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

现在我们要更改此默认设置:

并将其设置为:接受:*/*

以下是 google chrome

设置 header hacker 的方法

将标题设置为您喜欢的任何内容:无 IFRAME

Append/replace select 替换为

字符串 */*

并将字符串匹配到 .* 然后单击添加。

在永久header开关 将域设置为 .* 和 select 您刚刚创建的规则

PS:在 firefox 设置中更改它并不能 100% 起作用,因为像 ajax 这样的一些请求似乎绕过了它,所以插件是唯一的方法,因为它会拦截每个传出的浏览器请求

就是这样,不再有 iframe!!!

希望对您有所帮助!

更新:使用 DNSCrypt 是最好的解决方案

旧答案 我正在使用这个方法

  1. 查找包含 iframe 代码的资源(使用 chrome 开发工具)
  2. 使用代理或主机文件阻止 url

我正在使用 linux,所以我编辑了我的主机文件 /etc/hosts 示例:

127.0.0.1 ibnads.xl.co.id