"""自定义TLS上下文 - 兼容各种老旧政府网站SSL证书"""

from scrapy.core.downloader.contextfactory import ScrapyClientContextFactory
from twisted.internet.ssl import optionsForClientTLS
import ssl


class CustomTLSContext(ScrapyClientContextFactory):
    """宽松的TLS配置，兼容自签名和过期证书"""

    def __init__(self, method=ssl.PROTOCOL_TLS_CLIENT):
        super().__init__(method=method)

    def creatorForNetloc(self, hostname, port):
        return optionsForClientTLS(
            hostname.decode('utf-8') if isinstance(hostname, bytes) else hostname,
            trustRoot=None,  # 不验证证书链（接受自签名）
        )
