如何在终端(例如youtube-dl)中使用袜子代理进行命令?


37

我通过运行以下命令连接到远程ssh服务器:

ssh -D 12345 bob@myserver.com

这将创建一个袜子代理,我可以将其与Firefox一起使用以绕过我所在国家/地区的审查制度。但是,我无法在命令行中利用它。

假设我的国家/地区禁止访问youtube。如何使用ssh连接运行命令,例如:

youtube-dl "youtube.com/watch?v=3XjwiV-6_CA"

没有被政府封锁?如何为所有终端命令设置袜子代理?


1
我找到了一个临时解决方案。我用过袜子。安装完成后,在建立ssh连接后,我将使用tsocks启动我想要的应用程序,如下所示:tsocks gnome-terminal
user1098135 2013年

1
tsocks youtube-dl ...-tsocks是一个聪明的应用程序,通常在存储库中可用,用于LD_PRELOAD迫使应用程序通过指定的SOCKS连接(在中指定)来路由其流量~/.tsocks.conf
Zaz

Answers:


17

Youtube-dl不支持SOCKS代理。有一个功能要求,其中包含一些工作建议的链接。

Youtube-dl开箱即用支持HTTP代理。要获得此支持,您需要在上运行代理myserver.com。几乎任何轻量级代理都可以做到,例如tinyproxy。代理只需要侦听本地连接(Listen 127.0.0.1中的tinyproxy.conf)。如果HTTP代理正在侦听端口8035(Port 8035),请运行以下ssh命令:

ssh -L 8035:localhost:8035 bob@myserver.com

并设置环境变量http_proxyhttps_proxy

export http_proxy=http://localhost:8035/ https_proxy=http://localhost:8035/
youtube-dl youtube.com/watch?V=3XjwiV-6_CA

如果他们要使用SSH,那么为什么他们需要tinyproxy或反之亦然?我使用SSH隧道,并且工作正常。
Umair A.

@Neutralizer SSH仅从本地计算机中继到代理计算机。代理计算机上的某些内容需要对HTTP请求进行解码并找出服务器计算机的IP地址。如果客户端支持SOCKS,则SSH可以完成此工作,但是youtube-dl不支持SOCKS。如果您要为特定服务器使用代理,则可以单独使用SSH并告诉它直接转发到该服务器,但这仅在所有请求都需要转发到相同IP地址和端口的情况下才有效。
吉尔斯(Gillles)“所以-别再邪恶了”

对于调试,最好使用ssh命令运行,-v也可以跳过交互式会话-N
fikovnik


48
ssh -D 8080 name@myserver.com
export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080
youtube-dl "youtube.com/watch?V=3XjwiV-6_CA"

简单,为我工作。
凯文·唐

5
添加-N以跳过交互式ssh会话
fikovnik

5

youtube-dl与ubuntu上的proxychain配合良好。确保通过命令行建立您的隧道。

ssh -D 8081 ubuntu@yourSSHserver

接下来在您的本地主机上安装代理链,而不是连接到的ssh服务器。

sudo apt-get install proxychains

编辑您的proxychains配置文件

sudo nano /etc/proxychains.conf

在最后一行上编辑端口号

socks4  127.0.0.1 8081

注意:我在端口8081上使用代理链

然后在使用youtube-dl时将代理链添加到命令的开头

proxychains ./youtube-dl http://thesite.com/yourvideo.hmtl 

proxychains是一个很酷的工具
2 8年

2

您可以使用Delegate

它是可以作为HTTP代理侦听的SOCKS服务器和/或客户端。

下载最新版本的委托并将其解压缩。

首先运行您的ssh命令:

ssh -D 9150 me@myserver.com

然后,使用以下选项运行二进制委托文件,以将HTTP代理作为SOCKS客户端:

$ ./dg9_9_13 -P8080 SERVER=http SOCKS=127.0.0.1:9150 ADMIN="local@localhost.com"

然后,运行youtube-dl带有--proxy选项以连接到侦听的HTTP代理:

$ youtube-dl -v --proxy "http://127.0.0.1:8080" https://www.youtube.com/watch?v=VID

1

youtube-dl2016.05.10版本开始,您可以--proxy用来指定SOCKS代理,例如

youtube-dl --proxy "socks5://127.0.0.1/" -v 9bZkp7q19f0

--proxy URL使用指定的HTTP / HTTPS / SOCKS代理。要启用实验性SOCKS代理,请指定适当的方案。例如socks5://127.0.0.1:1080/


0

如果您正在寻找Youtube视频,则可能需要尝试cclive,它似乎支持代理。它也可以做其他流媒体站点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.