Skip to content

Instantly share code, notes, and snippets.

Last active March 23, 2024 03:32
Show Gist options
  • Save danfinlay/7357098 to your computer and use it in GitHub Desktop.
Save danfinlay/7357098 to your computer and use it in GitHub Desktop.
How to download a streaming video with Google Chrome

How to download streaming video

Streaming just means a download that they don't want you to keep. But Chrome's developer tools make it easy to access what's really going on under the hood.

Open Developer Tools

From the page where you want to download some things, go into your chrome menu to open the developer tools. You can either:

1.  (On a mac): Command-option-J
2.  (On a PC): Control-alt-J
3.  (In your menu on a mac): Open View > Developer > Developer Tools
4.  (On any Chrome machine): The far right menu button, to the right of the URL bar, you can press that, go down to "Tools", then open the "Developer Tools".

Monitor Network Traffic

By clicking the "Network" tab, you'll get a list of all files requested since you opened that tab. Our goal is to isolate the web request that returns the video of your choice. At this point, you can navigate to the video you want, and I'd probably press the "clear" button in the developer tools right before finally pressing the "Play" button on the video, so it can be one of the only transfers you see.

Identify the video transfer

It should be easy to recognize the video transfer: It has a mime type of video, it's a transfer that should take a lot longer than the rest, etc.

Once you've found it, click on the request name, which represents the HTTP request that was sent to the server for the video file.

Identify the Request URL

The first thing in the first tab of the request viewer should be the Request URL in the Headers tab. You can just copy this URL into another video, and now if you right click the video, it should include a Save option, unlike when the whole thing was wrapped in Flash or whatever.


Copy link

zaphod77 commented Nov 13, 2023

99% of the time, if it's sent in segments, it's because there's an m3u8 file with a list of segments. the trick is to grab that file, which will tell you which segment is which. :) there are extensions to do that.

There is stuff this does NOT work on.

Specifically, there are cases where there IS no direct URL, and the only access to the video file is through a script that verifies both referrer and a one time token created when the player is opened. The player autoloads the url so by the time it's in network resources, the token is already used, and trying to copy the link doesn't work. even if you try to view source, by the time you see the token, it's too late, because the token is only valid to start the stream for a few seconds, even if it wasn't activated immediately.

How do you beat this one, and force the browser to download instead of play?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment