Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用tor代理时发生常规SOCKS服务器故障_Python_Proxy_Network Programming_Tor_Proxy Server - Fatal编程技术网

Python 使用tor代理时发生常规SOCKS服务器故障

Python 使用tor代理时发生常规SOCKS服务器故障,python,proxy,network-programming,tor,proxy-server,Python,Proxy,Network Programming,Tor,Proxy Server,我通过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

我通过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 exit节点获得代理。

这个问题有什么解决办法吗


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

在代码之前创建Mongo连接对象。花了一天的时间想弄明白。然后只是改变了导入mongo和tor文件的顺序,就成功了

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