我试图找出防火墙阻止了哪些域。假设站点包含大约 200 万个域。
ThreadPoolExecutor 是最快的方法还是有更快的方法?
谢谢
import socket
import ssl
from concurrent.futures import ThreadPoolExecutor
context = ssl.create_default_context()
socket.setdefaulttimeout(1)
sites = ['abc.com','def.com','geh.com']
def tls_check(domain):
try:
conn = ssl.create_connection(('1.1.1.1', 443))
except socket.timeout:
print(domain + "timed out")
return
except:
return
try:
context.wrap_socket(conn, server_hostname=domain)
conn.close()
except ConnectionResetError:
cx = open("blockedsites.txt", "a")
cx.write("\n" + domain)
cx.close()
conn.close()
return
except:
return
with ThreadPoolExecutor(max_workers=20) as pool:
pool.map(tls_check, sites)