Apple - How to use youtube-dl --cookies
Once you get the cookies, you only need to run
youtube-dl --cookies /pathtocookiefile
If you use Chrome and accept third-party plugins to read your cookies.
Just try this cookie.txt,open the youtube then click cookie.txt plugin.
One more click ,you can download the cookie file for one tab or all.
If you want do it manual in Chrome. F12 > Application > Storage > Cookies.
You need convert cookie list to Netscape format cookies file
#domain HTTP/Secure Expires Name Value
.youtube.com TRUE/FALSE 1548523767 GPS 1
While this may not work for YouTube specifically, I wanted to highlight an easier approach that works well for youtube-dl
to download from a site that requires login (and uses cookies to track the session).
Edit: Unfortunately YouTube is dependent on cookies set across multiple domains, so this approach probably will not work there.
youtube-dl has an option called --add-header
:
--add-header FIELD:VALUE Specify a custom HTTP header and its value, separated by a colon ':'. You can use this option
multiple times
Cookies are ultimately just submitted to the server as HTTP headers, so all you have to do is set the Cookie
header on the request. This method is also quite a bit easier than extracting a cookie jar from a modern browser, especially since those tend to be encrypted and people often turn to questionable 3rd party tools to extract that data.
Here is a usage example:
youtube-dl --add-header "Cookie:COOKIE_STRING_EXTRACTED_FROM_BROWSER" "https://website-that-hosts.example/the-video-you-want"
To extract the value of the cookie header:
- Open the website you wish to download from
- Log in
- Open your browser's network inspector
- Reload the page
- Find the very first request made to that website and click on it, then view the headers for the request
Copy the entire string value of the
Cookie
header, highlighted in this image:Paste that value into the example command above to replace
COOKIE_STRING_EXTRACTED_FROM_BROWSER
(inside the quotes)
This works well to download full episodes from sites that require cable provider login.
This approach doesn't require installing any browser extension, which could pose a security risk, as @bgentry also pointed out.
It requires a terminal window, Node.js, and this open-source script I published.
- Download the script (or clone the repo if you prefer)
- In an editor, open a new blank file
- In Chrome/Chromium, launch Developer Tools (F12)
- Navigate to the site you need cookies from, e.g. YouTube, and log in.
- Go to Application -> Storage -> Cookies
- For each URL under Cookies (e.g.
https://www.youtube.com
), copy the table of cookies into the clipboard, then paste it at the end of the file you've opened in step 2. - Save the file with a name like
file-with-cookies-copy-pasted-from-Chrome.txt
Run the script:
node convert-cookies.js file-with-cookies-copy-pasted-from-Chrome.txt > netscape-cookies.txt
Now, netscape-cookies.txt
will contain cookies ready to be used by any application that reads cookies in Netscape format (e.g. yotube-dl
or curl
).