主机头

 找回密码
 立即注册
查看: 2019|回复: 4
打印 上一主题 下一主题

如何防止别人反代主机的站

[复制链接]

879

主题

2

好友

5477

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2013-9-3 15:55:15 |只看该作者 |倒序浏览
是啊很怕对吧?
有个办法可以试试看。
  1. <?php
  2. $nowurl = $_SERVER['HTTP_HOST'];
  3. if($nowurl!="www.你的.com"){
  4.    header("location:www.baidu.com");
  5. }
复制代码
或者JS
  1. <script type="text/javascript">
  2. if (document.domain != 'yourdomain.com' && document.domain != 'www.yourdomain.com'){
  3.         window.location.href='http://大人站 /';
  4. }
  5. </script>
复制代码
或者301试试看咯。

感谢支持主机头,如果有问题可以联系我的QQ。目前提供各种服务。
网站建设,网站优化,美国VPS购买,VPS环境配置等。
目前通过本站购买VPS的话,可以免费帮忙配置环境。
付费提供DISCUZ PW DEDECMS技术支持。
www.www88.me
回复

使用道具 举报

879

主题

2

好友

5477

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2013-9-4 05:45:18 |只看该作者
一句话反代的方法来咯可以防止一般代理或反代自己的网站。
  1. PHP:
  2. <?php
  3. (isset($_SERVER['HTTP_X_REAL_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR'])) && exit('<!--by amysql-->');
  4. ?>

  5. Nginx:
  6. $sent_http_connection
  7. $sent_http_keep_alive
  8. $server_protocol
  9. 变量判断。

  10. JS:
  11. 打乱网址,进行window.location判断。

  12. -----
复制代码
PHP的方法需X_FORWARDED_FOR有设置才有效,
Nginx的方法对Nginx默认http_proxy的配置有效,但还是可以更改的。
最后JS方法如果反代+替换的话仍然能更改。

看样子想彻底防止还是很困难,所有请求数据都可模拟与更改。

感谢支持主机头,如果有问题可以联系我的QQ。目前提供各种服务。
网站建设,网站优化,美国VPS购买,VPS环境配置等。
目前通过本站购买VPS的话,可以免费帮忙配置环境。
付费提供DISCUZ PW DEDECMS技术支持。
www.www88.me
回复

使用道具 举报

879

主题

2

好友

5477

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2013-9-4 05:48:30 |只看该作者
圈圈的反代方法

本帖最后由 404 于 2013-5-26 08:08 编辑


第一, 我标题党了

第二, 不保证没BUG,  不保证后续支持, 不保证与使用者的现有程序不冲突,性能方面没做优化, 没做详尽测试, 使用者自承风险

使用方法, php>=5.3

单独一个站->手动把以下代码放置在代码顶部 (<?php 下面)
全局->保存成单独的php文件, 然后把路径设置在php.ini的auto_prepend_file里

  1. function miemie_hash_str($string, $add_mark='+'){
  2.     $len = strlen($string);
  3.     $chunk_length = mt_rand(1, $len)>>1;
  4.     $chunk_length = $chunk_length ? $chunk_length: 1;
  5.     $chunk_per_size = (int)($len/$chunk_length);
  6.     $chunk_per_size = $chunk_per_size ? $chunk_per_size: 1;
  7.     $result = array();
  8.     $current = 0;

  9.     while($current<$len){
  10.         $tmp = rand(1, $chunk_per_size);
  11.         $result[] = ($current && mt_rand(0,1)?" \n ":'').($current%2?"'":'"').addslashes(substr($string, $current, $tmp)).($current%2?"'":'"');
  12.         $current+=$tmp;
  13.     }
  14.     return join($add_mark,  $result);
  15. }

  16. function miemie_anti_proxy($url=false){
  17.     if($url === false){
  18.         $url = (empty($_SERVER['HTTPS'])?'http://':'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  19.     }
  20.     $val = '(window['. miemie_hash_str('top').']['.miemie_hash_str('location').']'.'=='. miemie_hash_str($url) .') || ('.'window['. miemie_hash_str('top').']['.miemie_hash_str('location').']'.'='. miemie_hash_str($url).');';
  21.     return $val;
  22. }

  23. ob_start(function($content){
  24.     // 关闭的时候在自己php文件顶部加一行
  25.     // define('MIEMIE_DISABLE', 1);
  26.     if(!defined('MIEMIE_DISABLE')) {
  27.         $inject_type = mt_rand(0,1);
  28.         $inject_content = miemie_anti_proxy();
  29.         if($inject_type == 0){
  30.             $content = preg_replace('~</head>~is', '<script'.(mt_rand(0,1)?"\n":"").">$inject_content</script>\n</head>", $content, 1);
  31.         }else if($inject_type == 1){
  32.             $inject_content = htmlspecialchars($inject_content);
  33.             $content = preg_replace('~<img([^>]+>)~is','<img '.(mt_rand(0,1)?"\n":"").'onerror="'.$inject_content.'" '.(mt_rand(0,1)?"\n":"").'onload="'.$inject_content.'"\\1', $content, 1);

  34.         }
  35.     }
  36.     return $content;

  37. });
复制代码
犀利的反代模式

圈圈js防反代啊。

不过,还可以破的啊。
把window["t替换掉。JS就跑不了。


圈圈回复

昨晚恍然发现连我都被反代了

其实可以填空空字符, 包括随机字符.replace....
js里global态可以拿this替代window..
再拿\xNNN, \uNNNN随机替代字符

不过现在这样已经够我用了......至少已经把几个反代站IP都挖了出来, 接下来就是判断IP然后301 location了

感谢支持主机头,如果有问题可以联系我的QQ。目前提供各种服务。
网站建设,网站优化,美国VPS购买,VPS环境配置等。
目前通过本站购买VPS的话,可以免费帮忙配置环境。
付费提供DISCUZ PW DEDECMS技术支持。
www.www88.me
回复

使用道具 举报

879

主题

2

好友

5477

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2013-9-4 05:51:04 |只看该作者

反代第三季


好吧, 对您这类高技术, 高智商的妹子(非歧视,Onz)。

可以采用多个 (2号)域名的组合方式。

比如说我准备 5 个域名。  5 个域名的全排列组合有多少, 我数学已经还给老师了, 反正是不少。

1域名 必须 和主域名  IP 一致。
2域名 必须 和主域名  IP 不一致。
3域名 必须 和主域名  IP 不一致。
4域名 必须 和主域名  一致。
5域名 必须 和主域名  一致。

这个组合答对了, 认为不是反代 正常访问。   如果答错了, 认定为是反代,输出 1024。

对方很厉害的话, 短时间使用程序测试出了, 那么换一种组合。 如果想让对方猜的费劲些, 增加一个二级域名好了。

以上 5 个域名, 纯属 yy。 其实 二级 域名和顶级域名的地位完全是等同的。 那么上面的5个域名完全可以用5个二级域名代替。

比如
cdn1.1024.com      1
cdn2.1024.com      0
cdn3.1024.com      0
cdn4.1024.com      1
cdn5.1024.com      1

被破解, 换个组合好了。 当然, 为了增加破解难度,可以多增加几个 二级子域名。

缺点, 参与混淆的域名越多, 就会更容易出现误判的现象。

当然这里面可以采用一种宽松的模式, 来降低误判的影响,比如设置一个阈值, 不见得要一下全中, 3吃访问, 两次命中,认为是正常访问。。。
对于防破解。

都知道, 必须使用程序。 那么可以针对程序破解增加难度。

比如第一次未命中, 那么好吧, 高度可疑是反代高手的,那么您再次请求的时候, 对不起,我的地盘我做主,请您来验证个高难度的图片吧, 我知道您可以云打码,那就花钱慢慢打吧。。。打过去, 我没事看看反代的可疑IP和域名,发现被破解,我就换个组合吧。 您继续破解。  

我还可以通过程序什么的监控反代域名, 这个是非常容易的,当发现对方已经破解了, 自动换个组合。。。


感谢支持主机头,如果有问题可以联系我的QQ。目前提供各种服务。
网站建设,网站优化,美国VPS购买,VPS环境配置等。
目前通过本站购买VPS的话,可以免费帮忙配置环境。
付费提供DISCUZ PW DEDECMS技术支持。
www.www88.me
回复

使用道具 举报

879

主题

2

好友

5477

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2013-9-4 05:54:19 |只看该作者
最强的方法qiqi

这么简单。。。服务端获取socket链接,然后用curl构造一个request,request到80,但是有误伤可能性。

最简单的就是javascript了,可以使用各种密文,然后再用javascript解密,这样就防止了反向代理自动替换特征码的可能性。

比如说后端一天自动更新一次scripts,密匙为今天的日期,密文自动生成,这样就替换不了了
还有一个方式就是静态资源重定向,匹配静态资源规则到host的一个特定端口,当然他把你这个端口代理了,就没办法了。(可以拓展下,还有其他方法的)
最简单有效的还是javascript
而且还有一个问题,反代流量大了,会触发litmit request。很多方式的。
HS反驳道

JS push 到前端的时候, 就不存在秘密了。

当然我不是专门搞破解的。 但是 js 混淆 或者 加密, 强度有多高呢 ?   对一个熟悉 js 的加密算法 的人来说, 应该不难破解的。
qiqi接招
混淆过后的,可以做到把一个var a = "abc";
变成var a; var b = "xxxxxxxxx"; a= b[x];
基本上不能用替换脚本
比如说 console.log

变态的可以做到

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('z 9$=["","\\\\\\A\\y","\\\\\\t","\\\\\\t","\\q",\'\\w\\x\\B\\F\\l\\G\\l\\E\\C\',"\\D\\j\\v\\o\\j\\m\\r","\\m\\j\\q","\\p\\r\\o\\p"];u(h(a,b,c,d,e,f){e=h(g){i g};L(! 9$[0].n(/^/,H)){k(;c--;)f[c]=d[c]||c;d=[h(g){i f[g]}];e=h(){i 9$[1]};c=J};k(;c--;)d[c]&&(a=a.n(I( 9$[2]+e(c)+ 9$[3], 9$[4]),d[c]));i a}( 9$[5],s,s,[ 9$[6], 9$[7], 9$[8]],K,{}));',48,48,'|||||||||_||||||||function|return|x6f|for|x22|x6c|replace|x73|x74|x67|x65|0x3|x62|eval|x6e|x30|x2e|x2b|var|x77|x31|x3b|x63|x29|x28|x32|String|RegExp|0x1|0x0|if'.split('|'),0,{}))


原语句是console.log('test')
HS继续反驳
关键点不是混淆。

你再混淆也需要提交到后台吧。

你提交的数据, 我需要动吗? 我只需要找到你的关键的那个变量, 然后我反代页面时代码上面加一句,把提交的参数剥离, 提交到我反代端,模拟正常用户提交就好了。


关键是找到有效的机制, 区别开正常访客和反代访客。在没有确定这个机制之前,讨论如何混淆,如何加密, 根本就没啥意义。



感谢支持主机头,如果有问题可以联系我的QQ。目前提供各种服务。
网站建设,网站优化,美国VPS购买,VPS环境配置等。
目前通过本站购买VPS的话,可以免费帮忙配置环境。
付费提供DISCUZ PW DEDECMS技术支持。
www.www88.me
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

主机头版权声明|百度地图|谷歌地图|Archiver|手机版|主机头

GMT+8, 2024-11-23 16:13

Powered by Discuz! www.zhujitou.com

© 2001-2012 主机头.

回顶部