苹果移动设备蹿墙可选择的技术很少(不越狱的话)。看到一个零配置的新思路:建一个网站 phuckgfw.com;在DNS上把所有*.phuckgfw.com都解析过来;从HTTP头的HOST里获取实际要访问的服务器。譬如要访问 www.blocked.com,在浏览器里输入www.blocked.com.phuckgfw.com就可以了。比cgi代理效果和体验都好。
还算比较有意思的东西,其实和我以前想的连接ISP的wifi然后通过DNS Tunnel免费上网的办法有点类似——我想的这个DNS Tunnel和网上流传的不同,即使ISP配置了未认证的客户端只能访问指定的DNS服务器的UDP 53端口也没用,直接无视。前些时候无聊的时候我把协议都设计好了,只是后来因为别的事情耽搁了,没有写代码。
回来说正事儿。我把自己的域名icylife.net配置了一个泛解析,然后写一个perl运行在TCP 9090端口,访问http://www.youtube.com.icylife.net:1024就是在访问youtube。这个perl脚本才30多行代码,昨晚趁宝宝睡觉时候写的,不过不支持POST,然后替换返回页面内容中的链接地址时做得比较恶心,肯定是有bug的。如果要真正实用,建议使用nginx+perl来实现。
我应该有1年多没写过代码了,重温了一把coding的感觉。
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
32
33
34
35
36
37
38
39
40
41
| #!/usr/bin/perl use warnings; use strict; use LWP::UserAgent; use Domain::PublicSuffix; use AnyEvent::HTTPD; my $httpd = AnyEvent::HTTPD->new (port => 1024); $httpd ->reg_cb ( '' => sub { my ( $httpd , $req ) = @_ ; my $path = $req ->url->as_string; my $host = $req ->{hdr}->{host}; $host =~ s/\.icylife.*//g; print $url , "\n" ; my $ua = LWP::UserAgent->new; my $response = $ua ->get( $url ); if ( $response ->is_success) { my $raw_content = $response ->content; my $suffix = Domain::PublicSuffix->new( ); my $root = $suffix ->get_root_domain( $host ); $raw_content =~ s/ $root / $root \.icylife\.net:1024/g; $req ->respond( { content => [ $response ->header( 'content-type' ), $raw_content ] } ); } else { $req ->respond( { content => [ 'text/html' , "<html><body><h1>fuck !</h1></body></html>" ] } ); } }, ); $httpd ->run;
from http://web.archive.org/web/20131031124154/http://www.icylife.net/blog/?p=847 |