File size: 3,010 Bytes
81d22d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Imports
import requests
import random
import time
from tabulate import tabulate

# A list of websites to test the proxies with
websites = ["https://icanhazip.com", "https://eset.com"]

# A flag to indicate if a working proxy is found
found = False

# A list to store the results for printing
results = []

# Socks5 Proxy Source
myUrl = "https://raw.githubusercontent.com/sunny9577/proxy-scraper/master/generated/socks5_proxies.txt"

# A function to test a proxy with a given website and return the response code and latency
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

# A function to save a working proxy to a file
def save_proxy(proxy):
    with open("PROXY.txt", "w") as f:
        f.write(proxy)

# Try to read the working proxy from the file if it exists
try:
    with open("PROXY.txt", "r") as f:
        proxy = f.read().strip()
        print(f"\nTesting last known proxy {proxy} ...")
        # Test the proxy with each website and store the results
        for website in websites:
            code, latency = test_proxy(proxy, website)
            results.append([proxy, website, code, latency])
        # Check if the proxy works for all websites
        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("No PROXY.txt file found")
    print("")

# If no working proxy is found from the file, try to get one from the url
if not found:
    # Get the list of socks5 proxies from the url
    url = myUrl
    response = requests.get(url)
    proxies = response.text.splitlines()

    # Shuffle the proxies to pick a random one
    random.shuffle(proxies)

    # Loop through the proxies until a working one is found or the list is exhausted
    for proxy in proxies:
        print(f"\nTesting {proxy} please wait ...")
        # Test the proxy with each website and store the results
        results = []
        for website in websites:
            code, latency = test_proxy(proxy, website)
            results.append([proxy, website, code, latency])
        # Check if the proxy works for all websites
        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 a working proxy is found, print the results in a table format
if found:
    headers = ["PROXY", "WEBSITE", "RESPONSE CODE", "LATENCY IN SEC"]
    print(tabulate(results, headers=headers, tablefmt="pretty"))
else:
    print("No working proxy found")