代理技术之在线代理网址加密方式自定义修改
Posted by unknow in 浏览器 on 2010年1月9日
首先分析一下为什么在这个问题上墙不会太狠。首先申明这个判断是基于目前的情况,对于伟大的天朝,明天会怎么样是谁也无法预测的,always ***er than you think(***为某些形容词,可以自己填空,哈)。
1、在线代理目前仍是一个小众的东西,规模并没有大到引起高层敏感的程度,毕竟我国网民的平均文化水平和人权意识还相当低。
2、封锁技术还没有足够成熟,某些技术细节上还存在困难,导致封锁成本太高,即使偏执的天朝也不是那么情愿承担。
3、实现对base64加密的过滤并不是针对在线代理依靠的网址加密,而是针对容量巨大的内容加密,即为了过滤关键词。
其实在线代理之所以要把网址用base64加密,是出于字符兼容性的考虑,能实现穿越只是个副作用,并不是设计初衷,毕竟如此厉害的墙是咱们特有的,在国际上还是非主流。以前能实现穿越只是因为墙当时还不够完善,现在考虑到了而已,属于正常范畴。
对于自己搭建在线代理平台(不是说聚合即盗链的方式,而是在自己的服务器上搭建,消耗自己的资源),变更网址加密的方式有无数种,我最近看到的就有字母乱序、替换.为*、加减元素等等五花八门的方法,例如下面这种自定义函数实现随机数加密,确实很有意思,由于加密条件是个性化的,加密结果还可以随机变化,这样基本上无论墙怎么设置过滤条件都无法实现封锁:
function encoded($ses) { $sesencoded = $ses; $num = mt_rand(3,9); for($i = 1 ; $i <= $num ; $i++) { $sesencoded = base64_encode($sesencoded); } $alpha_array = array('Y','D','U','R','P','S','B','M','A','T','H'); $sesencoded = $sesencoded . "+" . $alpha_array[$num]; $sesencoded = base64_encode($sesencoded); return $sesencoded; }//end of encoded function function decoded($str) { $alpha_array = array('Y','D','U','R','P','S','B','M','A','T','H'); $decoded = base64_decode($str); list($decoded,$letter) = split("\+",$decoded); for($i = 0 ; $i<count($alpha_array) ; $i++) { if($alpha_array[$i] == $letter) break; } for($j=1;$j<=$i;$j++) { $decoded = base64_decode($decoded); } return $decoded; }//end of decoded function
上面说的加密方式都挺有效,但稍显繁琐,尤其当程序代码中要修改的地方很多时更是如此,其实由于函数可以嵌套,最简单的思路是用base64重复加码就可以了,即:
base64_encode(base64_encode($url)); base64_decode(base64_decode($url));
简单吧,这样就没法实现过滤了,那么墙有没有可能考虑到这一点,在过滤时加以检测?当然有可能,但可能性不大,因为作为数据量如此庞大的过滤检测,如果增加一重函数检验,会增加巨大的硬件成本,还会进一步拖慢网络速度。即使墙真这么变态检测二次加码也没关系,咱再重复加码1次、3次、10次……不就行了嘛,看这个负载墙受不受得了,哈哈。退一万步讲,要真这么变态了,用上面的自定义加密函数的方法就行了,绝无完全封锁的可能。
This entry was posted on 2010年1月9日 at 上午6:21 and is filed under 浏览器. You can follow any responses to this entry through the RSS 2.0. You can leave a response.
- No comments yet.