Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
xtor — 用于编程管理Tor实例的Python库,支持SOCKS5代理、身份轮换、流隔离、隐藏服务、电路控制以及异步HTTP客户端。 | Kitploit
工具/GitHubGitHub/khalidelborai/xtor
脚本与自动化网络安全隐私保护实用工具与框架网络爬虫
GitHubkhalidelborai/xtor

xtor

用于编程管理Tor实例的Python库,支持SOCKS5代理、身份轮换、流隔离、隐藏服务、电路控制以及异步HTTP客户端。

查看仓库
116个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

xtor

用于以编程方式管理 Tor 实例的 Python 库。

PyPI version Python 3.10+ License: GPL-3.0-or-later CI

特性

  • 启动新的 Tor 进程或连接到现有进程
  • 预配置的 httpx 客户端(同步 + 异步),使用 SOCKS5 代理
  • 身份轮换,可选等待新 IP
  • 流隔离,用于流量分离
  • 电路和流管理
  • 出口节点信息(国家、带宽、标志)
  • 临时隐藏服务(.onion)
  • 事件监听器(电路、流、带宽事件)
  • TorPool,用于管理多个实例,支持轮询和随机选择
  • 命名实例,可通过 CLI 管理
  • 自定义异常层次结构,实现精确的错误处理

安装

先决条件

Linux(Debian/Ubuntu):

root@kitploit:~
sudo apt-get install tor obfs4proxy

Windows:

从 torproject.org 下载 Tor Expert Bundle。

Python 包

root@kitploit:~
pip install xtor
# 或
uv add xtor

快速开始

root@kitploit:~
from xtor import Tor

with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    print(f"Connected through IP: {tor.ip}")
    resp = tor.client.get("https://api.ipify.org")
    print(resp.text)

用法

启动新 Tor 进程

root@kitploit:~
from xtor import Tor
from xtor.exceptions import TorNotFoundError, PortInUseError

try:
    with Tor.start(port=9052, control_port=9053, host="127.0.0.1", password="mypass") as tor:
        print(tor.ip)
        resp = tor.client.get("https://api.ipify.org")
        print(resp.text)
except TorNotFoundError:
    print("Tor not found on PATH")
except PortInUseError as e:
    print(f"Port in use: {e}")

注意: 为了向后兼容,Tor.startTor() 可作为 Tor.start() 的别名使用。

连接到现有实例

root@kitploit:~
with Tor(password="mypass", port=9050, control_port=9051) as tor:
    print(tor.ip)

新身份

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    print(tor.ip)
    tor.new_identity(wait=True, timeout=30)
    print(tor.ip)  # 新 IP

异步客户端

root@kitploit:~
import asyncio
from xtor import Tor

async def main():
    with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
        async with tor.async_client as client:
            resp = await client.get("https://api.ipify.org")
            print(resp.text)

asyncio.run(main())

流隔离

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    # 每个键使用不同的电路
    client_a = tor.isolated_client("session-a")
    client_b = tor.isolated_client("session-b")
    # 通过 client_a 和 client_b 的请求使用不同的电路

电路管理

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    circuits = tor.get_circuits()
    for c in circuits:
        print(f"Circuit {c.id}: {c.status}, path: {c.path}")

    # 关闭特定电路
    tor.close_circuit(circuits[0].id)

出口节点信息

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    info = tor.exit_node
    if info:
        print(f"Exit: {info.nickname} ({info.country})")
        print(f"Flags: {info.flags}")

隐藏服务

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    service = tor.create_hidden_service({80: 8080})
    print(f"Service: {service.onion_address}")

    # 完成后移除
    tor.remove_hidden_service(service)

事件监听器

root@kitploit:~
with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
    def on_bandwidth(event):
        print(f"Read: {event.read}, Written: {event.written}")

    tor.add_event_listener("BW", on_bandwidth)
    # ... 进行其他操作 ...
    tor.remove_event_listener(on_bandwidth)

TorPool

root@kitploit:~
from xtor import TorPool

with TorPool(size=3, base_port=9100, password="secret") as pool:
    # 轮询
    tor = pool.next()
    print(tor.client.get("https://api.ipify.org").text)

    # 轮换所有身份
    pool.rotate_all()

    # 随机选择
    tor = pool.random()

命名实例(Python)

root@kitploit:~
from xtor import Tor

# 启动命名实例
tor = Tor.start(port=9052, control_port=9053, host="127.0.0.1", name="my-tor")

# 稍后,通过名称重新连接
tor = Tor.from_name("my-tor")
with tor:
    print(tor.ip)

CLI 参考

xtor CLI 将命名 Tor 实例作为后台进程进行管理。

root@kitploit:~
# 启动一个命名实例
xtor start my-tor --port 9052 --control-port 9053

# 列出实例
xtor list

# 连接详情
xtor connect my-tor

# 停止实例
xtor stop my-tor

# 移除实例和数据
xtor remove my-tor

自定义异常

root@kitploit:~
XtorError (基类)
├── TorNotFoundError
├── PortInUseError
├── IdentityChangeTimeout
├── ConnectionError
└── AuthenticationError

全捕获模式:

root@kitploit:~
from xtor.exceptions import XtorError

try:
    with Tor.start(port=9052, control_port=9053, host="127.0.0.1") as tor:
        ...
except XtorError as e:
    print(f"xtor 错误: {e}")

许可证

GPL-3.0-or-later

下载工具