gallery-dl icon indicating copy to clipboard operation
gallery-dl copied to clipboard

VSCO 403 issue

Open zone559 opened this issue 4 months ago • 26 comments

gallery-dl --verbose --print-traffic vsco.co/premtimet [gallery-dl][debug] Version 1.30.5 [gallery-dl][debug] Python 3.13.2 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.3 - urllib3 2.3.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'vsco.co/premtimet' [vsco][debug] Using VscoUserExtractor for 'vsco.co/premtimet' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/premtimet/gallery' [vsco][debug] TLS 1.2 disabled. [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 send: b'GET /premtimet/gallery HTTP/1.1\r\nHost: vsco.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0\r\nAccept: /\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nReferer: https://vsco.co/\r\n\r\n' reply: 'HTTP/1.1 403 Forbidden\r\n' header: Date: Tue, 26 Aug 2025 22:35:09 GMT header: Content-Type: text/html; charset=UTF-8 header: Transfer-Encoding: chunked header: Connection: keep-alive header: X-Frame-Options: SAMEORIGIN header: Referrer-Policy: same-origin header: Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 header: Expires: Thu, 01 Jan 1970 00:00:01 GMT header: Set-Cookie: __cf_bm=5W8uUX689Npse_gKxAvV8szOSIwt_TbV6O_405Q3bHk-1756247709-1.0.1.1-NOT3L4JV9xfWsaR1FJfwrtNKzXKJyqwGx_njxky2Eb_8ghWLOrnlRSmuynU02qfIW2gMWXoL2M.uuGSeZRyD8VS3r0wVyUzeUfE7qEYo.is; path=/; expires=Tue, 26-Aug-25 23:05:09 GMT; domain=.vsco.co; HttpOnly; Secure; SameSite=None header: Vary: Accept-Encoding header: Server: cloudflare header: CF-RAY: 9756ccf94da828fc-LAX header: Content-Encoding: gzip [urllib3.connectionpool][debug] https://vsco.co:443 "GET /premtimet/gallery HTTP/1.1" 403 None [vsco][error] HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery' [vsco][debug] Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\job.py", line 152, in run for msg in extractor: ^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 34, in items for img in self.images(): ~~~~~~~~~~~^^ File "C:\Users\User\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 157, in images data = self._extract_preload_state(url) File "C:\Users\User\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 81, in _extract_preload_state page = self.request(url, notfound=self.subcategory).text ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\common.py", line 260, in request raise exc gallery_dl.exception.HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery'


yt-dlp for downloading /videos are also getting 403, they lock down the site pretty well


this seem to work ffmpeg -i "URL" -c copy output.mp4 for /video

zone559 avatar Aug 26 '25 22:08 zone559

$ gallery-dl https://vsco.co/premtimet/gallery
./vsco/premtimet/68adf18e15553aa7214f9c82.jpg
./vsco/premtimet/68ab7dae85c3fab3e4b4b3c8.jpg
./vsco/premtimet/68a7bce5e1732affb343c00f.jpg

Did you try other ways, except disabling TLS 1.2 ciphers, of changing your TLS fingerprint and so on like -o browser=firefox or -o browser=chrome, -o ciphers=firefox or -o ciphers=chrome, etc ?

mikf avatar Aug 28 '25 17:08 mikf

C:\Users\Desktop\Desktop>gallery-dl --verbose --print-traffic -o browser=firefox -o ciphers=firefox https://vsco.co/premtimet/gallery [gallery-dl][debug] Version 1.30.5 [gallery-dl][debug] Python 3.13.0 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.4 - urllib3 2.5.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'https://vsco.co/premtimet/gallery' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/premtimet/gallery' [vsco][debug] TLS 1.2 disabled. [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 send: b'GET /premtimet/gallery HTTP/1.1\r\nHost: vsco.co\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive\r\nReferer: https://vsco.co/\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nTE: trailers\r\n\r\n' reply: 'HTTP/1.1 403 Forbidden\r\n' header: Date: Thu, 28 Aug 2025 18:48:42 GMT header: Content-Type: text/html; charset=UTF-8 header: Transfer-Encoding: chunked header: Connection: keep-alive header: X-Frame-Options: SAMEORIGIN header: Referrer-Policy: same-origin header: Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 header: Expires: Thu, 01 Jan 1970 00:00:01 GMT header: Set-Cookie: __cf_bm=Jkte9cnRL4kAi2TmpQsAFOz6dZGjPXXINBHPX27wRZo-1756406922-1.0.1.1-V9jxEDmRLA2OeXkT4s7vJODQEBHeHmpm2TkSq5R6MSvzwo5mj0QfqOyPbNK65DuGaq1709qspsIjutaHNYmeom86a9mmT1BpBSe0fMUND10; path=/; expires=Thu, 28-Aug-25 19:18:42 GMT; domain=.vsco.co; HttpOnly; Secure; SameSite=None header: Vary: Accept-Encoding header: Server-Timing: cfOrigin;dur=0,cfEdge;dur=10 header: Server: cloudflare header: CF-RAY: 9765fc00debe14ea-LAX header: Content-Encoding: gzip [urllib3.connectionpool][debug] https://vsco.co:443 "GET /premtimet/gallery HTTP/1.1" 403 None [vsco][error] HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery' [vsco][debug] Traceback (most recent call last): File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\job.py", line 152, in run for msg in extractor: ^^^^^^^^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 34, in items for img in self.images(): ~~~~~~~~~~~^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 157, in images data = self._extract_preload_state(url) File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 81, in _extract_preload_state page = self.request(url, notfound=self.subcategory).text ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\common.py", line 260, in request raise exc gallery_dl.exception.HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery'


C:\Users\Desktop\Desktop>gallery-dl --verbose --print-traffic -o browser=chrome -o ciphers=chrome https://vsco.co/premtimet/gallery [gallery-dl][debug] Version 1.30.5 [gallery-dl][debug] Python 3.13.0 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.4 - urllib3 2.5.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'https://vsco.co/premtimet/gallery' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/premtimet/gallery' [vsco][debug] TLS 1.2 disabled. [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 send: b'GET /premtimet/gallery HTTP/1.1\r\nHost: vsco.co\r\nConnection: keep-alive\r\nsec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: "Linux"\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nReferer: https://vsco.co/\r\nSec-Fetch-Site: same-origin\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Dest: empty\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: en-US,en;q=0.9\r\n\r\n' reply: 'HTTP/1.1 403 Forbidden\r\n' header: Date: Thu, 28 Aug 2025 18:49:35 GMT header: Content-Type: text/html; charset=UTF-8 header: Transfer-Encoding: chunked header: Connection: keep-alive header: X-Frame-Options: SAMEORIGIN header: Referrer-Policy: same-origin header: Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 header: Expires: Thu, 01 Jan 1970 00:00:01 GMT header: Set-Cookie: __cf_bm=GoUnNw3HSGgG2TrC8U60eYZ7293A6298CZZW.3qWLEo-1756406975-1.0.1.1-Su71tQHnLD_2UCHyUKRha7CeZ5qe8xBr6sbxdTSufTiJazopRFaukFPOA5UMhXInkmlCTqUqKR9dqugPpzsFfayTp.nMwAQjVOwsMiS95pY; path=/; expires=Thu, 28-Aug-25 19:19:35 GMT; domain=.vsco.co; HttpOnly; Secure; SameSite=None header: Vary: Accept-Encoding header: Server-Timing: cfOrigin;dur=0,cfEdge;dur=23 header: Server: cloudflare header: CF-RAY: 9765fd4efbdf14ea-LAX header: Content-Encoding: gzip [urllib3.connectionpool][debug] https://vsco.co:443 "GET /premtimet/gallery HTTP/1.1" 403 None [vsco][error] HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery' [vsco][debug] Traceback (most recent call last): File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\job.py", line 152, in run for msg in extractor: ^^^^^^^^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 34, in items for img in self.images(): ~~~~~~~~~~~^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 157, in images data = self._extract_preload_state(url) File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\vsco.py", line 81, in _extract_preload_state page = self.request(url, notfound=self.subcategory).text ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Desktop\AppData\Local\Programs\Python\Python313\Lib\site-packages\gallery_dl\extractor\common.py", line 260, in request raise exc gallery_dl.exception.HttpError: '403 Forbidden' for 'https://vsco.co/premtimet/gallery'


i was able to get it to work, but i had to rewrite the common.py in the extractor file, also in http.py file in downloader and ytdl file in downloader to make it work with

https://github.com/lexiforest/curl_cffi (yt-dlp does use similar code for their project)

for ytdl, i had to add this to the argument , --impersonate CLIENT[:OS]

ytdlnew.py

httpnew.py

commonnew.py

disclaimer, it is AI slope, i cant code

zone559 avatar Aug 28 '25 18:08 zone559

Yeah I've been experiencing this as well.

kookie99 avatar Aug 28 '25 20:08 kookie99

i was able to get it to work, but i had to rewrite the common.py in the extractor file, also in http.py file in downloader and ytdl file in downloader to make it work with

https://github.com/lexiforest/curl_cffi (yt-dlp does use similar code for their project)

for ytdl, i had to add this to the argument , --impersonate CLIENT[:OS]

ytdlnew.py

httpnew.py

commonnew.py

disclaimer, it is AI slope, i cant code

I'm curious as to how you went about this. I thought the attached files were the modified ones, but putting them into a compare tool, they appear to just be the same files I already have? I'd be interested in getting the modified files from you,

adamdavidson avatar Aug 29 '25 00:08 adamdavidson

i was able to get it to work, but i had to rewrite the common.py in the extractor file, also in http.py file in downloader and ytdl file in downloader to make it work with https://github.com/lexiforest/curl_cffi (yt-dlp does use similar code for their project) for ytdl, i had to add this to the argument , --impersonate CLIENT[:OS] ytdlnew.py httpnew.py commonnew.py disclaimer, it is AI slope, i cant code

I'm curious as to how you went about this. I thought the attached files were the modified ones, but putting them into a compare tool, they appear to just be the same files I already have? I'd be interested in getting the modified files from you,

they are the modified ones, i just replace request with curl_cffi.requests with some minor changes to avoid detection and that it

zone559 avatar Aug 29 '25 01:08 zone559

Yep, I see that now. Some how I ended up comparing your new one against itself. Thanks.

adamdavidson avatar Aug 29 '25 03:08 adamdavidson

-o browser=firefox worked for me

Voodookid81 avatar Sep 02 '25 05:09 Voodookid81

cloudflare is limiting certain people over other people, it depend how much you scrapping.

zone559 avatar Sep 02 '25 07:09 zone559

I tried the above mentioned solutions like -o browser=firefox, -o browser=chrome, -o ciphers=firefox, -o ciphers=chrome and using my user-agent with cookies but still get this error "[vsco][error] HttpError: '403 Forbidden' for 'https://vsco.co/username/gallery'". But this only happens with my Windows 10 Laptop. With my Android Smartphone and Termux gallery-dl can download from vsco without any problems.

Tom1287 avatar Sep 19 '25 13:09 Tom1287

I'm having the same issue and none of the fixes mentioned have worked

terminalwhoami avatar Sep 22 '25 15:09 terminalwhoami

Same issue - any update on this?

ksarnelli avatar Sep 26 '25 22:09 ksarnelli

@zone559 's use of curl_cffi and changes in ./extractor/common.py and ./downloader/http.py worked for me as well

yusufbromack avatar Oct 09 '25 20:10 yusufbromack

@zone559 's use of curl_cffi and changes in ./extractor/common.py and ./downloader/http.py worked for me as well

However, because it made changes to the two files, it broke other sites, so I reverted back.

yusufbromack avatar Oct 11 '25 08:10 yusufbromack

Has anyone figured out a solution or is vsco locked down too much now? I can't get it to work with the fixes either.

Allen-Kwan avatar Nov 09 '25 05:11 Allen-Kwan

any update on this issue?

ss71651 avatar Nov 22 '25 05:11 ss71651

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!

hassannoor4 avatar Nov 30 '25 19:11 hassannoor4

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!

Confirmed this works. Thank you!

ksarnelli avatar Nov 30 '25 19:11 ksarnelli

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!

Confirmed as working here too.

FYI you can just add those lines to your regular config.json, to skip needing to remember to add the flag and path at execution.

yusufbromack avatar Nov 30 '25 21:11 yusufbromack

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!


adding cookie file to config file kind of risky since cookie files change all the time so maybe this might be a better option. base on your setup

my config file "vsco": { "tls12": true, "browser": "YOUR BROWSER (EXAMPLE FIREFOX)", "user-agent": "YOUR BROWSER USER AGENT"


gallery-dl --verbose --cookies-from-browser firefox https://vsco.co/themadonna-whore/gallery [gallery-dl][debug] Version 1.30.10 [gallery-dl][debug] Python 3.13.0 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.4 - urllib3 2.5.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'https://vsco.co/themadonna-whore/gallery' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/themadonna-whore/gallery' [cookies][debug] Extracting cookies from C:\Users\Desktop\AppData\Roaming\Mozilla\Firefox\Profiles\mhpmuq0f.default-release-1682442624324\cookies.sqlite [cookies][info] Extracted 146 cookies from Firefox [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 [urllib3.connectionpool][debug] https://vsco.co:443 "GET /themadonna-whore/gallery HTTP/1.1" 200 None [urllib3.connectionpool][debug] https://vsco.co:443 "GET /api/3.0/medias/profile?site_id=162819693&limit=14 HTTP/1.1" 200 686 .\gallery-dl\vsco\themadonna-whore\689912aa1cfba08ce7a1f3cd.jpg

zone559 avatar Dec 01 '25 02:12 zone559

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!

adding cookie file to config file kind of risky since cookie files change all the time so maybe this might be a better option. base on your setup

my config file "vsco": { "tls12": true, "browser": "YOUR BROWSER (EXAMPLE FIREFOX)", "user-agent": "YOUR BROWSER USER AGENT"

gallery-dl --verbose --cookies-from-browser firefox https://vsco.co/themadonna-whore/gallery [gallery-dl][debug] Version 1.30.10 [gallery-dl][debug] Python 3.13.0 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.4 - urllib3 2.5.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'https://vsco.co/themadonna-whore/gallery' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/themadonna-whore/gallery' [cookies][debug] Extracting cookies from C:\Users\Desktop\AppData\Roaming\Mozilla\Firefox\Profiles\mhpmuq0f.default-release-1682442624324\cookies.sqlite [cookies][info] Extracted 146 cookies from Firefox [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 [urllib3.connectionpool][debug] https://vsco.co:443 "GET /themadonna-whore/gallery HTTP/1.1" 200 None [urllib3.connectionpool][debug] https://vsco.co:443 "GET /api/3.0/medias/profile?site_id=162819693&limit=14 HTTP/1.1" 200 686 .\gallery-dl\vsco\themadonna-whore\689912aa1cfba08ce7a1f3cd.jpg

You make an excellent point, this works without adding the cookie information, so why in the world would anyone put in their cookie information? :P

yusufbromack avatar Dec 01 '25 02:12 yusufbromack

I ran into this problem, here's what worked for me. Problem was tls12 was set to false I created json config file, I named it vsco2.json:

{
  "extractor": {
    "vsco": {
      "tls12": true,
      "browser": "Safari",
      "user-agent": "PASTE_HERE",
      "headers": {
        "Cookie": "PASTE_YOUR_VSCO_COOKIE_"
      }
    }
  }
}

you can get user-agent and cookie using developer tools (I use safari). when running gallery-dl make sure to add this: gallery-dl --config PATH/vsco2.json If you're on macOS make sure Terminal has disk permissions, that might also be an issue. Happy archiving!

adding cookie file to config file kind of risky since cookie files change all the time so maybe this might be a better option. base on your setup my config file "vsco": { "tls12": true, "browser": "YOUR BROWSER (EXAMPLE FIREFOX)", "user-agent": "YOUR BROWSER USER AGENT" gallery-dl --verbose --cookies-from-browser firefox https://vsco.co/themadonna-whore/gallery [gallery-dl][debug] Version 1.30.10 [gallery-dl][debug] Python 3.13.0 - Windows-10-10.0.19045-SP0 [gallery-dl][debug] requests 2.32.4 - urllib3 2.5.0 [gallery-dl][debug] Configuration Files ['%APPDATA%\gallery-dl\config.json'] [gallery-dl][debug] Starting DownloadJob for 'https://vsco.co/themadonna-whore/gallery' [vsco][debug] Using VscoGalleryExtractor for 'https://vsco.co/themadonna-whore/gallery' [cookies][debug] Extracting cookies from C:\Users\Desktop\AppData\Roaming\Mozilla\Firefox\Profiles\mhpmuq0f.default-release-1682442624324\cookies.sqlite [cookies][info] Extracted 146 cookies from Firefox [urllib3.connectionpool][debug] Starting new HTTPS connection (1): vsco.co:443 [urllib3.connectionpool][debug] https://vsco.co:443 "GET /themadonna-whore/gallery HTTP/1.1" 200 None [urllib3.connectionpool][debug] https://vsco.co:443 "GET /api/3.0/medias/profile?site_id=162819693&limit=14 HTTP/1.1" 200 686 .\gallery-dl\vsco\themadonna-whore\689912aa1cfba08ce7a1f3cd.jpg

You make an excellent point, this works without adding the cookie information, so why in the world would anyone put in their cookie information? :P

Cloudflare need cookies in order to work properly, if cookies are not there, then it detect that it might be a python script and will block the request and then we will have the same issue again. its better be safe than sorry, make the request more realistic, like a human. I think the issue is just outdated user agent and tls being disable, i will need mkif and other user to test it out to see if it works.

zone559 avatar Dec 01 '25 03:12 zone559

Working for me without adding the cookies, just fyi

yusufbromack avatar Dec 01 '25 03:12 yusufbromack

i will need mikf and other user to test it out to see if it works.

On Linux, it works for me regardless of any options On Windows, I need -o browser=firefox to get around the 403 error (https://github.com/mikf/gallery-dl/commit/f1aa3af11939f77b03bb0fcab2744dc7f98f8dde). -o tls12=0 didn't make a difference.

I'm pretty sure this also depends on the IP address / range you are connecting from. A VPN or proxy might help.

  "browser": "Safari",

Safari is not a supported browser target (only firefox & chrome are) and is effectively treated the same as "browser": "firefox".

mikf avatar Dec 01 '25 15:12 mikf

For me (win usage tested) it started to work again the similar way - only after adding both to the config file: "browser": "firefox", "tls12": true with 403 still present with "firefox" but without tls. (already been using cookies from firefox by default).

Merziv avatar Dec 02 '25 15:12 Merziv

can someone pls help me. im on mac and not very informed on coding

edits879 avatar Dec 05 '25 08:12 edits879

@edits879

$ gallery-dl -o browser=firefox -o tls12=1 https://vsco.co/missuri
./vsco/missuri/68fa007209e64422c3e9bc23.jpg
./vsco/missuri/687510ac53bcdd21bc6837ba.jpg
./vsco/missuri/68750ff553bcdd21bc6837b9.jpg

mikf avatar Dec 05 '25 08:12 mikf

  "browser": "Safari",

Safari is not a supported browser target (only firefox & chrome are) and is effectively treated the same as "browser": "firefox".

Safari works fine as a target. I don't use or have installed firefox or chrome and gallery-dl and others work fine for me. Just thought I'd add that.

hassannoor4 avatar Dec 16 '25 06:12 hassannoor4