You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TruffleHog扫描脚本的requests.get请求中加入GitHub组织名和访问令牌

解决方案

错误点说明

你之前尝试的写法存在参数分隔符错误:多个URL查询参数之间需要用&分隔,而非第二个?,原写法会导致access_token和page参数都无法被GitHub API正确识别。

推荐修改方案

我们可以通过两种方式实现参数的正确注入,更推荐将token放在请求头中的写法,安全性更高,不会被访问日志泄露token信息。

方案1:使用requests params参数自动构造查询(最稳妥)

不需要手动拼接URL参数,requests会自动处理编码和分隔,修改后的完整代码如下:

import requests
# 其余你原有依赖的import(truffleHog、json loads/dumps等)保持不变

def get_org_repos(orgname, access_token, page):
    response = requests.get(
        # 扫描组织仓库用/orgs端点,扫描个人账号仓库可以改回/users
        url=f'https://api.github.com/orgs/{orgname}/repos',
        # token放在请求头中,符合GitHub API规范
        headers={
            'Authorization': f'token {access_token}',
            'Accept': 'application/vnd.github.v3+json'
        },
        params={
            'page': page,
            'per_page': 100 # 单页返回最多100条,减少请求次数
        }
    )
    # 新增API响应校验,避免报错导致程序无响应
    if response.status_code != 200:
        print(f"API请求失败,状态码:{response.status_code},错误信息:{response.text}")
        return None
    json = response.json()
    if not json:
        return None
    for item in json:
        if not item['fork']:
            print('searching ' + item["html_url"])
            results = truffleHog.find_strings(item["html_url"], do_regex=True, custom_regexes=rules, do_entropy=False, max_depth=100000)
            for issue in results["foundIssues"]:
                d = loads(open(issue).read())
                d['github_url'] = "{}/blob/{}/{}".format(item["html_url"], d['commitHash'], d['path'])
                d['github_commit_url'] = "{}/commit/{}".format(item["html_url"], d['commitHash'])
                d['diff'] = d['diff'][0:200]
                d['printDiff'] = d['printDiff'][0:200]
                print(dumps(d, indent=4))
    get_org_repos(orgname, access_token, page + 1)

# 调用时直接填入你的组织名、GitHub访问令牌即可
get_org_repos("替换为你的组织名", "替换为你的GitHub访问令牌", 1)

方案2:手动拼接URL(仅作参考,不推荐)

如果你坚持要手动拼接URL,正确的写法如下:

response = requests.get(url=f'https://api.github.com/users/{orgname}/repos?access_token={access_token}&page={page}')

额外注意事项

  • 生成GitHub访问令牌时,仅勾选repo相关的只读权限即可,遵循最小权限原则
  • 如果你的组织仓库数量较多,递归调用可能会触发栈溢出,建议改成循环分页的写法更稳定

内容的提问来源于stack exchange,提问作者adampz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:09:01