|
|
|
import requests |
|
import random |
|
import time |
|
from tabulate import tabulate |
|
|
|
|
|
websites = ["https://icanhazip.com", "https://eset.com"] |
|
|
|
|
|
found = False |
|
|
|
|
|
results = [] |
|
|
|
|
|
myUrl = "https://raw.githubusercontent.com/sunny9577/proxy-scraper/master/generated/socks5_proxies.txt" |
|
|
|
|
|
def test_proxy(proxy, website): |
|
try: |
|
start = time.time() |
|
response = requests.get(website, proxies={"http": "socks5://" + proxy, "https": "socks5://" + proxy}, timeout=5) |
|
end = time.time() |
|
return response.status_code, end - start |
|
except: |
|
return None, None |
|
|
|
|
|
def save_proxy(proxy): |
|
with open("PROXY.txt", "w") as f: |
|
f.write(proxy) |
|
|
|
|
|
try: |
|
with open("PROXY.txt", "r") as f: |
|
proxy = f.read().strip() |
|
print(f"\nTesting last known proxy {proxy} ...") |
|
|
|
for website in websites: |
|
code, latency = test_proxy(proxy, website) |
|
results.append([proxy, website, code, latency]) |
|
|
|
if all(code == 200 for proxy, website, code, latency in results): |
|
print(f"Found a working proxy: {proxy}") |
|
found = True |
|
else: |
|
print(f"Proxy {proxy} does not work for all websites") |
|
except FileNotFoundError: |
|
|
|
print("") |
|
|
|
|
|
if not found: |
|
|
|
url = myUrl |
|
response = requests.get(url) |
|
proxies = response.text.splitlines() |
|
|
|
|
|
random.shuffle(proxies) |
|
|
|
|
|
for proxy in proxies: |
|
print(f"\nTesting {proxy} please wait ...") |
|
|
|
results = [] |
|
for website in websites: |
|
code, latency = test_proxy(proxy, website) |
|
results.append([proxy, website, code, latency]) |
|
|
|
if all(code == 200 for proxy, website, code, latency in results): |
|
print(f"Found a working proxy: {proxy}") |
|
save_proxy(proxy) |
|
found = True |
|
break |
|
else: |
|
print(f"Proxy {proxy} is not working ...") |
|
|
|
|
|
if found: |
|
headers = ["PROXY", "WEBSITE", "RESPONSE CODE", "LATENCY IN SEC"] |
|
print(tabulate(results, headers=headers, tablefmt="pretty")) |
|
else: |
|
print("No working proxy found") |
|
|