文件中生成的词干列表 Tor 电路
Stem list Tor circuit generated in file
我正在尝试使用 Stem
启动 Tor 连接,然后列出选择的节点。
使用他们网站上的其他问题和常见问题解答,我可以做一个或另一个,但不能同时做。
例如,我可以用
启动一个 Tor 电路
tor_process = stem.process.launch_tor_with_config(
config = {
'ControlPort': '2778',
'Log': [
'NOTICE stdout',
'ERR file /tmp/tor_error_log',
],
"MaxCircuitDirtiness" : str(60*60*24*30),
"NewCircuitPeriod" : str(60*60*24*30),
},
)
如果我使用 here 中的代码单独启动 Tor,我可以单独查看电路节点。
但是如果我两者都尝试做,比如:
from stem import CircStatus
from stem.control import Controller
import stem
import stem.connection
import stem.process
from stem.control import Controller
if __name__ == '__main__':
tor_process = stem.process.launch_tor_with_config(
config = {
'ControlPort': '2778',
'Log': [
'NOTICE stdout',
'ERR file /tmp/tor_error_log',
],
"MaxCircuitDirtiness" : str(60*60*24*30),
"NewCircuitPeriod" : str(60*60*24*30),
},
)
with Controller.from_port() as controller:
controller.authenticate()
for circ in controller.get_circuits():
if circ.status != CircStatus.BUILT:
continue # skip circuits that aren't yet usable
entry_fingerprint = circ.path[0][0]
entry_descriptor = controller.get_network_status(entry_fingerprint, None)
if entry_descriptor:
print "Circuit %s starts with %s" % (circ.id, entry_descriptor.address)
else:
print "Unable to determine the address belonging to circuit %s" % circ.id
tor_process.kill()
我得到一个错误:
Traceback (most recent call last):
File "circuit.py", line 22, in <module>
with Controller.from_port() as controller:
File "/usr/local/lib/python2.7/dist-packages/stem/control.py", line 1024, in from_port
control_port = stem.connection._connection_for_default_port(address)
File "/usr/local/lib/python2.7/dist-packages/stem/connection.py", line 1058, in _connection_for_default_port
raise exc
stem.SocketError: [Errno 111] Connection refused
这通常是我在没有单独启动的情况下尝试做事时遇到的错误 tor
。
有没有办法结合这两个操作?
编辑:有,我忘了我设置 ControlPort
在下面回答了我的问题。
答案很简单,我忘了我在config
设置了端口,我设置了ControlPort : 2778
,但是打开了Contoller.from_port()
,它使用默认端口9051。
使用 Controller.from_port(port = 2778)
解决了问题。
我正在尝试使用 Stem
启动 Tor 连接,然后列出选择的节点。
使用他们网站上的其他问题和常见问题解答,我可以做一个或另一个,但不能同时做。
例如,我可以用
启动一个 Tor 电路 tor_process = stem.process.launch_tor_with_config(
config = {
'ControlPort': '2778',
'Log': [
'NOTICE stdout',
'ERR file /tmp/tor_error_log',
],
"MaxCircuitDirtiness" : str(60*60*24*30),
"NewCircuitPeriod" : str(60*60*24*30),
},
)
如果我使用 here 中的代码单独启动 Tor,我可以单独查看电路节点。
但是如果我两者都尝试做,比如:
from stem import CircStatus
from stem.control import Controller
import stem
import stem.connection
import stem.process
from stem.control import Controller
if __name__ == '__main__':
tor_process = stem.process.launch_tor_with_config(
config = {
'ControlPort': '2778',
'Log': [
'NOTICE stdout',
'ERR file /tmp/tor_error_log',
],
"MaxCircuitDirtiness" : str(60*60*24*30),
"NewCircuitPeriod" : str(60*60*24*30),
},
)
with Controller.from_port() as controller:
controller.authenticate()
for circ in controller.get_circuits():
if circ.status != CircStatus.BUILT:
continue # skip circuits that aren't yet usable
entry_fingerprint = circ.path[0][0]
entry_descriptor = controller.get_network_status(entry_fingerprint, None)
if entry_descriptor:
print "Circuit %s starts with %s" % (circ.id, entry_descriptor.address)
else:
print "Unable to determine the address belonging to circuit %s" % circ.id
tor_process.kill()
我得到一个错误:
Traceback (most recent call last):
File "circuit.py", line 22, in <module>
with Controller.from_port() as controller:
File "/usr/local/lib/python2.7/dist-packages/stem/control.py", line 1024, in from_port
control_port = stem.connection._connection_for_default_port(address)
File "/usr/local/lib/python2.7/dist-packages/stem/connection.py", line 1058, in _connection_for_default_port
raise exc
stem.SocketError: [Errno 111] Connection refused
这通常是我在没有单独启动的情况下尝试做事时遇到的错误 tor
。
有没有办法结合这两个操作?
编辑:有,我忘了我设置 ControlPort
在下面回答了我的问题。
答案很简单,我忘了我在config
设置了端口,我设置了ControlPort : 2778
,但是打开了Contoller.from_port()
,它使用默认端口9051。
使用 Controller.from_port(port = 2778)
解决了问题。