#!/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(): print('Requesting proxy list...') result = request.urlopen(prx_api) prx_list = result.read().decode().split('\n') print('Got {} proxies.'.format(len(prx_list))) return prx_list def test_proxy(prx): 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') return True except error.HTTPError: print(srv_string + 'fail. \u274c') return False #except RemoteDisconnected: # print('fail.') except error.URLError: print(srv_string + 'down! \u2935') return False #except error.RemoteDisconnected: # print(srv_string + 'connection fail!') # return False except socket.timeout: print(srv_string + 'timeout! \u23f3') return False def main(): proxy_list = get_list() working_list = [] start_length = len(proxy_list) for entry in proxy_list: if test_proxy(entry): working_list.append(entry) else: pass print('{}/{} proxies ready.'.format(len(working_list), start_length)) if __name__ == '__main__': main()