Desktop-приложение на Python/Tkinter для локального хранения и проверки собственных API-ключей на указанном сервере.
Программа предназначена только для образовательных целей. Автор не несет ответственности за использование программы.
Используйте приложение только с собственными ключами, тестовыми значениями и серверами, на проверку которых у вас есть право. Мастер генерации создает тестовые строки для проверки работоспособности собственных серверов и учебных стендов.
- импорт ключей из текстового поля;
- генерация тестовых строк старого и нового формата в отдельном мастере;
- меню
Настройкис сохранением URL сервера проверки и количества потоков в SQLite; - локальное шифрование ключей мастер-паролем;
- хранение в SQLite;
- проверка ключей через указанный URL API;
- многопоточная проверка вставленного списка или всей базы с возможностью остановки;
- нижний прогресс-бар для текущей проверки;
- отображение HTTP-статуса, количества моделей и rate limit headers;
- поиск, сортировка и цветовая индикация статусов;
- копирование полного ключа двойным кликом или через контекстное меню строки;
- перепроверка и удаление отдельного ключа через контекстное меню;
- удаление выбранного ключа из локальной базы;
- очистка всех ключей со статусом
invalid; - полная очистка локальной базы с двойным подтверждением.
Требуется Python 3.10+.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install -r requirements.txtpython main.pyПри запуске приложение запросит мастер-пароль. Этот пароль используется только локально для расшифровки ключей из openai_keys.sqlite3.
Если пароль не подходит к существующей базе, приложение предложит ввести пароль снова, удалить локальную базу или выйти.
Перед проверкой откройте Настройки -> Параметры проверки... и укажите URL сервера проверки. Именно на этот адрес будут отправляться HTTP-запросы с заголовком Authorization: Bearer .... Там же задается количество потоков. Настройки сохраняются в openai_keys.sqlite3. По умолчанию указан локальный учебный endpoint http://localhost:8000/v1/models.
Подробная документация находится в каталоге docs/.
python -m unittest discover -s testsРелизная Windows-сборка создается автоматически при push тега вида v*:
git tag v0.1.0
git push origin v0.1.0GitHub Actions собирает main.py через PyInstaller в один оконный EXE, упаковывает его в ZIP и загружает asset в GitHub Release. Приложение проверяет новые версии через GitHub Releases при запуске и через меню Справка -> Проверить обновления....
OpenAiKeyChecker/
|-- main.py
|-- requirements.txt
|-- README.md
|-- assets/
|-- docs/
|-- tests/
|-- openai_keys.sqlite3
`-- openai_key_checker/
|-- app.py
|-- config.py
|-- crypto.py
|-- key_generator.py
|-- models.py
|-- openai_client.py
|-- scanner.py
|-- storage.py
|-- update_checker.py
|-- version.py
`-- ui/
|-- dialogs.py
|-- generator_window.py
|-- main_view.py
|-- settings_dialog.py
`-- theme.py
main.py- короткая точка входа.openai_key_checker/app.py- контроллер приложения и пользовательские действия.openai_key_checker/storage.py- SQLite, миграция схемы, шифрование/расшифровка записей.openai_key_checker/openai_client.py- HTTP-проверка ключей через указанный API URL.openai_key_checker/scanner.py- фоновая многопоточная очередь проверок.openai_key_checker/crypto.py- Fernet-ключ, маскирование и хэш ключа.openai_key_checker/key_generator.py- генерация тестовых строк старого и нового формата.openai_key_checker/update_checker.py- проверка новых версий через GitHub Releases.openai_key_checker/version.py- версия приложения, в релизной сборке заполняется тегом.openai_key_checker/models.py- dataclass-модели записей и результатов.openai_key_checker/config.py- пути, заголовок приложения, дисклеймер и URL API по умолчанию.openai_key_checker/ui/main_view.py- построение основного окна Tkinter.openai_key_checker/ui/generator_window.py- окно мастера генерации ключей.openai_key_checker/ui/settings_dialog.py- окно сохранения параметров проверки.openai_key_checker/ui/dialogs.py- кастомные диалоги входа и удаления базы.openai_key_checker/ui/theme.py- тема и стили ttk.
| Статус | Значение |
|---|---|
valid |
API вернул 200 OK |
invalid |
API отклонил ключ |
network_error |
сетевой сбой или таймаут |
unknown |
ключ еще не проверялся |
- Ключи хранятся в SQLite в зашифрованном виде.
- Для поиска дубликатов используется SHA-256 хэш ключа.
- Полный ключ показывается только при расшифровке для копирования или проверки.
- Файл
openai_keys.sqlite3остается локальным артефактом проекта.
