如何为 VLC 设置 HTTP 用户代理?

How to set HTTP User-Agent for VLC?

我正在使用 VLC 的命令行选项 --http-user-agent,但它似乎不起作用。

我的命令是

$ vlc --http-user-agent 'FooBar/1.2.3' 'http://wiki.videolan.org/'

当我使用 tcpdump -Xlnn dst port 80 捕获数据包时,我看到

0x0030:  8eff 035b 4745 5420 2f20 4854 5450 2f31  ...[GET./.HTTP/1
0x0040:  2e31 0d0a 486f 7374 3a20 7769 6b69 2e76  .1..Host:.wiki.v
0x0050:  6964 656f 6c61 6e2e 6f72 670d 0a41 6363  ideolan.org..Acc
0x0060:  6570 743a 202a 2f2a 0d0a 4163 6365 7074  ept:.*/*..Accept
0x0070:  2d4c 616e 6775 6167 653a 207a 685f 434e  -Language:.zh_CN
0x0080:  0d0a 5573 6572 2d41 6765 6e74 3a20 564c  ..User-Agent:.VL
0x0090:  432f 332e 302e 3220 4c69 6256 4c43 2f33  C/3.0.2.LibVLC/3
0x00a0:  2e30 2e32 0d0a 5261 6e67 653a 2062 7974  .0.2..Range:.byt
0x00b0:  6573 3d30 2d0d 0a0d 0a                   es=0-....

这意味着User-Agent部分没有改变(仍然是VLC的默认值)。

我是不是误解了这个选项的用法?或者这是 VLC 中的错误?

我的版本是VLC media player 3.0.2 Vetinari (revision 3.0.2-0-gd7b653cf14)

VLC 的命令行参数帮助页面指出您需要使用 = 将值与参数名称相关联。

https://wiki.videolan.org/VLC_command-line_help/

 --http-user-agent=<string> User agent

试试这个:

$ vlc --http-user-agent='FooBar/1.2.3' 'http://wiki.videolan.org/'

$ vlc 'http://wiki.videolan.org/' :http-user-agent='FooBar/1.2.3' 似乎可以解决问题(将 -- 替换为 : 并将属性放在 url 之后)。我想这可能是 windows 版本期望属性的方式,因为在 GUI 中,您还必须添加以 : 开头的那些属性(我只从 VLC 调试日志中对此进行了评估)

我只能使用 LUA 脚本设置 User-Agent:(命令行方法不起作用)

$ cat play.lua 
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.25 Safari/537.36
#EXTVLCOPT:http-referrer=https://playme.com/i-came-from-this-page-i-sware
https://playme.com/give/me/this/file/169839.mp4?token=my-token

$ VLC play.lua