香香软软的饭团 🍙 很喜欢视奸招新系统,招新系统上看到的报名者的信息大概是这样的:
如你所见,只有一些基本的个人信息。但是饭团想看报名者的 github 账号,你能帮帮他吗?
别忘了我们能拿到邮箱,基于邮箱有 3 个小技巧可以盒到 github 账号。
[!TIP]
以下的讨论都基于一个前置假设:报名者提供的邮箱是主力邮箱,并与 github 账号进行了绑定。
直接搜邮箱
利用 github 的搜索 API 能够直接搜索到用户,向下面的 url 发送请求(用浏览器访问也行):
1 | https://api.github.com/search/users?q=solankiarpit1997@gmail.com |
接口返回的 items 里面就是搜索结果,由于邮箱是唯一的,这里就搜索到了唯一的用户,login
字段就是我们想要的用户名:
这个方法和直接在 github 搜索框搜索是等效的。
这个方式的缺点也很明显,就是只能搜到邮箱是 public 的用户,但是大多数的用户邮箱是设置了隐私保护的,采用这个方法是搜不到的。
比如我自己的账号就无法通过邮箱搜索到。
author-email
author-email 是同过 commit 间接盒到作者,只要这个人在 public 仓库有 commit 记录就能被搜索到。
可以利用下面的 API,或者直接在 github 用 author-email:<your-email>
来搜。
1 | https://api.github.com/search/commits?q=author-email:2972437973@qq.com |
这个方法在实际场景中还是挺有用的,如果我想盒的这个人连公有仓库提交都没有,那么就算盒出来也没有什么意义,通过这个方式能过滤掉那些没有内容的人。
基于这个方法搭了一个小网页,可以盒到 github 账号:CanCanGithub
Co-authored-by
前面两种技巧都或多或少有局限性,不能作为一个通用的盒人方案,接下来介绍一个非常通用的。
Co-authored-by 的官方解释如下:
You can attribute a commit to more than one author by adding one or more
Co-authored-by
trailers to the commit’s message. Co-authored commits are visible on GitHub.
也就是说,我们可以在一个 commit 信息的末尾添加 Co-authored-by
字段来提及共同作者,这个信息会在 github 上被解析成作者的账号,这样就能间接搜索到账号信息了。
来一个前端组大开盒 😋:
1 | git commit -m "box box fe group |
[!TIP]
注意 Co-authored-by 要和正式内容之间留一个空行
然后在 github 仓库里就能找到提及的用户了。
并且通过这种方式协作者并不会收到通知,也就是可以无声盒人而不用担心被发现。