159 lines
3.3 KiB
Markdown
159 lines
3.3 KiB
Markdown
# Instructions de test - Comparaison Python vs Rust
|
|
|
|
## Étape 1: Tester le script Python contre l'API réelle
|
|
|
|
```bash
|
|
cd pmoqobuz/test_python_qobuz
|
|
python3 test_qobuz.py
|
|
```
|
|
|
|
**Ce que vous devez entrer:**
|
|
- Username: `eric@coissac.eu` (ou appuyez Entrée pour défaut)
|
|
- Password: votre mot de passe Qobuz
|
|
|
|
**Résultat attendu:**
|
|
Si le script Python **réussit**, cela confirme que:
|
|
- ✅ La méthode de signature Python est correcte
|
|
- ✅ Les secrets extraits par le spoofer fonctionnent
|
|
- ✅ Notre implémentation Rust a un problème spécifique
|
|
|
|
Si le script Python **échoue aussi**, cela signifie:
|
|
- ❌ Le problème est dans les secrets eux-mêmes
|
|
- ❌ Ou Qobuz a changé leur API récemment
|
|
|
|
---
|
|
|
|
## Étape 2: Analyser les requêtes avec le fake server
|
|
|
|
### Terminal 1 - Démarrer le fake server:
|
|
|
|
```bash
|
|
cd pmoqobuz/test_python_qobuz
|
|
python3 fake_qobuz_server.py
|
|
```
|
|
|
|
Le serveur affichera tous les détails des requêtes reçues.
|
|
|
|
### Terminal 2 - Tester avec Python:
|
|
|
|
```bash
|
|
cd pmoqobuz/test_python_qobuz
|
|
python3 patch_for_fake.py # Redirige vers localhost
|
|
python3 test_qobuz.py # Entrer credentials
|
|
```
|
|
|
|
**Observer dans Terminal 1:**
|
|
- Méthode HTTP (GET/POST) pour `/track/getFileUrl`
|
|
- Headers exactes (X-App-Id, X-User-Auth-Token)
|
|
- Paramètres et leur ordre
|
|
- Format du `request_ts` (timestamp)
|
|
- Format du `request_sig` (signature MD5)
|
|
- Content-Type du body
|
|
|
|
### Terminal 2 - Restaurer:
|
|
|
|
```bash
|
|
python3 patch_for_fake.py restore
|
|
```
|
|
|
|
---
|
|
|
|
## Étape 3: Tester Rust contre le fake server
|
|
|
|
### Modifier temporairement le code Rust:
|
|
|
|
Éditer `pmoqobuz/src/api/mod.rs` ligne ~32:
|
|
|
|
```rust
|
|
// Avant:
|
|
const API_BASE_URL: &str = "https://www.qobuz.com/api.json/0.2";
|
|
|
|
// Après (temporaire!):
|
|
const API_BASE_URL: &str = "http://localhost:8080/api.json/0.2";
|
|
```
|
|
|
|
### Terminal 1 - Fake server toujours actif
|
|
|
|
### Terminal 2 - Lancer l'exemple Rust:
|
|
|
|
```bash
|
|
cd pmoqobuz
|
|
cargo run --example lazy_loading
|
|
```
|
|
|
|
**Observer dans Terminal 1:**
|
|
Les mêmes détails que pour Python.
|
|
|
|
### Restaurer le code Rust:
|
|
|
|
```rust
|
|
const API_BASE_URL: &str = "https://www.qobuz.com/api.json/0.2";
|
|
```
|
|
|
|
---
|
|
|
|
## Étape 4: Comparer
|
|
|
|
Comparez côte à côte:
|
|
|
|
### Python (référence qui marche):
|
|
```
|
|
POST /api.json/0.2/track/getFileUrl
|
|
Headers:
|
|
X-App-Id: 798273057
|
|
X-User-Auth-Token: NAP_...
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
Body:
|
|
track_id=12345678
|
|
format_id=27
|
|
intent=stream
|
|
request_ts=1734169183.123456
|
|
request_sig=a1b2c3d4...
|
|
```
|
|
|
|
### Rust (à corriger):
|
|
```
|
|
POST /api.json/0.2/track/getFileUrl
|
|
Headers:
|
|
X-App-Id: ???
|
|
X-User-Auth-Token: ???
|
|
Content-Type: ???
|
|
|
|
Body:
|
|
??? ordre différent ???
|
|
??? timestamp différent ???
|
|
??? signature différente ???
|
|
```
|
|
|
|
### Différences à chercher:
|
|
|
|
1. **Ordre des paramètres** - l'ordre affecte-t-il la signature?
|
|
2. **Format du timestamp** - nombre de décimales?
|
|
3. **Headers manquants** - Content-Type?
|
|
4. **Signature MD5** - différente malgré mêmes inputs?
|
|
5. **Method** - vraiment POST des deux côtés?
|
|
|
|
---
|
|
|
|
## Script automatique
|
|
|
|
Pour simplifier, vous pouvez aussi utiliser:
|
|
|
|
```bash
|
|
./run_comparison.sh # Test contre API réelle
|
|
./run_comparison.sh fake # Test avec fake server (interactif)
|
|
```
|
|
|
|
---
|
|
|
|
## Nettoyage
|
|
|
|
```bash
|
|
# Arrêter tous les fake servers
|
|
pkill -f fake_qobuz_server
|
|
|
|
# Restaurer raw.py si nécessaire
|
|
python3 patch_for_fake.py restore
|
|
```
|