my blog my blog

Tag: 反代
关于bench.sh网站的实现

最近看到一条命令很有意思,一起来和大家解读一下,这个网站就是bench.sh

可能搞VPS的朋友很熟悉一条命令

wget -qO- bench.sh | bash

用这条命令可以直接实现linux下运行bench.sh的命令,刚开始奶牛也挺疑惑的,难道wget还自带这种功能,其实不然,命令中的bench.sh是个网站,对,是个网站,访问网站我们可以看到如下提示:

嗨!欢迎使用 Bench.sh

你可以使用以下命令来查看您的 Linux 系统信息,还可以测试网络带宽及硬盘读写速率

wget -qO- bench.sh | bash

或者

curl -Lso- bench.sh | bash

有意思的事儿发生了对么?为什么我们访问网站和我们wget得到的效果不同?因为网站对于user agent进行了识别。如果我们在命令行中执行

wget -O- bench.sh

我们可以看到如下结果:

Resolving bench.sh (bench.sh)... 149.202.55.78
Connecting to bench.sh (bench.sh)|149.202.55.78|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://86.re/bench.sh [following]
Resolving 86.re (86.re)... 104.224.156.154
Connecting to 86.re (86.re)|104.224.156.154|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7017 (6.9K) [application/x-sh]
Saving to: 'STDOUT'

好了,我们看到了一个302的字眼,这个是通过重定向来实现的,直接将使用wget和curl的user agent重定向到了http://86.re/bench.sh这个文件,所以我们wget或者curl得到的是这个文件。这里奶牛猜测原作者应该是用rewrite来写的,直接用web服务器进行ua判定之后rewrite到了这个文件。

奶牛的文章到这里并没有结束,来想想还除了rewrite还有没有其它的实现方法?奶牛感觉还有至少两种实现方法,反代可以实现,还有直接在服务器内进行根目录的重定向也可以实现。奶牛就把后者的实现过程来说一下。web服务器奶牛用的nginx。对网站conf进行配置修改:

server
    {
        listen 80;
        #listen [::]:80;
        server_name bench.2fu.org ;
        set $target bench.2fu.org ;
        if ( $http_user_agent ~* "(wget)|(curl)" )
        {
                set $target bench.2fu.org/true ;
        }
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/$target;

        include none.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/bench.2fu.org.log;
    }

然后将true目录下建立一个index.html然后内容就是bench.sh。这样实现的效果是:

Resolving bench.2fu.org (bench.2fu.org)... 
Connecting to bench.2fu.org (bench.2fu.org)|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7017 (6.9K) [text/html]
Saving to: 'STDOUT'

没有302,奶牛更喜欢200 OK 。其实nginx服务器要是折腾折腾配置也很有意思。

 

 

gooreplacer+反向代理=完美使用Google各种库

 

事情的起因是这样子的,正看着网页,然后忽然发现ajax.googleapis.com一直一直在载入,就是载入不进去,然后就很难过,我知道是被墙掉了,可是很不甘心,找个反代就可以比较完美解决这个问题,但是单纯的反代在服务器端容易实现,可是我们又不能改人家网站沿用的网址代码,所以,必须要从我们本地的浏览器入手来搞定这个问题。

奶牛一直用firefox用了很多年了,比较习惯,找到了一个插件gooreplacer,国人开发的,使用效果挺好的,用firebug看了下,应该是在页面载入过程中把get方法啥的网址又新加了一个get,来get反代的内容,不懂firefox插件怎么实现过程的,感兴趣的可以看作者的github。

好了,进入正题,下载地址:http://liujiacai.net/gooreplacer/

firefox版本:https://addons.mozilla.org/zh-CN/firefox/addon/gooreplacer/versions/?page=1#version-0.6

chrome版本:https://github.com/jiacai2050/gooreplacer4chrome#install

然后配置也很简单,默认用的科大的反向代理,但是个人感觉效果不好,换了360的反代。

  1. ajax.googleapis.com ---->   ajax.useso.com       
  2. fonts.googleapis.com    ---->   fonts.useso.com  
  3. libs.googleapis.com ---->   libs.useso.com   
  4. themes.googleusercontent.com    ---->   google-themes.lug.ustc.edu.cn        
  5. fonts.gstatic.com   ---->   fonts-gstatic.lug.ustc.edu.cn        

最近都没有搞什么东西,更新非常缓慢,见谅。