【问题标题】:General SOCKS server failure while using tor proxy使用 tor 代理时一般 SOCKS 服务器故障
【发布时间】:2015-06-23 13:27:34
【问题描述】:

我通过tor代理流量,所以当我需要调用本地主机端口时,它会给出失败错误。

def create_connection(self, address, timeout=None, source_address=None):
    sock = socks.socksocket()
    sock.connect(address)
    return sock

def getVideoTrend(self):

    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
    socket.socket = socks.socksocket
    socket.create_connection = self.create_connection
    #some code
    Mongo.SaveEntity()

SaveEntity 包含:

hostname = 'localhost'
port = 27017
self.client = MongoClient(hostname, port)

给了

  File "radurl.py", line 110, in getVideoTrend
    MongoDbOpp().saveEntity(final_result)    
  File "/root/Documents/scraping/radurls/mongo_operation.py", line 14, in __init__
    self.client = MongoClient(hostname, port)
  File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 377, in __init__
    raise ConnectionFailure(str(e))
pymongo.errors.ConnectionFailure: 0x01: General SOCKS server failure

我理解这个错误背后的原因,mongo 尝试连接到本地控制端口,通过一个 tor 出口节点被代理。

这个问题有解决办法吗?

或者我可以在 Mongo 操作之前终止 Tor 会话?

【问题讨论】:

    标签: python proxy network-programming tor proxy-server


    【解决方案1】:

    在您的代码之前创建 mongo 连接对象。花了一天时间试图弄清楚这一点。然后只需更改导入 mongo 和 tor 文件的顺序即可。

    【讨论】:

      【解决方案2】:

      您可以先像 ori_socket = socket.socket 一样简单地记录原始套接字。 并在执行 mongo 操作之前重新定义 socket.socket = ori_socket。这对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        相关资源
        最近更新 更多