镜像网站屏蔽方法,欢迎补充

  • 内容
  • 评论
  • 相关

起 因

很多网站都被这些
ytlqpo.com
www.92dan.cn.s3.gvirabi.com
www.92dan.cn.3s3s.org
www.92dan.cn.lapaleo.com
给做了镜像。

我的 www.92dan.cn.lapaleo.com —— 也不能幸免。被人用反向代理做了一个一模一样的站。
这和当初七牛一样,七牛镜像当初没有robots.txt 导致多个网站内容相同而被降权。

解决方法一

获取镜像网站他服务器的IP,然后封禁。(注:这个IP不是ping到他域名的IP)
必须从访问日记中获取,不过一般日记文件很大,很难一遍遍查找,所以可以用一个php文件来获取它,代码如下:

1
2
3
4
5
6
7
<!--?php &lt;br ?--> $file = "ip.txt"; // 保存ip的txt文件
$ip = $_SERVER['REMOTE_ADDR'];
$handle = fopen($file, 'a');
fwrite($handle, "IP Address: ");
fwrite($handle, "$ip");
fwrite($handle, "\n");
fclose($handle);

将它保存为ip.php,上传到网站的根目录。
然后访问镜像站点下的该文件,例如:www.92dan.cn.s3.gvirabi.com/ip.php 。
这样就会在你网站的根目录生成一个ip.txt文件,打开它就可以看到镜像站点的ip了。
剩下要做的就是对此ip进行封禁。就是屏蔽掉IP,可以在服务器设置,或者还可以在在.htaccess中加入 deny from xxx.xxx.xxx.xxx 即可,虚拟主机可以在空间后台设置。

解决方法二

之前的JS方法已经失效,我写了一个针对wp的新js方法,通过拆分域名链接与镜像站比对,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站。

代码如下:(复制粘贴到主题的functions.php最后一个?>之前)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 防镜像

add_action('wp_footer','inlojv_reverse_proxy_defense');

function inlojv_reverse_proxy_defense(){
$domain_arr = explode('//',home_url());
$domain = $domain_arr[1];
echo '<img style="display:none" id="inlojv-rpd" src="nothing" data-url="'.home_url().'" onerror="var str0=document.getElementById(\'inlojv-rpd\').attributes.getNamedItem(\'data-url\').nodeValue;var ishttps=\'https:\'==document.location.protocol?true:false;

if(ishttps){
    var str1=\'https\'+\'://\';
    }else{
    var str1=\'http\'+\'://\';
    }

var str2=\''.$domain.'\';
var str3=str1+str2;
if( str0!=str3 ){
alert(\'\u6b64\u7ad9\u4e3a\u6076\u610f\u955c\u50cf\u7ad9\uff01\u5c06\u7acb\u5373\u4e3a\u60a8\u8df3\u8f6c\u5230\u6e90\u7ad9\uff01\');

if (!!(window.attachEvent && !window.opera)){
    document.execCommand(\'stop\');
    }else{
     window.stop();
    }

var str4=\'wind\'+\'ow.loca\'+\'tion.rep\'+\'lace(str3)\';eval(str4);

}">'
;
}