V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imwalson
V2EX  ›  分享发现

扔掉“百度”,教你在 RunKit 上 5 行代码免费创建自己的 google 镜像站

  •  1
     
  •   imwalson · 2019-01-23 13:10:33 +08:00 · 4451 次点击
    这是一个创建于 2133 天前的主题,其中的信息可能已经有所发展或是发生改变。

    百度已死

    22 日晚,自媒体新闻实验室一篇名为《搜索引擎百度已死:沦为替百家号导流的工具》的文章刷屏。文章指责百度搜索结果一半以上会指向百度自家产品,尤其是百家号,而百家号充斥着大量营销和质量低劣的内容,也导致百度搜索结果的内容质量大幅下滑。

    这些年百度做过的恶,两只手都数不过来了,大家心里都有数。笔者也发现身边不少人“抵制百度”,却不得不用百度,原因是“用国内其他搜索引擎,体验比百度更差,爱国上网又不会,再加上买 VPN 或者自建 SS 服务也是一笔成本”。

    此教程适合哪些人?

    痛恨百度搜索,想日常使用谷歌搜索引擎作为替代,但是苦于没有爱国上网的技术或者成本的所有人。

    介绍 Runkit

    runkit.com 是一家什么网站?

    某个偶然的机会发现了 runkit.com 这个网站,官网的介绍是 "Runkit is a node playground in your broser",顾名思义就是允许你在浏览器中运行 node.js 的代码。你可以随意引用成千上万的 npm 模块并运行,立刻就能看到运行结果,在日常的 node.js 开发中非常实用,笔者经常用他家提供的服务来写一些测试代码,提高开发效率、节省了很多时间。具体的介绍大家可以去官网看,首页展示的两个视频能一目了然的看出来 Runkit 能干什么。

    runkit

    ps: 由于使用了谷歌字体,在国内打开 Runkit 网站可能很慢,建议翻墙访问,之后访问创建完的谷歌镜像服务 url 地址就不需要翻墙了。

    RunKit Endpoint

    除了上面介绍的“在线运行 node.js 代码”,RunKit 还提供了 Endpoint 服务。官网的说明是 "Endpoint is a fast and simple way to write code with Node.js that can respond to HTTP requests from anywhere. There's no need to manage servers or deployments, instead just write code in RunKit. Getting started is as easy as implementing one function."。简单来说 Runkit 允许用户通过 exports endpoint 函数,来获得一个 url 地址,实现一个小型的 HTTP Server,很像如今很火的 FaaS “函数即服务”,具体可看 官方文档。值得一提的是,除了默认的 endpoint 函数写法外,直接运行一个 express app 并且绑定在 3000 端口,同样也能实现相同的效果。Runkit 目前完全免费( Endpoint 服务存在一些资源调用限制,具体限制如何不清楚,但是个人使用完全足够了),目前 Runkit 已经被 Stripe 收购,相信他家的服务还是有保障的。

    借助 express.js 和 http-proxy-middleware 插件实现代理访问 google

    有了以上基础,想要创建自己的 google 镜像就非常简单了。

    1、免费注册账号,也可以使用 github 账号登录

    ps: 由于使用了谷歌字体,在国内打开 Runkit 网站可能很慢,建议翻墙访问,之后访问创建完的谷歌镜像服务 url 地址就不需要翻墙了。

    2、在个人中心创建一个工程

    kAfqk4.png

    3、拷贝如下代码并运行

    Title 标题随便写

    拷贝下面的代码到正文里,然后点 run 运行:

    var express = require('express');
    var proxy = require('http-proxy-middleware');
    var app = express();
    app.use('/', proxy({target: 'https://www.google.com/', changeOrigin: true}));
    app.listen(3000);
    

    4、点击“ endpoint ”按钮

    kAhpnK.md.png

    大功告成,点击“ endpoint ”后会跳转到一个 url 地址,不出意外这时候你应该已经能看到大大的“ Google ” logo 了(如之前开着 VPN,可以关闭 Vpn 后再打开这个地址试试),保存下这个地址,这就是你自己的私人 Google 镜像站了。

    这是我自己刚创建的镜像站链接:Google

    ps:

    1、此 Google 镜像站仅供测试,随时会删除,请自行按照以上步骤创建自己的镜像站;

    2、请勿滥用 Runkit 服务创建大量垃圾镜像站;请勿用于创建公开的网站服务(自己用就行,打算在上面建网站给他人使用还是算了),毕竟有请求数限制、且稳定性不足以胜任公开的网站要求。

    后话

    祝愿百度早点倒闭。

    第 1 条附言  ·  2019-01-24 11:41:07 +08:00
    演示站持续超出访问限制,已删。大家闷声发大财就好,自建项目自己用,最好不公布链接出来
    61 条回复    2019-01-25 14:09:46 +08:00
    LongLights
        1
    LongLights  
       2019-01-23 13:16:55 +08:00 via Android
    前排支持楼主
    wly19960911
        2
    wly19960911  
       2019-01-23 13:20:30 +08:00   ❤️ 1
    别把别人网站坑了啊,等下直接域名墙了你就得翻墙玩了。虽然现在开发几个不翻墙就是......
    RoyL
        3
    RoyL  
       2019-01-23 13:23:09 +08:00
    不错,挺好用的
    imwalson
        4
    imwalson  
    OP
       2019-01-23 13:23:46 +08:00 via Android
    @wly19960911 我也有点担心这个,我自己用这个方法好几年了,所以今天才分享出来。其实要使用这个网站本身是得会翻墙的,有一定门槛😂
    refugeezhao2018
        5
    refugeezhao2018  
       2019-01-23 13:30:30 +08:00 via Android
    建个油管会不会被打。。。
    viko16
        6
    viko16  
       2019-01-23 13:32:18 +08:00
    反过来流量一旦大了,谷歌也会觉得这个出口 ip 不安全 block 掉,或者增加 recaptcha 啥的
    imwalson
        7
    imwalson  
    OP
       2019-01-23 13:36:25 +08:00 via Android
    @refugeezhao2018 没用,这样只是代理了主站,你会发现点开进去以后很多资源包括视频都打不开,因为除了主站、youtube 还使用了其他非常多的资源二级域名都被封了
    imwalson
        8
    imwalson  
    OP
       2019-01-23 13:38:31 +08:00 via Android
    @viko16 各自建立自己的服务用各自的应该还好,Runkit 他家的服务也不是单机部署,可能你创建的镜像站跟我的就部署在不同区域,ip 都不一样的
    good
        9
    good  
       2019-01-23 13:44:35 +08:00
    好奇怪 用微信浏览器访问这个帖子会自动跳转到首页
    li02
        10
    li02  
       2019-01-23 13:46:44 +08:00
    @imwalson
    有没有免配置,能部署在自己服务器的方法?
    node 太复杂整不明白啊
    imwalson
        11
    imwalson  
    OP
       2019-01-23 13:51:14 +08:00 via Android
    @good 不知道为啥,我用浏览器打开也会跳
    imwalson
        12
    imwalson  
    OP
       2019-01-23 13:53:19 +08:00 via Android
    @li02 回头我可以把这个 node 工程写成简单的 docker 镜像,就能方便部署了。话说自己部署的话,除了用 node.js 还有其他更方便的解决方案啊,可以谷歌搜索一些
    ResidualWind
        13
    ResidualWind  
       2019-01-23 13:57:30 +08:00
    操作简单 已创建 感谢楼主
    imwalson
        14
    imwalson  
    OP
       2019-01-23 13:58:27 +08:00 via Android
    @ResidualWind 感谢为埋葬百度添加一把土🙂
    ggwp
        15
    ggwp  
       2019-01-23 14:03:41 +08:00
    感谢楼主的分享
    Trumeet
        16
    Trumeet  
       2019-01-23 14:10:53 +08:00
    感謝,不過這網站遲早....( x
    dapengzhao
        17
    dapengzhao  
       2019-01-23 14:15:50 +08:00
    {
    "error": "rate_limit_exceeded",
    "message": "There have been too many requests to this server. Try again later."
    }
    adamwang
        18
    adamwang  
       2019-01-23 14:18:52 +08:00
    感谢楼主的分享。
    imwalson
        19
    imwalson  
    OP
       2019-01-23 14:25:47 +08:00 via Android
    @dapengzhao 我放的测试镜像站已经超出了请求数了😂自己创建个新的自己用应该够用,一个工程不行就多创建几个工程换着用
    loli
        20
    loli  
       2019-01-23 14:32:19 +08:00 via Android
    @imwalson 大佬请问下有 DDoS protection by Cloudflare 的怎么反代?比方说 javlib.提示您未获授权,无法查看此网页。
    https://untitled-lc28rlt3s02r.runkit.sh
    imwalson
        21
    imwalson  
    OP
       2019-01-23 14:48:08 +08:00
    @loli 目前没有太好的绕过的办法,你可以参考这篇文章: https://blog.zengrong.net/post/2366.html
    shyrock
        22
    shyrock  
       2019-01-23 14:48:18 +08:00
    超赞!!感谢了。
    realkenshinji
        23
    realkenshinji  
       2019-01-23 14:51:19 +08:00 via iPhone
    可以的,我不用 google 也可以用 bing 或者 yandex 啊
    Jzer0n
        24
    Jzer0n  
       2019-01-23 15:04:23 +08:00
    如果能正常使用 Google,可能就没百度什么事情了。
    imwalson
        25
    imwalson  
    OP
       2019-01-23 15:13:18 +08:00 via Android
    @realkenshinji 对,bing 也推荐使用,不用百度也有很多替代方案,只不过很多人都只知道国内的几家搜索引擎
    aiwoshishen
        26
    aiwoshishen  
       2019-01-23 15:13:36 +08:00
    这样 google 搜索出来的二级页面也打不开吧?
    imwalson
        27
    imwalson  
    OP
       2019-01-23 15:20:42 +08:00 via Android
    @aiwoshishen 这取决于结果网站本身是否被墙了,如果被墙了当然是打不开的
    zyu0090
        28
    zyu0090  
       2019-01-23 15:26:26 +08:00
    @imwalson 做浏览器默认是不是只用加上 search?q=%s,chrome 生成的那个有好多后缀啊。。。
    demo
        29
    demo  
       2019-01-23 15:31:59 +08:00
    花里胡哨,不用注册的。https://runkit.com/e
    imwalson
        30
    imwalson  
    OP
       2019-01-23 15:32:08 +08:00
    @zyu0090 是的,比如(请自行替换域名): https://untitled-0l721vzkykus.runkit.sh/search?q=%s
    zyu0090
        31
    zyu0090  
       2019-01-23 15:33:47 +08:00
    @imwalson 嗯,感觉 chrome 生成那个带后缀的要快一点。。不知道是不是错觉
    imwalson
        32
    imwalson  
    OP
       2019-01-23 15:34:54 +08:00
    @demo 不注册在这里可以运行代码,可是没有 endpoint 功能啊
    demo
        33
    demo  
       2019-01-23 15:35:34 +08:00   ❤️ 4
    抱歉,少打了个参数。 https://runkit.com/e?mode=endpoint
    lingo
        34
    lingo  
       2019-01-23 15:39:00 +08:00
    老老实实叠飞机还比较实在点。
    jakes
        35
    jakes  
       2019-01-23 15:48:24 +08:00
    有没有办法绑定自己的域名?
    night98
        36
    night98  
       2019-01-23 16:01:31 +08:00
    请求数限制是多少?
    imwalson
        37
    imwalson  
    OP
       2019-01-23 16:08:43 +08:00
    @demo 厉害,确实可行,不知道这样创建的服务能不能长久存在。不过就算不能持久化,也提供了个思路,随时想用随时创建
    imwalson
        38
    imwalson  
    OP
       2019-01-23 16:10:00 +08:00
    @jakes 官方不支持绑定自定义域名,除非自己有服务器再进行一次 nginx 反代,那就不值得了
    imwalson
        39
    imwalson  
    OP
       2019-01-23 16:13:04 +08:00
    @night98 官方没有任何这方面的说明,我猜一小时起码上千次没问题,我本人正常使用是够的
    night98
        40
    night98  
       2019-01-23 16:14:36 +08:00
    @imwalson #39 可以的,感谢提供,日常用比开双 s 方便很多。
    AngryPanda
        41
    AngryPanda  
       2019-01-23 16:14:38 +08:00
    还是自家的机场好点。
    nosmile
        42
    nosmile  
       2019-01-23 16:16:23 +08:00 via Android
    感谢 lz 分享 我还是默默地用机场
    sunjourney
        43
    sunjourney  
       2019-01-23 17:05:13 +08:00
    用 heroku 也可以做到,类似的方案太多了
    zyu0090
        44
    zyu0090  
       2019-01-23 17:12:44 +08:00
    @imwalson 是不是挂了。。官网都进不去了。。
    imwalson
        45
    imwalson  
    OP
       2019-01-23 17:17:45 +08:00
    @sunjourney 是的,可以举一反三。像 heroku、now.sh 、surge、firebase 等免费部署 node.js 项目的服务商有很多,都可以用来做网站反代,但是都没有在 Runkit 上这么简单方便。另外用 heroku 的话建议直接搭建 SS: https://github.com/onplus/shadowsocks-heroku,没必要只做一个网站反代,毕竟 heroku 上的项目有总运行时间限制,只创建一个项目都会不够用,没有 Runkit name 那么良心。
    imwalson
        46
    imwalson  
    OP
       2019-01-23 17:19:30 +08:00
    @zyu0090 没挂,本来就打开慢,因为使用了谷歌字体,最好先挂梯子访问官网
    saran
        47
    saran  
       2019-01-23 17:21:57 +08:00
    得,又被我们玩坏了……
    dapengzhao
        48
    dapengzhao  
       2019-01-23 17:59:05 +08:00
    花点钱用蓝灯吧一年 100 多点,高速稳定
    night98
        49
    night98  
       2019-01-23 19:35:15 +08:00
    好像炸了。。。
    imwalson
        50
    imwalson  
    OP
       2019-01-23 19:37:46 +08:00 via Android
    @night98 检查了一下,好像炸的只是我创建的这个演示镜像站,删了重建一个很容易
    16t
        51
    16t  
       2019-01-23 21:23:21 +08:00
    非常感谢,已经用上了,用来搜东西还是很方便的,chrome 还有 google 直链的插件,不用担心点结果页卡住。
    尝试过 drive,accounts,voice 等二级域名,因为会有各种跳转,没办法实现,不过对于重度搜索足够了,其他的可以开未批恩来用。
    580a388da131
        52
    580a388da131  
       2019-01-23 21:26:26 +08:00 via iPhone
    能反代图片搜索结果么,几乎所有教程都不能。
    Cipool
        53
    Cipool  
       2019-01-23 22:37:29 +08:00 via Android
    这个属于 abuse 了,不太好
    imwalson
        54
    imwalson  
    OP
       2019-01-24 09:20:36 +08:00 via Android
    @Cipool 嗯,建议有能力科学上网的还是爬梯子上谷歌,把这作为候选方案
    imwalson
        55
    imwalson  
    OP
       2019-01-24 09:21:42 +08:00 via Android
    @580a388da131 比较难,因为图片资源域名也都是被墙的,只能爬梯子
    16t
        56
    16t  
       2019-01-24 10:07:22 +08:00
    有一个小问题,就是无法用 cname 做指向,endpoint 给的链接不好记,无法自定义,cname 过去会自动跳转到 runkit 首页。
    shyrock
        57
    shyrock  
       2019-01-24 11:01:53 +08:00
    貌似已经不行了,设置 endpoint 就报错。。。散了吧。
    night98
        58
    night98  
       2019-01-24 11:16:00 +08:00
    估计炸了,新建的 run 不了
    imwalson
        59
    imwalson  
    OP
       2019-01-25 09:45:15 +08:00 via Android
    @shyrock 我试了下还行,只是服务有时候不稳定,报错找不到模块之类的,过一会再访问又好了
    shyrock
        60
    shyrock  
       2019-01-25 10:07:03 +08:00
    @imwalson 昨天一直提示 express 模块找不到,感觉就是厂家把这个模块给禁用了啊
    elmagnificogg
        61
    elmagnificogg  
       2019-01-25 14:09:46 +08:00
    @shyrock 可以啊 我这里没问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5991 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 06:20 · PVG 14:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.