如何解决如何使用下一个逻辑使 CustomContextFactory Scrapy?
我正在尝试制作 ContextFactory,它会在服务器通过 403 错误时更改 TLS 和 CIPHERS 我虽然它会工作。但不是
我将蜘蛛传递给上下文,当它得到一些不好的响应时,TLS 设置会发生变化。为什么它不起作用?
@implementer(IPolicyForHTTPS)
class FutusContext(ClientContextFactory):
METHODS = {
'SSLv2': 1,'SSLv3': 2,'SSLv23': 3,'TLSv1': 4,'TLSv1.1': 5,'TLSv1.2': 6,}
def __init__(self,method=SSL.TLSv1_1_METHOD,*args,**kwargs):
self.spider = kwargs.pop('spider')
super().__init__(*args,**kwargs)
self._ssl_method = method
self.tls_ciphers = AcceptableCiphers.fromOpenSSLCipherString(self.CIPHERS)
self.combinations = list(product(self.spider.custom_settings.get('CUSTOM_TLS',[]),self.spider.custom_settings.get('CUSTOM_CIPHER',[])))
def getCertificateOptions(self):
method = getattr(self,'method',getattr(self,'_ssl_method',None))
if self.spider.count > 3:
next_comb = self.combinations.pop(0)
self.spider.count = 0
self._ssl_method = self.METHODS[next_comb[0]]
self.tls_ciphers = AcceptableCiphers.fromOpenSSLCipherString(next_comb[1])
return CertificateOptions(
verify=False,method=getattr(self,None)),fixBrokenPeers=True,acceptableCiphers=self.tls_ciphers,)
def getContext(self,hostname=None,port=None):
return self.getCertificateOptions().getContext()
def creatorForNetloc(self,hostname,port):
return ScrapyClientTLSOptions(hostname.decode("ascii"),self.getContext())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。