如何使用代理在python中获取站点的ssl证书



我需要获得不同站点的ssl证书的详细信息,并且我需要使用代理。我发现了类似的问题:如何使用python获取ssl证书的详细信息,但它们都使用了套接字,而套接字不能为代理操作提供简单的接口。是否有一个更高级的库,允许我使用代理,或者可能是一些关于如何使用带代理的套接字的教程,适用于我的情况?

python_socks库做到了。使用它的完整代码:

import ssl
from python_socks.sync import Proxy
from datetime import datetime

def get_cert_expiry_date_with_proxy(hostname, proxy):
ssl_dateformat = r"%b %d %H:%M:%S %Y %Z"
proxy = Proxy.from_url(proxy.replace("https://", "http://"))
sock = proxy.connect(dest_host=hostname, dest_port=443)
context = ssl.create_default_context()
context.check_hostname = False
sock = context.wrap_socket(sock, server_hostname=hostname)
request = f"GET /ip HTTP/1.1rnHost: {hostname}rnConnection: closernrn".encode("utf-8")
sock.sendall(request)
ssl_info = sock.getpeercert()
return datetime.strptime(ssl_info["notAfter"], ssl_dateformat).date()

最新更新