| |
| 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") |
|
|