Abstract
本文介绍 2 种能够实现的 GitHub 资源传递的解决方案,并简要介绍与此相关的技术模型。
Background
「资源代下」是一种可能在中国才会出现的盛况。
不可否认,「防火长城」的诞生确实推动了许多行业的发展,也为许多商业模式的出现奠定了基石,这堵「墙」在这杵着,隔离了“脏数据”,也让万千学子“查文献”的门槛上了一个台阶。
时至今日,国内高校大都拥有内建或合租的 VPN 网络供本校学子进行学术科研工作,但这些 VPN 往往被当作是针对「学术文献」资源建立的「传输通道」,所能提供的「视野」相较于全局代理要小很多。
于是,在这种又忙又卷的环境中,出现了这么一群在鼓捣“特种领域”但又没鼓捣清楚自己为啥访问不了某些站点的人。
诚然,目前没有可靠的数据表明这类群体的规模,但从直觉上看,这是个非常庞大的“市场”。
打开淘宝,你能发现各种各样需要跨越「防火长城」才能流畅进行的「资源拉取服务」。这里有我们常见的 GitHub 资源下载(或数据集下载), Google Cloud 资源下载以及各种需要代理才能流畅访问的素材资源的下载。
作者点进了显示在综合排列考前的 「GitHub 资源代下」的店铺,翻阅了店铺当前仅有的一条 Q&A。
当我看到「高速下载连接」这个关键词时,我已参透这背后的运营模式,惊呼“这 TM 也能赚钱?”,但当我看到图片中的回复时,我并不惊讶。
当我们已经习惯于使用 GitHub 并基于 GitHub 的各种产品进行日常工作时,我们当然会对如上现象感到疑惑,但我们还是得解释以下这是个什么情况!
对于一个拥有 200 M 家庭带宽的用户来说,使用代理后下载各种 GiHub 资源的速度都是非常快的,因为常见的 GiHub 挂载资源包体积都非常小(数据集除外)。但同样的事情对于“墙内”用户来说非常痛苦,眼看着个位数 MiB 体积的资源就是下不完,下载速度可能只有 10 kb/s。
好了,正所谓「有需求就有市场」,只要卖家的交易行为还在法律的条框之内,我们也不能说什么,毕竟有人着急着要下载,也不缺这一两块的小费,又刚好有人能提供这种服务,双方一拍即合,一个船新的市场就诞生了~
说到这,可能还有的小伙伴会疑惑:我以为它是把资源自己下载下来后,通过某种方式分享给买家,这个「高速下载连接」是什么?这种薄利多销的“模式”,真的不会亏损吗?如果我也想给身边的“朋友”提供这种服务,有没有比较可靠的解决方案?不着急,下文慢慢说。
Technology Stack
Resource Transfer
本文所讨论的「资源传递」与我们通常理解的「文献传递」有所不同。后者通常是指「将用户所需的文献复制品以有效的方式和合理的费用,直接或间接传递给用户的一种非返还式的文献提供服务」;而前者强调的是传递的代理以及资源的转发,传递的资源必须是在网络上共享且开放使用的。
以下,我们将基于传统文献传递的观点,一步步说明这个被一眼看透的商业模式到底时怎样赚钱的。
Cloudflare Workers (CFW)
首先需要解答的问题是:「如何给不会翻墙的国内用户提供加速下载 GitHub 资源的服务?」
目前的最优解是 Cloudflare Workers (CFW)
+ jsdelivr
+ cnpmjs
实现的无服务 (Severless) 反向代理 + 内容分发策略。具体内容后面会单独发一篇博客说明,实现起来比较简单(但可能对新手不是很友好,具体可见 gh-proxy 项目的自述文档)。
这一步完成后,我们将从 Wokers 获取一个 CDN 链接,这个链接是用来做什么的呢?当然是用来回答问题的~
作者已部署了一个应用案例,分发链接如下:
|
|
然后找到你需要的资源的下载链接,以作者先前编写的 V2Ray云彩姬 v4.5.4 发行客户端为例,其链接如下:
|
|
将两者按如下格式合并拼写,访问拼接后的链接,即可实现加速下载。我们清理下载缓存,使用加速下载,看看能有多少提升。
|
|
是的,只需将下载链接完整复制到 CDN 链接之后就能实现反向代理(加速下载)。
值得一提的是,此步骤的精华输出就是这个可用的 CDN 链接,意味着如果你想搭建自己的服务,上文提供的链接你已经可以拿去用了~
此外,我们需要知道,CFW 提供免费服务「每天 10 万次请求以及每分钟 1000 次请求」仅当需求无法满足时,你才需要升级到 $5 的付费版本,此时你的 API Limit 变为「每月 1000 万次请求」 。从 上文截图所示的销量情况 来看,如果你有幸用上了付费版本,那你早已垄断了这个行业的生意(笑死。
好了回到话题,经此讨论我们不难得出如下图所示的资源传递技术模型:
首先,假设 Customer 能够正常浏览 GitHub 站点,并在浏览中产生需求;
客户带着需求以及下载链接找到 Chatbot,并于 Chatbot 发生首轮交互;
通过预先设定的 Inline 引导框架,客户能够提供经过 Review 的资源链接;
至少要确认客户发来的链接指向 GitHub。
Chatbot 调度已经封装好的 SDK,修饰资源链接并返回给客户;
若此时用户满意,则订单结束;若订单异常,则需要技术支持(人工客服)介入回滚订单。
用户获取「高速下载链接」凭借 CDN 技术平步上青云。
上文所述的实现方案 仅是作者的反射想法,生产环境要稍微麻烦些。此模型是实现 Background 所述模式的最简单方案。对于作者此类对 Cloudflare Workers 有所了解的玩家,部署一套用于加速 GitHub 资源拉取的反向代理接口,可能只需要几分钟(毕竟有成熟的轮子),编写一套完整的 Inline 引导框架可能需要一至两天的时间。如果你不知道怎么做 Chatbot,你可以“肉身交互”(模板回复);如果你觉得部署麻烦,你可以在网络上直接获取 CFW 的加速链接,以及共享通用的 Inline 引导框架,甚至是手把手教你开淘宝店的奶妈教程,门槛非常低。
Aliyundrive Hash Mapping
如下分享的是一套可实现「内外双循环」的技术模型,此模型可插入到上文所述的实现方案 的任一环节中。
技术支持与客户交流(或 Inline 引导),并询问客户是否拥有 Aliyundrive 账号;
- YES,我就问问;
- NO,提出免费下载,引导客户使用你的邀请码注册云盘账号,待获取 Response(网盘资源的分享链接) 后分发给客户。若用户否决提议(财大气粗),则返回 CFW 技术模型收费下载。
别光顾着问,先给人家下载东西,两三下就下好了。反正下好了就给客户发网盘分享链接,没有账号就得注册,用你的邀请码(明文超链接)跳转会很方便,也算是一种引导暗示。
(占坑不定时更新)