gpt4 book ai didi

youtube-dl - 如何将原始 cookie 转换为 Netscape jar cookie 并保存到文件?

转载 作者:行者123 更新时间:2023-12-05 07:38:23 25 4
gpt4 key购买 nike

我想将来自浏览器扩展的 cookie 文件传递​​给 youtube-dl。该扩展以原始格式发送 cookie,即像 VISITOR_INFO1_LIVE=_SebbjYciU0; YSC=tSqadPjjfd8; PREF=f4=4000000但是 youtube-dl 采用 netscape jar 格式的 cookie(据我所知)。如果我将原始文本 cookie 放入文件并将其传递给 --cookies=file.txt 参数,youtube-dl 会引发异常。

我无法设法将我的原始 cookie 转换为 jar cookie 并保存到磁盘中的文件中。我已经搜索了解决方案,但没有找到任何可接受的解决方案。

最佳答案

我在将“curl”cookies 转换为 wget one 时遇到了非常相似的问题......Netscape CookieJar 格式很简单,请参见 *

所以我花了几分钟写了一个快速的 perl 脚本并生成了一个 cookiejar

这是代码(可下载 here )

#!/usr/bin/perl

# usage
# perl cookiejar.pl {{url}} '{{cookie-string}}'


use YAML::Syck qw(Dump);
my $expires = $^T + 86400;
my $path = '/';

my $url = shift;
my $cookies = shift;

printf "--- # %s at %u\n",__FILE__,$^T;
my $domain;
my $p = index($url,'://')+3;
my $l = index($url,'/',$p);
$domain = substr($url,$p,$l-$p);
my $dots = () = $domain =~ /\./g;
printf "dots: %s\n",$dots;
if ($dots > 1) {
$domain = substr($domain,index($domain,'.'));
} else {
$domain = '.'.$domain;
}
printf "domain: %s\n",$domain;
printf "url: %s\n",$url;

local *F; open F,'>','cookiejar.txt' or warn $!;
print F <<EOT;
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file! Do not edit.
# domain: $domain
# url: $url

EOT
my @cookies = split'; ',$cookies;
printf "--- %s...\n",Dump(\@cookies);
foreach my $cookie (@cookies) {
my ($key,$value) = split('=',$cookie);
if (! $seen{$key}++) {
# domain access path sec expire cookie value
printf F "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",$domain,'TRUE',$path,'FALSE',$expires,$key,$value;
}
}
close F;
print "info: cookiejar.txt created\n";
printf "cmd: wget --load-cookie-file cookiejar.txt --referer=%s -p %s\n",$domain,$url;
printf "cmd: youtube-dl --cookie cookiejar.txt -referer %s %s\n",$domain,$url;

exit $?;

1; # $Source: /my/perl/scripts/cookiejar.pl $

按如下方式运行它:

perl cookiejar.pl https://example.com/ 'cookie1=value1; cookie2=value2'

注意事项:

您可能需要安装 YAML::Syck

cpan install YAML::Syck

或者只是注释掉 Dump() 调用和使用 YAML::Syck 行。

关于youtube-dl - 如何将原始 cookie 转换为 Netscape jar cookie 并保存到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47950098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com