Files
XboxAutoRegister/rotate.ps1
2026-04-02 21:19:42 +08:00

60 lines
1.9 KiB
PowerShell

# ================= CONFIG =================
$API_URL = "http://127.0.0.1:9090"
$SECRET = "8130899"
$GROUP = "Rotate"
# ==========================================
# 1. Force UTF-8 Output
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Write-Host "1. Connecting to Clash..." -ForegroundColor Cyan
# Use WebClient (Stable & Fixes Encoding)
$wc = New-Object System.Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
try {
# URL
$ListUrl = "$API_URL/proxies/$GROUP"
# === Step A: Get List ===
# Add Auth Header
if ($SECRET -ne "") { $wc.Headers.Add("Authorization", "Bearer $SECRET") }
$JsonContent = $wc.DownloadString($ListUrl)
$JsonObj = $JsonContent | ConvertFrom-Json
$NodeList = $JsonObj.all
if (!$NodeList -or $NodeList.Count -eq 0) {
throw "Error: Group [$GROUP] is empty!"
}
Write-Host " > Found $($NodeList.Count) nodes." -ForegroundColor Green
# === Step B: Pick Random ===
$Target = $NodeList | Get-Random
Write-Host "2. Switching to: $Target" -ForegroundColor Cyan
# === Step C: Send Switch Command ===
$Payload = @{ name = $Target } | ConvertTo-Json -Compress
# 【Critical Fix】Clear headers to remove old Auth, preventing duplicate headers
$wc.Headers.Clear()
# Re-add Headers correctly
$wc.Headers.Add("Content-Type", "application/json")
if ($SECRET -ne "") { $wc.Headers.Add("Authorization", "Bearer $SECRET") }
# Send PUT
$Response = $wc.UploadString($ListUrl, "PUT", $Payload)
Write-Host "3. [SUCCESS] Switched to: $Target" -ForegroundColor Green
} catch {
Write-Host "==== ERROR ====" -ForegroundColor Red
Write-Host $_.Exception.Message -ForegroundColor Yellow
if ($_.Exception.InnerException) {
Write-Host "Detail: $($_.Exception.InnerException.Message)" -ForegroundColor Yellow
}
exit 1
}