|
from flask import Flask, request, jsonify |
|
import requests |
|
import threading |
|
import time |
|
|
|
app = Flask(__name__) |
|
|
|
def test_proxy(proxy): |
|
try: |
|
start_time = time.time() |
|
response = requests.get('http://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=5) |
|
end_time = time.time() |
|
return { |
|
'proxy': proxy, |
|
'working': response.status_code == 200, |
|
'time': round((end_time - start_time) * 1000, 2) |
|
} |
|
except: |
|
return { |
|
'proxy': proxy, |
|
'working': False, |
|
'time': None |
|
} |
|
|
|
def test_proxies_threaded(proxies): |
|
results = [] |
|
threads = [] |
|
|
|
def worker(proxy): |
|
result = test_proxy(proxy) |
|
results.append(result) |
|
|
|
for proxy in proxies: |
|
thread = threading.Thread(target=worker, args=(proxy,)) |
|
threads.append(thread) |
|
thread.start() |
|
|
|
for thread in threads: |
|
thread.join() |
|
|
|
return results |
|
|
|
@app.route('/test-proxies', methods=['POST']) |
|
def test_proxies(): |
|
data = request.json |
|
proxies = data.get('proxies', []) |
|
|
|
if not proxies: |
|
return jsonify({'error': 'No proxies provided'}), 400 |
|
|
|
results = test_proxies_threaded(proxies) |
|
return jsonify(results) |
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True) |
|
|