使用tor代理时,一般SOCKS服务器出现故障

时间:2015-06-23 13:27:35

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

我代理流量超过tor,所以当我需要调用localhost端口时,它会发出错误信息。

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会话?

2 个答案:

答案 0 :(得分:0)

在代码之前创建mongo连接对象。花了一天时间试图解决这个问题。然后只是改变了导入mongo和tor文件的顺序,它工作正常。

答案 1 :(得分:0)

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

相关问题