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

2017-05-31 20:13:56 +08:00
 yzhen123

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

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

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

/t/341913
douglas1997
2017-06-01 00:02:46 +08:00
package.json 可以共享一下吗?
eccstartup
2017-06-01 00:26:18 +08:00
@douglas1997 这是什么鬼
douglas1997
2017-06-01 07:26:04 +08:00
@eccstartup ?? nodejs 程序不是需要 packages.json 然后安装依赖?不知道楼主 koa 是什么版本。
loadinger
2017-06-01 09:11:47 +08:00
nodejs 会被你们这样搞臭的.别取这样的名字好么..
Dye8
2017-06-01 10:56:56 +08:00
10 行还不简单 楼主快去几个换行
470326964
2017-06-02 13:47:17 +08:00
@Dye8 标题党。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/365021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX