如何用 10 行 nodejs 代码开发一个 google 镜像站 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yzhen123
V2EX    Node.js

如何用 10 行 nodejs 代码开发一个 google 镜像站

  •  2
     
  •   yzhen123 2017-05-31 20:13:56 +08:00 5813 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    嘿嘿,其实是有点标题党了。。

    Google 的首页的静态资源并没有使用 CDN,实现起来其实是比较简单的,如果有 CDN 的话还需要用正则替换静态链接。这里使用了 koa-proxy,虽然是下载之后再转发可能会带来一定的性能影响,不过可以使用 koa 的中间件对响应进行修改,如果用 koa-http-proxy 的话就没这么容易了。。

     const Koa = require('koa') const proxy = require('koa-proxy') const mount = require('koa-mount') const cOnvert= require('koa-convert') const app = new Koa(); const zlib = require('zlib') app.use(convert(function * (next) { yield next if (this.path === '/' || this.path === '/search') { const data = yield zlib.gunzip.bind(zlib, this.body) const str = data.toString('utf-8').replace(/<body([^>]*)>/, `<body$1> <div style="font-size: 14px; text-align: center; padding: 3px 10px;">Powered By <a href="https://www.lets-ss.com">lets-ss.com</a></div> `) this.body = yield zlib.gzip.bind(zlib, str) } })) app.use(convert(proxy({ host: 'https://www.google.com.hk', // 目标站 点 jar: true, // 转发 cookie followRedirect: false, // co-request 的参数,不跟随跳转 }))); app.listen(80); 

    测试可以使用 proxychains 让命令行走代理

    proxychains node ./index.js 

    顺便分享一下我搭建的站点: https://g.lets-ss.com

    16 条回复    2017-06-02 13:47:17 +08:00
    ixiaohei
        1
    ixiaohei  
       2017-05-31 20:19:46 +08:00
    反代,不过你网站速度真慢
    Showfom
        2
    Showfom  
    PRO
       2017-05-31 20:20:49 +08:00
    这样公开域名很容易被墙的
    yzhen123
        3
    yzhen123  
    OP
       2017-05-31 20:22:18 +08:00
    @ixiaohei 额,可能是有些广告或者统计链接还是走了 google 的域名
    des
        4
    des  
       2017-05-31 20:23:58 +08:00 via Android
    数了一下,不止 10 行,lol
    yzhen123
        5
    yzhen123  
    OP
       2017-05-31 20:25:10 +08:00
    @des 其实 如果去掉修改网页内容的代码,加起来也只有 10 行多一点
    yzhen123
        6
    yzhen123  
    OP
       2017-05-31 20:28:32 +08:00
    @Showfom 是吗?谢谢关系,不过没关系,现在节点比较多,玩完了就撤。。
    yzhen123
        7
    yzhen123  
    OP
       2017-05-31 20:29:06 +08:00
    @Showfom 谢谢关心。。
    KIDJourney
        8
    KIDJourney  
       2017-05-31 20:36:07 +08:00
    说什么一共 10 行,你考虑过 Koa 的感受吗?
    yzhen123
        9
    yzhen123  
    OP
       2017-05-31 20:45:45 +08:00
    @KIDJourney 嘿嘿,其实是有点标题党哈,第一行就已经承认了,求各位大佬轻喷
    est
        10
    est  
       2017-05-31 21:20:01 +08:00
    如何一行代码都不写用 nginx 实现无痛人流

    /t/341913
    douglas1997
        11
    douglas1997  
       2017-06-01 00:02:46 +08:00
    package.json 可以共享一下吗?
    eccstartup
        12
    eccstartup  
       2017-06-01 00:26:18 +08:00 via iPhone
    @douglas1997 这是什么鬼
    douglas1997
        13
    douglas1997  
       2017-06-01 07:26:04 +08:00
    @eccstartup ?? nodejs 程序不是需要 packages.json 然后安装依赖?不知道楼主 koa 是什么版本。
    loadinger
        14
    loadinger  
       2017-06-01 09:11:47 +08:00
    nodejs 会被你们这样搞臭的.别取这样的名字好么..
    Dye8
        15
    Dye8  
       2017-06-01 10:56:56 +08:00
    10 行还不简单 楼主快去几个换行
    470326964
        16
    470326964  
       2017-06-02 13:47:17 +08:00
    @Dye8 标题党。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3570 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:16 PVG 08:16 LAX 16:16 JFK 19:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86