You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.6 KiB
Python

#!/usr/bin/env python3
# panxy, a random proxy connector
from urllib import request, error
import socket
import sys
target = "http://theresno.cloud/ip"
prx_api = "http://pubproxy.com/api/proxy?limit=10&http=true&format=txt"
def get_list():
5 years ago
print('Requesting proxy list...')
result = request.urlopen(prx_api)
5 years ago
prx_list = result.read().decode().split('\n')
print('Got {} proxies.'.format(len(prx_list)))
return prx_list
def test_proxy(prx):
5 years ago
srv_string = "Testing proxy " + prx + "... "
print(srv_string, end='\r')
proxy_handler = request.ProxyHandler({'https': 'http://' + prx + '/', 'http': 'http://' + prx + '/' })
opener = request.build_opener(proxy_handler)
try:
result = opener.open(target, timeout=5)
content = result.read().decode()
print(srv_string + 'ok. \u2705')
5 years ago
return True
except error.HTTPError:
print(srv_string + 'fail. \u274c')
5 years ago
return False
#except RemoteDisconnected:
# print('fail.')
except error.URLError:
print(srv_string + 'down! \u2935')
5 years ago
return False
#except error.RemoteDisconnected:
# print(srv_string + 'connection fail!')
# return False
except socket.timeout:
print(srv_string + 'timeout! \u23f3')
return False
def main():
5 years ago
proxy_list = get_list()
5 years ago
working_list = []
start_length = len(proxy_list)
for entry in proxy_list:
5 years ago
if test_proxy(entry):
working_list.append(entry)
else:
pass
print('{}/{} proxies ready.'.format(len(working_list), start_length))
if __name__ == '__main__':
main()