嘿嘿,其实是有点标题党了。。
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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.