
Авторизованное лабораторное воспроизведение CVE-2025-47928 (spotipy-dev/spotipy, эксфильтрация секретов через pull_request_target) — снимок на уязвимом коммите 4f5759d
Автоматизированный исследовательский артефакт — не вышестоящий проект.
Этот репозиторий — одноразовая лаборатория, созданная автоматизированной средой для магистерской диссертации в Université Laval по воспроизведению опубликованных уязвимостей рабочих процессов GitHub Actions. Это точный снимок
spotipy-dev/spotipyна коммите4f5759dbfb4506c7b6280572a4db1aabc1ac778d(2025-04-21), распространяемый под собственной лицензией этого проекта, файл которой включён без изменений в этот снимок.Вышестоящий проект не участвует, никогда не является целью, а изучаемая здесь уязвимость уже публична. Каждый секрет и переменная в этом репозитории — случайно сгенерированное фиктивное значение — никаких реальных учётных данных здесь нет. Ссылки на действия и образы раннеров закреплены на те значения, которым они соответствовали на 2025-04-21; см.
pinning.mdв выводе среды для каждого изменения, внесённого в снимок.Вопросы или возражения: [email protected]
Spotipy поддерживает все функции Spotify Web API, включая доступ ко всем конечным точкам и поддержку авторизации пользователей. Подробнее о возможностях вы можете узнать в документации Spotify Web API.
pip install spotipy
альтернативно, для пользователей Windows
py -m pip install spotipy
или обновление
pip install spotipy --upgrade
Полный набор примеров можно найти в онлайн-документации и в каталоге примеров Spotipy.
Чтобы начать, установите spotipy, создайте новую учётную запись или войдите на https://developers.spotify.com/. Перейдите в панель управления, создайте приложение и добавьте свой новый ID и SECRET (ID и SECRET можно найти в настройках приложения) в своё окружение:
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id="YOUR_APP_CLIENT_ID",
client_secret="YOUR_APP_CLIENT_SECRET"))
results = sp.search(q='weezer', limit=20)
for idx, track in enumerate(results['tracks']['items']):
print(idx, track['name'])
Ожидаемый результат:
0 Island In The Sun
1 Say It Ain't So
2 Buddy Holly
.
.
.
18 Troublemaker
19 Feels Like Summer
URI перенаправления должен быть добавлен в ваше приложение в Моей панели управления, чтобы получить доступ к функциям, требующим аутентификации пользователя.
import spotipy
from spotipy.oauth2 import SpotifyOAuth
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id="YOUR_APP_CLIENT_ID",
client_secret="YOUR_APP_CLIENT_SECRET",
redirect_uri="YOUR_APP_REDIRECT_URI",
scope="user-library-read"))
results = sp.current_user_saved_tracks()
for idx, item in enumerate(results['items']):
track = item['track']
print(idx, track['artists'][0]['name'], " – ", track['name'])
Ожидаемый результат — список музыки, которая вам понравилась. Например, если вам понравились Red и Sunflower, результат будет таким:
0 Post Malone – Sunflower - Spider-Man: Into the Spider-Verse
1 Taylor Swift – Red
По общим вопросам, пожалуйста, ознакомьтесь с нашим FAQ.
Вы можете задавать вопросы о Spotipy на Stack Overflow. Не забудьте добавить тег Spotipy, а также любые другие релевантные теги, перед публикацией.
Если у вас есть предложения, ошибки или другие проблемы, связанные именно с этой библиотекой, оформляйте их здесь. Или просто отправьте pull request.
Если вы разработчик с опытом работы с Python и хотите внести вклад в Spotipy, пожалуйста, обязательно следуйте рекомендациям, перечисленным на странице документации