GitHub代码搜索限制

说明

不知道从何时起,GitHub限制了搜索代码的结果,只能获取默认的前100条代码,且不支持排序筛选。

具体表现如下:

搜索aaa,共有22.5M条数据,我每页展示20条数据,当查看到第5页时,无法继续点击下一页,当通过修改参数查询第6页时,提醒我没有搜索结果。

github

后翻了一下官方的文档,可见是官方限制了搜索展示结果数量。

limit

尝试绕过

当前阶段还是想尽可能多的获取到代码结果,毕竟从GitHub信息收集也主要依赖代码搜索;但直接绕过GitHub搜索策略是不现实的(能绕过我就提hackerone了),所以只能从测面想一些办法尽可能多的获取到结果,一个人的思路比较局限,有其他师傅有思路可以相互交流。

演示以搜索163的SMTP账号密码为例,GitHub直接搜smtp.163.com password出来前100个结果没有1个能用的。

通过搜索引擎如Google

site:github.com intext:"smtp.163.com" intext:password
google search

可见能搜索一些可用的SMTP账号和密码。

res

通过完善搜索的语法

GitHub搜索语法更新,可以使用正则表达式、布尔等高级搜索语法进行条件限制。

163默认邮箱生成的客户端密钥是16位,如JLLM**********GL,因此可以采用增加搜索规则的方式来缩小搜索范围,如使用正则表达式

smtp.163.com AND /password = "[\w+]{16}"/
smtp_1

由于部分用户可能改过密钥,所以也可以用如下语法:

smtp.163.com AND /password = "\w+"/ NOT /password = "(password|xxx|your_email_password|123456|X+|密码|authCode)"/
smtp_2

通过GitHub API

在GitHub API文档中,发现可通过page来控制查询的页数,如果我们每页1条数据,那么第101页就是第101条数据,也就绕过了web的100条数据限制。具体演示如下:

# 认证
gh auth login
# 查询
gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/search/code?q=smtp.163.com+password&per_page=1&page=101'

可见能成功获取到对应的仓库信息。

success

一行获取对应文件的内容

curl $(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/search/code?q=smtp.163.com+password&per_page=1&page=205' | jq -r .items[0].git_url) | jq -r .content | base64 -d
content

问题点:

Github API查询的结果数量和GitHub网页中查询的结果数量不一致,会少很多很多。

question
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容