Adds /eval listing page and /product/<slug> detail pages for Windows Server 2025/2022/2019/2016 and Windows 11 Enterprise evaluation ISOs, sourced from Microsoft evalcenter without any session flow. Backend: new /evallinks endpoint fetches evalcenter page, extracts fwlinks, follows all redirects in parallel, detects arch + locale. 24h cache per product with startup warming so first hit is instant. Frontend: EvalPage listing at /eval, EvalDetailPage at /product/<slug> matching consumer structure with downloads, aria2 template, system requirements, and also-available section. Smart ProductRouter in App.tsx dispatches slug vs numeric productId. Dock highlights Products tab for /product/* and /eval routes. CTA banner on home page and footer link added. sitemap.xml updated with 6 new URLs. Closes #13 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| backend | ||
| cloudflare-worker | ||
| frontend | ||
| .gitignore | ||
| CLAUDE.md | ||
| issues.md | ||
| LICENSE | ||
| msdls_v3.py | ||
| README.md | ||
windows-iso-downloader
A clean, open-source tool for obtaining official Windows ISO files directly from Microsoft's CDN — without a Windows machine, the Media Creation Tool, or browser restrictions.
Live: msdl.tech-latest.com · By: TechLatest
What it does
MSDL replicates the session flow that Microsoft uses to serve ISO download links — identical to the approach used by Rufus/Fido. You get the exact same signed CDN URL Microsoft would give you, just without the browser requirement.
- ✅ Direct Microsoft CDN links — no proxying of actual file data
- ✅ 38 languages per release
- ✅ ARM64 + x64 + x86 support
- ✅ No account, no browser lock, no ads, no tracking
- ✅ Links expire in 24 hours (Microsoft's standard behaviour, not a limitation)
Screenshots
| Home | All Releases |
|---|---|
![]() |
![]() |
| Product detail — language selector | Product detail — download links |
|---|---|
![]() |
![]() |
Project Structure
windows-iso-downloader/
├── frontend/ # React 19 + TypeScript + Vite + Tailwind v4
├── backend/ # Go proxy server (recommended for production)
├── cloudflare-worker/ # Optional CF Worker for distributed IP routing
└── README.md
How It Works
Browser → Backend → (CF Worker) → Microsoft API → Signed CDN URL
↓
1. Register session (Microsoft tracking endpoint)
2. Parse MDT fingerprint script
3. Fetch SKU list (available languages)
4. Fetch signed CDN download URL
The flow mirrors Fido.ps1 by Pete Batard — the same script bundled with Rufus.
Outbound requests to Microsoft are optionally routed through a Cloudflare Worker (cloudflare-worker/worker.js). This distributes requests across Cloudflare's global edge IPs instead of a single server IP, preventing Microsoft's rate-limit block (error 715-123130) under high traffic. The Worker is opt-in via environment variables — omit them to go direct to Microsoft.
Running Locally
Backend (Go)
cd backend
go run main.go
# Runs on http://localhost:3002
Frontend
cd frontend
npm install
npm run dev
# Runs on http://localhost:5173
Create frontend/.env.local:
VITE_API_URL=http://localhost:3002
Optional: Cloudflare Worker (recommended for production)
Deploy cloudflare-worker/worker.js to Cloudflare Workers, then set these on the backend:
CF_WORKER_URL=https://your-worker.your-name.workers.dev
CF_WORKER_SECRET=your-secret # must match the CF_WORKER_SECRET secret set in the Worker's settings
Omit both to go direct to Microsoft (fine for local development and low-traffic self-hosting).
API Reference
GET /skuinfo?product_id=<id>
Returns available languages for a product.
{
"Skus": [
{
"Id": "0x0409",
"Language": "en-US",
"LocalizedLanguage": "English (United States)"
}
]
}
GET /proxy?product_id=<id>&sku_id=<sku>
Returns signed download links from Microsoft's CDN.
{
"ProductDownloadOptions": [
{
"Uri": "https://software.download.prss.microsoft.com/...",
"Architecture": "x64"
}
]
}
Supported Products
| Product | ID | Architecture |
|---|---|---|
| Windows 11 25H2 | 3262 | x64 |
| Windows 11 25H2 | 3265 | ARM64 |
| Windows 11 25H2 (updated) | 3321 | x64 |
| Windows 11 25H2 (updated) | 3324 | ARM64 |
| Windows 11 24H2 | 3113 | x64 |
| Windows 11 24H2 | 3131 | ARM64 |
| Windows 10 22H2 | 2618 | x64 / x86 |
| Windows 10 22H2 Home China | 2378 | x64 |
| Windows 8.1 | 52 | x64 / x86 |
| Windows 8.1 Single Language | 48 | x64 / x86 |
Tech Stack
Frontend (frontend/)
| Framework | React 19 + TypeScript |
| Build tool | Vite 8 |
| Styling | Tailwind CSS v4 |
| Animation | Motion (Framer Motion v12) |
| UI primitives | Radix UI |
| Toast | Sonner |
| Font | Geist |
| Router | React Router v7 |
Backend (backend/)
| Language | Go 1.22+ |
| HTTP | net/http (stdlib, no framework) |
| Session cache | sync.RWMutex in-memory · 15 min TTL |
| UUID | github.com/google/uuid |
| MDT parsing | regexp (stdlib) |
Deployment
Recommended setup:
| Component | Platform |
|---|---|
| Frontend | Cloudflare Pages / Vercel (static) |
| Backend | VPS (Hetzner, DigitalOcean, Linode, etc.) |
| Outbound proxy | Cloudflare Worker (optional, recommended for public instances) |
⚠️ Deploy the Go backend to a standard VPS, not serverless platforms. The Cloudflare Worker is used only as an outbound proxy for Microsoft API calls — the backend itself must be a long-running process with session state.
Contributing
Pull requests welcome. To add a new Windows release:
- Find the product ID on
www.microsoft.com/software-download-connector/api/ - Add it to
frontend/public/data/products.json - Add related metadata in
ProductDetailPage.tsx(PRODUCT_META,RELATED_GROUPS) - Update the product table in this README
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation. All ISO files are served directly from Microsoft's official CDN — this project does not host any files.



