diff --git a/proxy.py b/proxy.py new file mode 100644 index 0000000..c9aa81f --- /dev/null +++ b/proxy.py @@ -0,0 +1,59 @@ +import socket +import urllib.request +import ssl +from concurrent.futures import ThreadPoolExecutor + +# Désactive vérification SSL pour éviter les erreurs sur certains proxies +ssl._create_default_https_context = ssl._create_unverified_context + +ports_to_scan = [8080, 3128, 8000, 8888] # ports classiques de proxy +timeout_socket = 0.5 # timeout pour tester si le port est ouvert +timeout_http = 1 # timeout pour tester YouTube via le proxy +test_url = "https://www.youtube.com/" + +def test_proxy(ip, port): + proxy = f"{ip}:{port}" + proxy_handler = urllib.request.ProxyHandler({ + "http": f"http://{proxy}", + "https": f"http://{proxy}" + }) + opener = urllib.request.build_opener(proxy_handler) + urllib.request.install_opener(opener) + try: + with urllib.request.urlopen(test_url, timeout=timeout_http) as response: + if response.status == 200: + print(f"[OK] Proxy fonctionnel : {proxy}") + return proxy + except: + pass + return None + +def scan_ip(ip): + print(f"[SCAN] Test de l'IP : {ip}") # console log pour chaque IP + for port in ports_to_scan: + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout_socket) + result = sock.connect_ex((ip, port)) + sock.close() + if result == 0: + # Port ouvert, test YouTube + proxy = test_proxy(ip, port) + if proxy: + return proxy + except: + continue + return None + +if __name__ == "__main__": + valid_proxies = [] + with ThreadPoolExecutor(max_workers=100) as executor: + futures = [executor.submit(scan_ip, f"10.24.{i}.{j}") for i in range(0, 256) for j in range(1, 255)] + for future in futures: + proxy = future.result() + if proxy: + valid_proxies.append(proxy) + + print("\nProxies valides trouvés :") + for p in valid_proxies: + print(p)