Skip to content
Advertisement

Download “401 Unauthorized” video with selenium

I’m trying to create a bot that will download videos from this site named “Sdarot” using selenium and python3.

Each video (or episode) in the site has a unique page and URL. When you load an episode, you have to wait 30 seconds for the episode to “load”, and only then the <video> tag appears in the HTML source file.

The problem is that the request for the video is encrypted or secured in one way or another (I don’t really understand how it works)! When I try to simply wait for the video tag to appear and then download the video with the urllib library (see code below), I get the following error: urllib.error.HTTPError: HTTP Error 401: Unauthorized

I should note that when I try to open the link of the download video in the selenium driver, it opens completely fine and I can download it manually.

How can I download the videos automatically? Thanks in advance!

Code:

JavaScript

Advertisement

Answer

You are getting unauthorised error because they are using cookies to store some information related to your session. Specifically cookie named Sdarot. I have used requests library to download and save the video.

Main point is when you open the url using selenium it works fine because selenium is using the same http client (the browser) which already has cookie details available, but when you call using urllib basically its different http client so its a new request for the server. To overcome this you will have to behave like the browser by providing enough session information, in this case maintained by cookies.

Check how I have extracted value of Sdarot cookie and applied it in requests.get method. You can do this using urllib also.

JavaScript
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement