我使用curl在我的本地计算机上安装了youtube-dl,如官方README here中所述。
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
现在,当我在本地计算机上运行命令
时youtube-dl --cookies cookie.txt https://www.youtube.com/watch?v=x-5V_RS3Q48 -u my_account@gmail.com -p my_pass_word
我可以毫不费力地下载视频,如下所示。
但是当我尝试在我的某个ec2实例上下载相同的视频时,我收到以下异常。
两台机器上的安装程序完全相同,youtube-dl版本完全相同(2017.08.18),python版本相同(2.7.6)
我能想到的唯一区别是两台机器上的内核版本:
在我的本地: Linux-3.19.0-25-generic-x86_64-with-Ubuntu-14.04-trusty
在EC2实例上: Linux-3.13.0-74-generic-x86_64-with-Ubuntu-14.04-trusty
我尝试下载的视频也是私有,并由同一位用户上传我提供的凭据。
需要注意的一点是,如果我没有使用用户名,那么EC2机器可以毫无困难地下载视频。密码(仅适用于非私人视频)
由于
答案 0 :(得分:0)
发布答案以防其他人遇到类似问题。
AWS提供的ec2实例上的服务器版Linux OS上未生成cookie的问题。
根据我最近学到的,我们在这些机器上不支持firefox浏览器(至少默认情况下),这就是为什么它无法创建cookie文件。
<强>解决方案强>
我在本地创建了该文件,并将未来的到期时间设置为20年,并将该cookie移到服务器ec2实例上并使用该cookie登录而不是创建一个。
由于