import asyncio
from hypertor import Socks5Proxy, HypertorError
async def main():
print("=" * 60)
print(" hypertor SOCKS5 Proxy")
print("=" * 60)
print()
print("Starting SOCKS5 proxy on 127.0.0.1:9050...")
print("This may take 30-60 seconds while connecting to Tor...")
print()
try:
proxy = Socks5Proxy()
print("✓ Proxy started!")
print()
print("Test with:")
print(" curl --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/api/ip")
print()
print("Or in Python:")
print(" import requests")
print(" proxies = {'https': 'socks5h://127.0.0.1:9050'}")
print(" requests.get('https://check.torproject.org/api/ip', proxies=proxies)")
print()
print("Press Ctrl+C to stop")
print("-" * 60)
await proxy.run()
except HypertorError as e:
print(f"✗ Failed to start proxy: {e}")
return
except KeyboardInterrupt:
print("\n\nProxy stopped.")
async def custom_config_example():
from hypertor import Socks5Proxy, ProxyConfig
config = ProxyConfig(
host="127.0.0.1",
port=1080, isolation_by_auth=True, )
proxy = Socks5Proxy(config=config)
print("Custom SOCKS5 proxy on 127.0.0.1:1080")
print("With authentication-based isolation enabled")
await proxy.run()
async def multi_identity_proxies():
from hypertor import Socks5Proxy, ProxyConfig
proxy1_config = ProxyConfig(host="127.0.0.1", port=9051)
proxy2_config = ProxyConfig(host="127.0.0.1", port=9052)
proxy1 = Socks5Proxy(config=proxy1_config)
proxy2 = Socks5Proxy(config=proxy2_config)
print("Multi-identity SOCKS5 proxies:")
print(" - Identity A: 127.0.0.1:9051")
print(" - Identity B: 127.0.0.1:9052")
print()
print("Each proxy uses a separate Tor circuit!")
await asyncio.gather(
proxy1.run(),
proxy2.run()
)
if __name__ == "__main__":
asyncio.run(main())