
浅谈网上那些白嫖 GitHub Copilot 的实现
前言
GitHub 自从出了 Copilot,确实给广大程序猿带来了巨大的便利,但由于价格还是比较贵的,于是网上又出现了许多白嫖 Copilot 的方法,闲鱼一搜一大堆。本次就来简单追溯下他们是怎么做到的。
方法分类
网上的方法大致可以分为下面两类:
- GitHub 学生认证
- 远程授权 GitHub Copilot 插件
GitHub 学生认证
GitHub 有个学生优惠包,可以免费使用 GitHub Pro 一年,而 GitHub Copilot 是 GitHub Pro 的一个附加功能,所以只要申请了学生认证,就可以免费使用 GitHub Copilot 了。
一般跟贩子买了之后他会给你一个授权码,然后授权认证好后就可以使用了。具体流程不阐述了,毕竟这玩意没啥技术实现好讲。
哦对了,通过这种方式,被封概率挺大的,所以现在应该很多贩子都不搞这种了。
远程授权 GitHub Copilot 插件
插件原理
首先要先讲一下官方 GitHub Copilot 插件的认证原理是怎么样。
以 Intellil IDEA 为例
- 在 IDEA 中安装好插件后,会提示你绑定你的 GitHub 账号(这个账户要有Copilot权限)
- 绑定后,本地插件就获得了一个 TOKEN,格式是[ghu_xxxxx],ghu token的有效期会比较长,多长不知道,反正好几天还没过期
- 然后这个 TOKEN 会调用https://api.github.com/copilot_internal/v2/token (github获取token的api接口),生成了另一个token(称为co_token吧),这个 co_token 就是用来调用 GitHub Copilot 的 API 的。co_token 有兴趣比较
短,据说是大约10-20分钟
总结:可以看出最重要是就是这个 ghu token了,有了它,我们甚至都不用 GitHub 账号(毕竟绑定账号本身就是为了获取 ghu token)。所以,理论上我们可以把 ghu token 传给别人,别人就可以用了。从个角度思考,我们来看看下面
的[远程授权原理1]
远程授权原理1
为什么是有个“1”呢,因为这个方法有两种实现方式,这里先讲第一种。
由插件原理我们可以知道,只要有了 ghu token,就可以使用插件了,那么我们可以把 ghu token 传给别人,别人就可以用了。然而,ghu token 的有效期比较长,我们想让朋友白嫖 Copilot,但又不想暴露 ghu token,怎么办呢?我们
可以建立一个远程服务器配置好 ghu token,远程服务器会通过 ghu token 拿到co_token,然后让朋友的插件直接走我们的远程服务器。。
这种方法最初目的是用来将自己的 Copilot 分享给其他人用的。我也是从这个项目上得知的:https://gitee.com/chuangxxt/share-copilot
大致用法和原理:
- 配置好 ghu token。你要有这个 ghu token 才能建立这个代理服务器。(按正常流程在 idea 安装好 github copilot 插件并正常绑定 github 账号后。在[%userprofile%\AppData\Local\github-copilot\hosts.json]文件可以看到 gh
u token) - 代理服务器中通过 ghu token 模拟调用了 https://api.github.com/copilot_internal/v2/token 接口,获取到了 co token
- (不重要)为了防止请求太频繁,作者还做了优化和缓存,具体可以看他的代码
- 让朋友的IDEA的插件配置文件配置为我们的代理服务器地址,这样朋友的插件就会走我们的代理服务器,代理服务器会帮他们获取到 co token,然后就可以使用了。(具体步骤看上面的 gitee 项目)
远程授权原理1-盈利思路
这个方法最初是用来分享 Copilot 的,但也有人用他来盈利,怎么做呢?以下是几个思路:
- 最简单的就是自己买一个 Copilot,然后搭远程服务器,让其它人连我们的远程服务器,然后跟他们收钱。
优点:简单实现
缺点:无法精准收费,你卖给一个人,他就能分享给别人,你就亏了 - Copilot 每个号是有免费试用的,只要你创他个几十个号,白嫖的同时还能盈利。缺点和上面的一样就不说了。
远程授权原理2
上面的盈利思路,细看的话就会发现原理1有个痛点,就是难以实现精准收费,也很难有持续性的收入。比如你卖给一个人,他可以分享给别人,当然你可以关闭代理服务器,他一会就用不了了,但这样你这个代理服务器就不能卖给其他人
了。当然你可以一个人建一个代理服务器,但这样就太麻烦了,而且你也不知道他会不会分享给别人。
所以有了上面的痛点,就有了这个[远程授权原理2],这个方法的细致原理呢,其实我也不懂,但我了解了个大概,源码是在这找到的[ https://github.com/lvguanjun/copilot_activator ],我也是读了代码才大概了解了下原理,跟大家
分享下:
它的原理也是用代理服务器来做,而为了解决精准收费的问题,就要实现一个设备对应一个授权码,这个点他是在每次请求代理服务器的时候,将本机的机器码、甚至网卡id等设备信息作为userId发给代理服务器,然后代理服务器再做一
层userId和授权码的认证系统。就能实现到精准收费了
end
不得不佩服高手还是出自民间,为了盈利还能想出这些方法,我也是涨知识了。