-
-
Save dougbenham/400ca9fc488126bf9065e9a6cc3657ad to your computer and use it in GitHub Desktop.
| # Working as of July 22nd, 2025 | |
| # - You'll need N_m3u8DL-RE (grab it from https://github.com/nilaoda/N_m3u8DL-RE/releases/latest) | |
| # - You'll need to edit the cookies (on line 10), the user agent (on line 12), and the names you want to download (on line 14). | |
| # - See this comment for a picture on how to populate these values: https://gist.github.com/dougbenham/400ca9fc488126bf9065e9a6cc3657ad?permalink_comment_id=5114236#gistcomment-5114236 | |
| $env:PATH += ";." | |
| $headers = @{ | |
| 'Accept-Encoding' = 'gzip, deflate' | |
| 'Cookie' = 'cf_clearance=..; XSRF-TOKEN=..; leakedzone_session=.. AND MAYBE MORE, PULL ALL COOKIES FROM FIREFOX' | |
| 'X-Requested-With' = 'XMLHttpRequest' | |
| 'User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0' | |
| } | |
| $names = @('amouranth', 'mackzjoness') | |
| $VideoDownloader = "N_m3u8DL-RE.exe" | |
| If (-not (Test-Path -PathType Leaf $VideoDownloader)) { | |
| Start-Process "https://github.com/nilaoda/N_m3u8DL-RE/releases/latest" | |
| Exit | |
| } | |
| foreach ($Name in $names) { | |
| $Url = "https://leakedzone.com/$Name" | |
| New-Item -ItemType Directory -Force -Path ($Name + "\Photos\") | |
| New-Item -ItemType Directory -Force -Path ($Name + "\Videos\") | |
| $i = 1 | |
| While ($True) { | |
| Write-Host "Querying $Name photos (page $i).."; | |
| $x = Invoke-WebRequest "$($Url)?page=$($i)&type=photos&order=0" -headers $headers | |
| $i++ | |
| $A = ($x.content | ConvertFrom-Json) | |
| if (-not $A) { break } | |
| foreach ($item in $A) { | |
| $photourl = "https://image-cdn.leakedzone.com/storage/" + $item.image | |
| if (-not $photourl) { continue } | |
| $filename = $Name + "\Photos\" + $item.slug + [System.IO.Path]::GetExtension(([uri]$photourl).Segments[-1]) | |
| if (-not (Test-Path $filename -PathType Leaf)) { | |
| Invoke-WebRequest -Uri $photourl -Headers $headers -Outfile $filename | |
| } | |
| } | |
| } | |
| $i = 1 | |
| While ($True) { | |
| Write-Host "Querying $Name videos (page $i).."; | |
| $x = Invoke-WebRequest "$($Url)?page=$($i)&type=videos&order=0" -headers $headers | |
| $i++ | |
| $A = ($x.content | ConvertFrom-Json) | |
| if (-not $A) { break } | |
| foreach ($item in $A) { | |
| $videourl = $item.stream_url_play | |
| $slug = $item.slug | |
| if (-not $videourl) { continue } | |
| $videourl = $videourl.Substring(16, $videourl.Length - 32) | |
| $videourl = $videourl[-1.. - $videourl.Length] -join '' | |
| $videourl = [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($videourl)) | |
| If (-not (Test-Path -PathType Leaf "$Name\Videos\$slug.*")) { | |
| . $VideoDownloader "$videourl" --save-dir "$Name\Videos" --save-name "$slug" | |
| Start-Sleep 5 | |
| } | |
| } | |
| } | |
| } | |
| Write-Host -NoNewLine 'Press any key to continue...'; | |
| $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); |
Great to hear.
I updated the script with a 5 second delay after each video (because otherwise you hit some rate-limiting and then you have to rerun the script until all the downloads complete successfully).
Works! Thank you.
Hi, i don't know how all of this work. I try but don't understand a thing on how i can download all pics and videos from Leakedzone. Can i have some help please ? I download the Github Desktop for info. Thanks.
I tried for hours with cookies and always get this error
Cannot bind argument to parameter 'InputObject' because it is null. any advice :(
Also getting the 'InputObject' null problem. Probably the webpage has changed and the script not been updated accordingly..
Invoke-WebRequest: D:\LeakedZone.ps1:30
Line |
30 | …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Unable to read data from the transport connection: An existing connection was forcibly closed by the remote
| host..
ConvertFrom-Json: D:\LeakedZone.ps1:32
Line |
32 | $A = ($x.content | ConvertFrom-Json)
| ~~~~~~~~~~~~~~~~
| Cannot bind argument to parameter 'InputObject' because it is null.
Also getting the 'InputObject' null problem. Probably the webpage has changed and the script not been updated accordingly..
Invoke-WebRequest: D:\LeakedZone.ps1:30 Line | 30 | … x = I n v o k e − W e b R e q u e s t " ( U r l ) ? p a g e = ($i)&type=photos&order=0 … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Unable to read data from the transport connection: An existing connection was forcibly closed by the remote | host.. ConvertFrom-Json: D:\LeakedZone.ps1:32 Line | 32 | $A = ($x.content | ConvertFrom-Json) | ~~~~~~~~~~~~~~~~ | Cannot bind argument to parameter 'InputObject' because it is null.
works for me just slower now
Also getting the 'InputObject' null problem. Probably the webpage has changed and the script not been updated accordingly..
Invoke-WebRequest: D:\LeakedZone.ps1:30 Line | 30 | … x = I n v o k e − W e b R e q u e s t " ( U r l ) ? p a g e = ($i)&type=photos&order=0 … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Unable to read data from the transport connection: An existing connection was forcibly closed by the remote | host.. ConvertFrom-Json: D:\LeakedZone.ps1:32 Line | 32 | $A = ($x.content | ConvertFrom-Json) | ~~~~~~~~~~~~~~~~ | Cannot bind argument to parameter 'InputObject' because it is null.
works for me
Yes, I already had yt-dlp, so just used that, which was working up until about a week ago, but I just DLed N_m3u8DL-RE and it's working now. Thanks.