真心搞不懂,我这一个破博客居然会有人镜像,真是吃饱了撑啊!刚开始发现 Google 搜索博客会出现一下稀奇古怪的结果,没多在意,也不知道是怎么回事。后来知道那是被镜像了,然后 Google 找到了解决办法,折腾上去几天,好像真有点效果。
参考
1、张戈博客 - 分享一个网站防镜像以及解决七牛静态页面跳转的js方案;
2、龙笑天下 - 网站被恶意镜像怎么办 一段代码轻松搞定(全面版)
可用方法
.htaccess 阻止 IP(龙笑天下)
这个方法简单粗暴,但是镜像站换了 IP 就失效了。我主要用来对付这货:https://fireproxy.crushus.com/cyhour.com,实测上面参考的代码除了阻止 IP 外,对这个站都无效。
获取镜像服务器 IP
注:这个 IP 不是 ping 到他域名的 IP!!!
复制如下代码,新建一个 php 文件,并命名为「ip.php」上传到你的网站根目录。
<?php
$file = "ip.txt"; //保存的文件名
$ip = $_SERVER['REMOTE_ADDR'];
$handle = fopen($file, 'a');
fwrite($handle, "IP Address:");
fwrite($handle, "$ip");
fwrite($handle, "\n");
fclose($handle);
?>
然后访问你网站的镜像站点,在地址后面加 /ip.php,在你的网站根目录就能找到 ip.txt 文件,复制里面的 IP 地址。
修改 .htaccess 文件
在后面加上如下代码(xxx.xxx.xxx.xxx 修改为上面获得的 IP)
Order Deny,Allow
Deny from xxx.xxx.xxx.xxx
如果你使用 CDN,可以直接在 CDN 后台添加 IP 黑名单。这个时候你再刷新一下镜像站点,如无意外,已经 403 了。
csdn.net 版本
<div style="display:none;">
<img src="" onerror='setTimeout(function(){if(!/(csdn.net|iteye.com|baiducontent.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baidu.com)$/.test(window.location.hostname)){window.location.href="\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x73\x64\x6e\x2e\x6e\x65\x74"}},3000);'>
</div>
结合 WordPress 版本:
// http://php.net/manual/zh/function.bin2hex.php url 字符串转十六进制
if ( !function_exists( 'str2hex_encode' ) ) {
function str2hex_encode($data) {
$data = "\\x" . substr(chunk_split(bin2hex($data),2,"\\x"),0,-2);
return $data;
}
}
// 网站防止被恶意镜像 https://cyhour.com/510/ 最后更新时间:20180915
add_action('wp_footer','theme_deny_mirrored_websites');
function theme_deny_mirrored_websites(){
$myurl = parse_url(esc_url( home_url('/') ), PHP_URL_HOST);
$myurl = preg_replace("/^www\./", "", $myurl); //eg:cyhour.com
//镜像站超时 3600ms 跳转回源站(蜘蛛例外)
echo '<div style="display:none;"><img src="" onerror=\'setTimeout(function(){if(!/('.$myurl.'|google.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baiducontent.com|baidu.com)$/.test(window.location.hostname)){window.location.href="'.str2hex_encode(esc_url( get_permalink() )).'"}},3600);\'></div>';
}
WordPress 专用版(龙笑天下)
/**
* 网站被恶意镜像 http://www.ilxtx.com/mirrored-website.html 最后更新时间:20171022
*/
add_action('wp_footer','theme_deny_mirrored_websites');
function theme_deny_mirrored_websites(){
$currentDomain = 'cyhour." + "com';
echo '<img style="display:none" src=" " onerror=\'this.onerror=null;var str1="'.$currentDomain.'";str2="docu"+"ment.loca"+"tion.host";str3=eval(str2);if( str1!=str3 && str3!="cache.baiducontent.com" && str3!="webcache.googleusercontent.com" && str3!="c.360webcache.com" && str3!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "\"' . $currentDomain .'\"" + ")";eval(do_action) }\' />';
}
注意:旧版本 onerror 死循环会造成浏览网页的电脑高负载(CPU飙升),详见:博客网页导致电脑CPU飙升的问题解决记录
禁止 UA 为空或含有 PHP 的请求(张戈博客)
if(!is_admin()) {
add_action('init', 'deny_mirrored_request', 0);
}
function deny_mirrored_request()
{
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
if( ( empty( $ua ) ) || preg_match('/PHP/i', $ua)) {
header("Content-type: text/html; charset=utf-8");
wp_die('请勿采集本站,因为采集的站长木有小JJ!');
}
}
附:http 跳转 https 的 js 代码(张戈博客)
<script type="text/javascript">
/* 如果当前是http访问,那么跳转到对于的https页面 */
if (document.location.protocol != "https:") {
location.href = location.href.replace(/^http:/,"https:");
}
</script>
完。
本文首发于:网站被恶意镜像解决方法-垃圾站
我的估计不会有镜像。
@不亦乐乎 应该会有,不信搜搜,哈哈。
@不亦乐乎

特意搜了一下,真的有的,哈哈。
@老头 哈哈~~还真有呢~~~
我的乱七八糟的,咱不担心这个,哈哈!
@方室网志 看着心里还是不舒服的。
@老头 我的竟然也有!
过来看看福利的,不知道怎么用,把代码贴到哪里去?要装什么支持运行JS的插件吗?
@方室网志 基本的 js 库支持,代码添加到你自定义的 js 文件里面就可以。
还有这样的事? 不过估计我这里也有问题。症状:明明早就不用多说了。结果访问网页(嵌入多说)时候汇报有10条新回复。死活不知道从哪里来的。干脆登陆多说,删除站点完事。
@路杨 你这站倒还好,这货镜像出来的都是乱码:https://fireproxy.crushus.com/easun.org/
@老头 哈哈。估计是因为我的每个页面开头都有 【html lang=”en”】。但是后面指定了 utf-8 ,这样造成了机器人误判。。
@路杨 赞,你这个也不失是一个解决方法。
收藏
@老虎 可以用上,一般都会有镜像的。见:https://fireproxy.crushus.com/travel.synyan.net/
不折腾了,爱咋咋的,这世界 SEO 垃圾太多了。
@fooleap 也是,防不胜防。
镜像网站会被谷歌惩罚的吧。我的没啥价值就懒得防了……
@随望淡思 折腾也有乐趣,哈哈。
去年我的网站也被镜像了,处理后就没被镜像过了
@钛客志 我的竟然被镜像了,只是博客启用了Pjax,所以镜像我的首页点哪个链接都不管用
@钛客志 正常,好像那是个代理网站。
@老头 所以昨晚突发奇想用这个网站看YouTube,确实挺爽
@钛客志 速度快不?快的话还不错哦。
@老头 视频倒是能看
我的有吗?麻烦搜索一下 :) 你这方法不错,希望能用上,哈哈。
@郑永 哪用搜,直接输网址就出来了:https://fireproxy.crushus.com/xptt.com
@老头 还是这个镜像完美一些。 http://3dmoscow.ru/an.php?session_new=aHR0cDovL3hwdHQuY29tLw$$?
@郑永 赞!
尔等网站太出名了,我等P站没人镜像~哈哈
@chencool 你是处理过了吧?
我的破站也被镜像……
但是这样做对他有益处吗?
@皮皮 有吧?如果内容好的话,搜索就进入他的网站了,然后他的站很多广告。。。
貌似这个好奇怪,不会是自动抓取吧?
@夜枫 它的官网介绍像是一个在线代理工具:UnBlocked Every Blocked, Censored Website, Free | Crushus.com。
快去举报
fireproxy.crushus.com/t66y.com
@神父 学习了。
@神父 非常6,骚年~ 不过是乱码啊….
@龙笑天 估计是饭袋的编码和源站不一致吧,不过,能看图就好了
学习了
@老张 一起学习。
看了福利我就放心了
@木瓜园 是失望了吧?哈哈~
怎么搜?帮我看看我的博客有没有被镜像吧。
@秦大叔 你的好像没有,一般搜索引擎搜索:intitle:网站首页完整名称 就能看到有没被镜像了。
我很早就被镜像了,一直js守护
@kn007 老司机~
对于镜像,我是宁杀一千也不放过一个~~这个镜像,今晚解决。
@姜辰 哈哈,关键是先能杀。
inlojv大法好,哈哈
@JV 请指教~
包括一些大站点都是有的
@小萝博客 大站点不怕被镜像。
好神奇,我的竟然也有~
@Meekdai 一般都会有。
我每三个月屏蔽一批。。。。
@姜辰 老司机。
收藏了!
@林三 希望能帮上忙。