繁体   English   中英

Socks set_default_proxy在Ubuntu上引发错误,但在OSX或Windows上未引发

[英]Socks set_default_proxy throws an error on Ubuntu but not on OSX or Windows

这是导致错误的我的代码部分。 它可以在OSX和Windows上正常运行。

def sslwrap(func):
    @wraps(func)
    def bar(*args, **kw):
        kw['ssl_version'] = ssl.PROTOCOL_TLSv1
        return func(*args, **kw)
    return bar
ssl.wrap_socket = sslwrap(ssl.wrap_socket)
if sys.platform == "darwin":
    requests.packages.urllib3.disable_warnings()
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 4050)
socket.socket = socks.socksocket

这是我在Ubuntu服务器上遇到的错误:

追溯(最近一次通话最近):文件“ new.py”,第42行,在socks.set_default_proxy(socks.SOCKS5,“ 127.0.0.1”,9050)中AttributeError:'module'对象没有属性'set_default_proxy'

有什么想法吗? 很可能是sockspy库中的错误?

看起来函数socks.set_default_proxy(...)最近已重命名; 该库的先前版本将其拼写为不带下划线,例如socks.setdefaultproxy(...) 您的Ubuntu服务器上可能已安装了这些早期版本之一。

有时可以通过尝试两种方法名称的拼写来解决此问题,如下所示:

try:
  sdp = socks.set_default_proxy
except AttributeError:
  sdp = socks.setdefaultproxy
sdp(socks.SOCKS5, "127.0.0.1", 4050)

有时强调; 仅凭SocksiPy的API随时间推移以及一系列不同的维护者而发生了重大变化,仅凭此点可能还不够。

来源:查阅PySocks READMEsocksipy-x README及其之前的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM