0

我正在尝试通过代理使用 urllib2 来废弃不直接可用的网页(它在远程服务器的本地网络中运行并且无法从外部访问)。我更喜欢的代理是 SSH SOCKS 代理(就像你运行时得到的那样ssh -D 9090 server),既因为我可以访问它,又因为它相当安全。

我已经玩过了,paramiko但我发现的所有内容都指向通过 SOCKS 运行 SSH 连接,这与我在这里实际尝试完成的相反。

我已经看到了 Transport 类,但这只会进行愚蠢的转发,并且没有提供一个很好的 OpenSSH-SOCKS 代理接口,我可以使用 SocksiPy(等)锁定它。

Net::SSH::Socks for Ruby正是我用错误的语言寻找的东西。Python中是否有任何可用的东西通过SSH提供代理?

4

1 回答 1

0

我有一个适用于抓取的解决方法。我没有尝试使用 SSH 连接,而是使用远程 shell 来提取数据:

from bs4 import BeautifulSoup
import paramiko

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect('example.com', username='Oli', look_for_keys=True, timeout=5)

stdin, stdout, stderr = ssh.exec_command('/usr/bin/wget -qO- "%s"' % url)
soup = BeautifulSoup(stdout)

ssh.close()

这不是我开始寻找的东西(我仍然非常想看看是否有一种通过 SSH 连接 SOCKS 套接字的方法),但它的简单性有一些优雅。

于 2013-08-07T09:20:44.977 回答