38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import requests
|
|
import yaml
|
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
|
|
config = yaml.full_load(open("config.yaml").read())
|
|
|
|
def check_proxy(ip, port, exit_ip, proxy_type, comment, p_id):
|
|
base_results = {
|
|
"id": p_id,
|
|
"status": "inactive",
|
|
"entry_ip": ip,
|
|
"exit_ip": exit_ip,
|
|
"proxy_type": proxy_type,
|
|
"port": port,
|
|
"comment": comment,
|
|
}
|
|
|
|
try:
|
|
requests.get(f"https://{ip}:{port}", timeout=config["proxy_timeout"])
|
|
except requests.exceptions.SSLError as e:
|
|
if "opengw.net" in str(e):
|
|
base_results["status"] = "active"
|
|
finally:
|
|
return base_results
|
|
|
|
proxy_results = []
|
|
amount = config["proxy_amount"]
|
|
r = requests.get(f"{config['get_proxies_url']}?amount={amount}&proxy_type=vpngate&timedelta={config['timedelta']}&max_num_failures={config['max_num_failures']}")
|
|
current_proxies = r.json()
|
|
all_threads = {}
|
|
with ThreadPoolExecutor(max_workers=config["proxy_threads"]) as executor:
|
|
for proxy in current_proxies["proxies"]:
|
|
all_threads[executor.submit(check_proxy, proxy["ip"], proxy["port"], proxy["exit_ip"], proxy["proxy_type"], proxy["comment"], proxy["id"])] = proxy["id"]
|
|
for future in as_completed(all_threads):
|
|
proxy_results.append(future.result(timeout=30))
|
|
|
|
data = {"proxies": proxy_results}
|
|
submit = requests.post(config["update_proxies_url"], json=data) |