openproxyherder/scripts/checkers/vpngate.py

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)