【问题标题】:Python paho.mqtt with SOCKS proxy带有 SOCKS 代理的 Python paho.mqtt
【发布时间】:2017-04-23 08:41:42
【问题描述】:

我的组织有一个企业固件和一个允许绕过它的 SOCKS 代理。我需要能够将 MQTT 与外部服务器一起使用。 我可以在 python 脚本中使用 PySocks(猴子补丁),但是当我尝试使用 paho.mqtt 时它会中断。

是否有允许使用 SOCKS 的 MQTT 库?有没有其他方法可以解决?

#!/usr/bin/python
import socket
import socks
import paho.mqtt.client as mqtt
socks.set_default_proxy(socks.SOCKS5,"my-proxy",1080)
socket.socket = socks.socksocket

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
client.subscribe("$SYS/#")
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("iot.eclipse.org", 1883, 60)
client.loop_forever()

错误:

Traceback (most recent call last):   File "./yo.py", line 20, in <module>
    client = mqtt.Client()   File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 508, in
__init__
    self._sockpairR, self._sockpairW = _socketpair_compat()   File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 277, in
_socketpair_compat
    sock1.connect(("127.0.0.1", port))   File "/usr/lib/python2.7/site-packages/socks.py", line 96, in wrapper
    return function(*args, **kwargs)   File "/usr/lib/python2.7/site-packages/socks.py", line 813, in connect
    negotiate(self, dest_addr, dest_port)   File "/usr/lib/python2.7/site-packages/socks.py", line 477, in
_negotiate_SOCKS5
    CONNECT, dest_addr)   File "/usr/lib/python2.7/site-packages/socks.py", line 552, in
_SOCKS5_request
    raise SOCKS5Error("{0:#04x}: {1}".format(status, error)) socks.SOCKS5Error: 0x01: General SOCKS server failure

【问题讨论】:

  • socks 代理真的在 localhost (127.0.0.1) 上运行还是您编辑了错误?

标签: python mqtt socks


【解决方案1】:

我认为 paho python 现在有袜子支持,如 Github 网址中所述:

paho python setup.py extras

请看client.py中的proxy_set方法

【讨论】:

  • 更改客户端循环的启动方式不会改变任何事情,因为在到达客户端循环之前,客户端构造函数代码中出现了故障。
  • 与其编辑答案以匹配我指出的内容,不如删除它。因为就像现在一样,不查看编辑历史就没有上下文,答案也没有任何用处
  • 您可以随时删除自己的帖子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
相关资源
最近更新 更多