Search This Blog

sc/autochange ip.py

Contoh Teks yang Mudah Disalin



import time
import requests
import threading
from stem import Signal
from stem.control import Controller
from fake_useragent import UserAgent

TOR_SOCKS_PROXY = 'socks5h://127.0.0.1:9050'
TOR_CONTROL_PORT = 9051
CONTROL_PASSWORD = None  # Isi jika pakai password
LOG_FILE = 'log.txt'
URLS_FILE = 'urls.txt'  # File berisi daftar URL, satu URL per baris

def log(message):
    print(message)
    with open(LOG_FILE, 'a', encoding='utf-8') as f:
        f.write(message + '\n')

def change_tor_ip():
    with Controller.from_port(port=TOR_CONTROL_PORT) as controller:
        if CONTROL_PASSWORD:
            controller.authenticate(password=CONTROL_PASSWORD)
        else:
            controller.authenticate()
        controller.signal(Signal.NEWNYM)
        log("[*] Tor IP changed (NEWNYM signal sent)")

def get_current_ip(user_agent):
    headers = {'User-Agent': user_agent}
    proxies = {
        'http': TOR_SOCKS_PROXY,
        'https': TOR_SOCKS_PROXY
    }
    try:
        response = requests.get('https://api.ipify.org', proxies=proxies, headers=headers, timeout=10)
        return response.text.strip()
    except requests.RequestException as e:
        log(f"[!] Error getting IP: {e}")
        return None

def open_url(url, user_agent):
    headers = {'User-Agent': user_agent}
    proxies = {
        'http': TOR_SOCKS_PROXY,
        'https': TOR_SOCKS_PROXY
    }
    try:
        response = requests.get(url, proxies=proxies, headers=headers, timeout=15)
        log(f"[+] Opened URL: {url}")
        log(f"[+] Status code: {response.status_code}")
        content_preview = response.text[:500].replace('\n', ' ').replace('\r', ' ')
        log(f"[+] Content preview (first 500 chars): {content_preview}")
    except requests.RequestException as e:
        log(f"[!] Error membuka URL {url}: {e}")

def load_urls(filename):
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            urls = [line.strip() for line in f if line.strip()]
        return urls
    except FileNotFoundError:
        log(f"[!] File {filename} tidak ditemukan.")
        return []

def open_all_urls_concurrently(urls, user_agent):
    threads = []
    for url in urls:
        t = threading.Thread(target=open_url, args=(url, user_agent))
        t.start()
        threads.append(t)
    for t in threads:
        t.join()  # Tunggu semua thread selesai

def main():
    ua = UserAgent()
    log("[*] Starting auto IP changer with Tor and concurrent URL opener...")
    urls = load_urls(URLS_FILE)
    if not urls:
        log("[!] Daftar URL kosong. Silakan isi file urls.txt dengan URL yang ingin dibuka, satu per baris.")
        return

    while True:
        user_agent = ua.random
        change_tor_ip()
        time.sleep(10)  # Delay agar circuit Tor berganti
        ip = get_current_ip(user_agent)
        if ip:
            log(f"[+] Current IP: {ip}")
            log(f"[+] Using User-Agent: {user_agent}")
            open_all_urls_concurrently(urls, user_agent)
        else:
            log("[!] Gagal mendapatkan IP melalui Tor")
        log("-" * 80)
        time.sleep(10)  # Delay sebelum ganti IP dan buka URL berikutnya

if __name__ == "__main__":
    main()


        

【14-15LixS+SuperVPN】 [53FB9B4719295EA27D1A3608CF07F5A29397E4C09A6BB99D37BAA2912AFB1F7441F8EDAAE983866EA694BEFB6687F63DD3E3184C082EE8F5D5B03A...