Cirry's Blog

Gitea批量删除用户

Nov 11, 2024
随笔
3分钟
544字

前景

服务器之前被爆硬盘了,然后没办法就重装了一下。今天用管理员登录了一下gitea才发现里面被机器人注册几千个账号。

几千个账号基本上每个账号都创建了一个空仓库,还有几个账户镜像了几个大仓库,每个仓库都有好几个G,终于找到了硬盘被塞爆的原因了,立马禁止了gitea的注册功能。

那么多的账户没办法手动删了,就用python写了一下。

先去查一下Gitea提供的Api文档提供的删除账户的接口:Delete a user

/admin/users/{username}

从接口文档中,我们需要一个用户名,需要一个token,和设置一个purge参数为true

获取token

设置 -> 应用 -> 管理 Access Token -> 选择公开,选择所有权限,然后生成token记录下这个token。

获取用户名

在接口文档中并没有提供获取所有用户名的方法,所以你可以抓包网页去获取用户名,但这并不是一个好方法。

Gitea admin 命令行中提供了一个命令可以获取gitea中的所有用户名。

我自己使用的gitea是用docker搭建的,所以我需要先进入到容器内才能使用gitea命令。

# 查看gitea 的容器id
docker ps -a
# 进入gitea容器内部
docker exec -it [容器id] /bin/bash
# 默认不允许使用root用户执行gitea命令
# 参考这里: https://github.com/go-gitea/gitea/issues/25498
# 切换用户
su git
gitea admin user list
# 打印结果如下,复制下来所有的用户信息
6 collapsed lines
# 4e87a7947659:/$ gitea admin user list
# ID Username Email IsActive IsAdmin 2FA
# 91 lidaspada8366 gil.b.er.t.s.che.ue.r.bq@gmail.com true false false
# 95 arleenleibius8 bridge.tland.ol.fi.y.y.a@gmail.com true false false
# 97 kamrivers68372 e.lou.i.se.crev.e.l.in.g.y@gmail.com true false false
# 98 julioctoman899 b.r.idg.e.tlan.dolfi.y.y.a@gmail.com true false false

脚本

需要修改下面三个高亮的位置。

main.py
import requests
headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.1047.2 Safari/537.36 Edg/96.0.1047.2",
"Authorization": "token [replace your token here]"
}
def delete_gitea_user(username):
params = {
"purge": True
}
url = "https://gitea.com/api/v1/admin/users/"
response = requests.delete(url=url + username, headers=headers, params=params)
if response.status_code == 204:
print(f"{username},删除成功")
12 collapsed lines
else:
print(f"{response.status_code}, {username},删除失败")
if __name__ == '__main__':
user_list = [
"lidaspada8366",
"arleenleibius8",
"kamrivers68372",
"julioctoman899",
]
for name in user_list:
delete_gitea_user(name)
本文标题:Gitea批量删除用户
文章作者:Cirry
发布时间:Nov 11, 2024
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode
总访问量
总访客数人次