前景
服务器之前被爆硬盘了,然后没办法就重装了一下。今天用管理员登录了一下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 的容器iddocker 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脚本
需要修改下面三个高亮的位置。
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)