scrapy 解决SSL的方法

Created
Jan 31, 2024 08:56 AM
Tags
 
 
处理中间件 直接扩展一下这个就行
 
import random from scrapy.core.downloader.contextfactory import ScrapyClientContextFactory from scrapy.core.downloader.handlers.http11 import HTTP11DownloadHandler as HTTPDownloadHandler ''' ORIGIN_CIPHERS这个指纹的加密方式各有不同,下面两种测试较多,不行的话切换一个试试 ''' # ORIGIN_CIPHERS ='TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES' ORIGIN_CIPHERS = 'DH+AES:RSA+AES' def shuffle_ciphers(): ciphers = ORIGIN_CIPHERS.split(":") random.shuffle(ciphers) ciphers = ":".join(ciphers) return ciphers + ":!aNULL:!MD5:!DSS" class SSLDownloadHandler(HTTPDownloadHandler): def download_request(self, request, spider): tls_cliphers = shuffle_ciphers() self._contextFactory = ScrapyClientContextFactory(tls_ciphers=tls_cliphers) return super().download_request(request, spider)