warp / app.py
arifardev's picture
Update app.py
f4a6240 verified
Raw
History Blame Contribute Delete
4.53 kB
import gradio as gr
import subprocess
import os
import time
import requests
def uji_warp_via_rotator(tipe_proxy, host, port, user, password):
log = []
log.append("==========================================")
log.append(f"[*] MEMULAI EKSPERIMEN: WARP -> ROTATOR {host}")
log.append("==========================================")
# 1. Bersihkan file lama
for f in ["proxychains.conf", "wgcf-account.toml", "wgcf-profile.conf", "wireproxy.conf"]:
if os.path.exists(f):
os.remove(f)
# 2. Merakit proxychains.conf dengan proxy Dataheaven Anda
tipe = "socks5" if tipe_proxy == "SOCKS5" else "http"
auth = f"{user} {password}" if user and password else ""
conf_str = f"""strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
{tipe} {host} {port} {auth}
"""
with open("proxychains.conf", "w") as f:
f.write(conf_str)
log.append(f"[*] Proxychains Siap! Jalur: VPS HF -> {tipe.upper()} {host}:{port} -> Cloudflare")
# 3. Mendaftar ke Cloudflare
log.append("[*] Meminta konfigurasi WARP ke Cloudflare...")
subprocess.run(["wgcf", "register", "--accept-tos"], capture_output=True)
subprocess.run(["wgcf", "generate"], capture_output=True)
if not os.path.exists("wgcf-profile.conf"):
log.append("[-] GAGAL: Terkena Rate Limit Cloudflare (Atau Rotator gagal tembus).")
return "\n".join(log)
# 4. Set local port untuk bot Python
with open("wgcf-profile.conf", "r") as f:
warp_conf = f.read()
with open("wireproxy.conf", "w") as f:
f.write(warp_conf)
f.write("\n[Socks5]\nBindAddress = 127.0.0.1:10888\n")
# 5. MENJALANKAN EKSPERIMEN
log.append("[*] Mengeksekusi WARP (UDP) dibungkus menembus Rotator Dataheaven...")
process = subprocess.Popen(
["proxychains4", "-f", "proxychains.conf", "wireproxy", "-c", "wireproxy.conf"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
log.append("[*] Menunggu 15 detik agar terowongan Handshake terbentuk...")
time.sleep(15)
# 6. Test Koneksi Bot
log.append("[*] Bot Python mencoba menembus koneksi...")
proxies = {
"http": "socks5://127.0.0.1:10888",
"https": "socks5://127.0.0.1:10888"
}
try:
# Tembak IP Checker
res = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=15)
log.append("\n[+++] HASIL EKSPERIMEN: BERHASIL SANGAT SEMPURNA! [+++]")
log.append(f" IP Keluar Anda: {res.json()['ip']}")
log.append(" Teori Anda terbukti bisa diimplementasikan!")
except Exception as e:
log.append("\n[---] HASIL EKSPERIMEN: GAGAL / TIMEOUT [---]")
log.append(f" Error Bot: {str(e)}")
log.append("\n[!] KESIMPULAN TEKNIS:")
log.append(" Ini membuktikan bahwa Rotator Proxy Dataheaven memblokir/mengabaikan")
log.append(" paket UDP yang dibutuhkan oleh protokol WireGuard Cloudflare.")
# Ambil log asli dari terminal proxychains
process.terminate()
out, err = process.communicate()
log.append("\n--- Log Asli Terminal Proxychains ---")
log.append(err[-600:] if err else "Tidak ada output error spesifik dari proxychains.")
if process.poll() is None:
process.terminate()
return "\n".join(log)
with gr.Blocks(title="Lab Uji Coba: WARP via Rotator") as demo:
gr.Markdown("# 🧪 Lab Uji Coba: WARP via Proxy Dataheaven")
gr.Markdown("Kredensial sudah terisi otomatis. Langsung klik eksekusi untuk membuktikan!")
with gr.Row():
tipe = gr.Radio(["SOCKS5", "HTTP"], label="Tipe Proxy", value="SOCKS5")
host = gr.Textbox(label="IP / Host Rotator", value="edge1-us.dataheaven.ai")
port = gr.Textbox(label="Port Rotator", value="8888")
with gr.Row():
user = gr.Textbox(label="Username Proxy", value="oy9jb-id")
pwd = gr.Textbox(label="Password Proxy", value="e8ij1r8u", type="password")
btn = gr.Button("🚀 Eksekusi Uji Coba Sekarang!", variant="primary")
layar_log = gr.Textbox(label="Terminal Hasil Eksperimen", lines=25)
# PERBAIKAN: Menambahkan api_name=False agar Gradio tidak mengirim array kosong
btn.click(
fn=uji_warp_via_rotator,
inputs=[tipe, host, port, user, pwd],
outputs=layar_log,
api_name=False
)
demo.launch(server_name="0.0.0.0", server_port=7860)