Tor 无法 运行 无法绑定其中一个侦听器端口
Tor failing to run with Failed to bind one of the listener ports
当我 运行 来自 stem 文档的 [example][1] 时,我得到错误:
OSError: Process terminated: Failed to bind one of the listener ports.
我是 运行ning 的确切代码如下:
import socks
import socket
import stem.process
import urllib
from stem.util import term
SOCKS_PORT = 7000
# Set socks proxy and wrap the urllib module
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
def query(url):
return urllib.urlopen(url).read()
def print_bootstrap_lines(line):
if "Bootstrapped " in line:
print(term.format(line, term.Color.BLUE))
print(term.format("Starting Tor:\n", term.Attr.BOLD))
tor_process = stem.process.launch_tor_with_config(
config = {
'SocksPort': str(SOCKS_PORT),
'ExitNodes': '{ru}',
},
init_msg_handler = print_bootstrap_lines,
)
print(term.format("\nChecking our endpoint:\n", term.Attr.BOLD))
print(term.format(query("https://www.atagar.com/echo.php"), term.Color.BLUE))
print(query(""))
tor_process.kill()
我看到答案说在端口 9050 上还有另一个进程 运行ning,但是 运行在终端中执行命令 sudo netstat -anl | grep 9050
没有结果。
请随时提出任何可能有帮助的建议。
此外,"to russia with love" 上的第一个示例完美运行。
感谢您提供的任何帮助。
检查器已安装
sudo apt install tor
检查这个
sudo gedit /etc/default/tor
在那里找到 "yes" 并将其替换为 "no"
RUN_DAEMON="yes"
停止守护进程
sudo /etc/init.d/tor stop
在 Linux Mint 上工作 运行。
能够通过长时间休眠/暂停来解决问题。
import time
time.sleep(1000) #usually sleep it over 10 minutes for my case
从我抓取的内容来看,它需要睡眠,所以它很完美,但我当然可以看到它在其他情况下没有帮助。
因为您正在使用 SOCKS_PORT 作为 7000,请使用以下命令查找使用它的进程。
sudo netstat -plnt | grep 7000
如果你得到类似这样的输出(见末尾的 tor),
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 13009/tor
使用sudo killall tor
终止tor进程。
不推荐使用 "sudo" 和进程名称 ("tor") 来终止命令。相反,您应该使用 kill pid
命令,其中 pid 是上述输出中出现的进程 ID (13009)。
我在使用 'threading' 包时遇到了这个问题,这是我的解决方案,可能对流浪者有用。
我使用了最佳答案提供的解决方案
并且还这样做了:
for thread in threads_list:
time.sleep(0.1)
thread.run()
当我 运行 来自 stem 文档的 [example][1] 时,我得到错误:
OSError: Process terminated: Failed to bind one of the listener ports.
我是 运行ning 的确切代码如下:
import socks
import socket
import stem.process
import urllib
from stem.util import term
SOCKS_PORT = 7000
# Set socks proxy and wrap the urllib module
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
def query(url):
return urllib.urlopen(url).read()
def print_bootstrap_lines(line):
if "Bootstrapped " in line:
print(term.format(line, term.Color.BLUE))
print(term.format("Starting Tor:\n", term.Attr.BOLD))
tor_process = stem.process.launch_tor_with_config(
config = {
'SocksPort': str(SOCKS_PORT),
'ExitNodes': '{ru}',
},
init_msg_handler = print_bootstrap_lines,
)
print(term.format("\nChecking our endpoint:\n", term.Attr.BOLD))
print(term.format(query("https://www.atagar.com/echo.php"), term.Color.BLUE))
print(query(""))
tor_process.kill()
我看到答案说在端口 9050 上还有另一个进程 运行ning,但是 运行在终端中执行命令 sudo netstat -anl | grep 9050
没有结果。
请随时提出任何可能有帮助的建议。
此外,"to russia with love" 上的第一个示例完美运行。
感谢您提供的任何帮助。
检查器已安装
sudo apt install tor
检查这个
sudo gedit /etc/default/tor
在那里找到 "yes" 并将其替换为 "no"
RUN_DAEMON="yes"
停止守护进程
sudo /etc/init.d/tor stop
在 Linux Mint 上工作 运行。
能够通过长时间休眠/暂停来解决问题。
import time
time.sleep(1000) #usually sleep it over 10 minutes for my case
从我抓取的内容来看,它需要睡眠,所以它很完美,但我当然可以看到它在其他情况下没有帮助。
因为您正在使用 SOCKS_PORT 作为 7000,请使用以下命令查找使用它的进程。
sudo netstat -plnt | grep 7000
如果你得到类似这样的输出(见末尾的 tor),
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 13009/tor
使用sudo killall tor
终止tor进程。
不推荐使用 "sudo" 和进程名称 ("tor") 来终止命令。相反,您应该使用 kill pid
命令,其中 pid 是上述输出中出现的进程 ID (13009)。
我在使用 'threading' 包时遇到了这个问题,这是我的解决方案,可能对流浪者有用。
我使用了最佳答案提供的解决方案 并且还这样做了:
for thread in threads_list:
time.sleep(0.1)
thread.run()