简单粗暴绕过http劫持

小区宽带有http劫持的行为,严重影响网站访问,具体情况是这样。试了几个办法,均没有效果,有些方法甚至直接导致很多加载jquery库的网页无法访问。向工信部投诉?你懂的。工信部还是踢回给地方部门,地方的电信单位给我打电话,就说不是他管辖范围,无能为力。一声叹息。

不过,至少我能让自己的网站在劫持中独善其身吧!经过简单的测试,我发现这里的http劫持方法很简单,就是会劫持HTML页面中的一个加载的jquery库,其实就是劫持的一个js库。针对这种劫持,最简单的方法就是伪造一个js库给他“吃”就可以了。

怎么样,简单粗暴!

那wordpress来说,有两种方法:

(前提:新建一个空js文件,放到相应目录。例子里我放在根目录,文件名为“fuck_you_http_hijacked.js”)。

  1. 直接在模板header.php文件<head></head> 标签中添加:<script type=’text/javascript’ src=’http://fxpai.com/fuck_you_http_hijacked.js?ver=4.6.1′></script> 即可。一定要添加在所有js文件之前。标准的wp模板,只要放在wp_head(); 之前就可以了。
  2. 上面第一种方法显得没有格调。而且,后台界面的劫持也没有解决,写文章、发博客一样无法进行。那么,wp的插件钩子登场。在主题的functions.php文件中,加入如下代码:
    //处理部分地区http劫持,导致的jquery加载不正常
    function fuckHijacked(){
    wp_register_script( 'fuckHijackedjs', get_bloginfo('wpurl').'/fuck_you_http_hijacked.js' );
    wp_enqueue_script( 'fuckHijackedjs' );
    }
    add_action('init','fuckHijacked', 1);

    要注意的是,add_action(); 函数第三个参数一定要尽量小,保证伪造的js库加载到所有js库之前。

至此,前台后台都可以无障碍访问了。但是,页面的“小广告”却没有根治,还要配合CSP设置进行内容保护。CSP全称Content Security Policy,具体介绍。我的csp设置是:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' *.duoshuo.com *.googleapis.com *.twitter.com *.baidu.com; frame-src 'self' *.weibo.com">

可根据自己网站的情况更改。


坦率地说,上面的方法,无论是伪造劫持目标文件还是csp,都不是非常“优雅”的方法。除了上面的方法,其实还有终极解决办法:给网站购买设置独立IP,然后安装ssl加密。但是,那不是得增加费用么,而且我的可怜小站是自己当日记本和业余爱好用的,搞那么高端明显没必要。

就这样吧。

《简单粗暴绕过http劫持》有2个想法

发表评论

电子邮件地址不会被公开。