@implementer(IPolicyForHTTPS)
class FutusContext(ContextFactory):
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.contextFactory = ScrapyClientContextFactory(method=self.METHODS['TLSv1.1'], tls_ciphers='AES256-SHA256,AES128-SHA256,AES128-SHA,DES-CBC3-SHA,RC4-SHA,RC4-MD5,@SECLEVEL=0')
self.combinations = list(product(self.spider.custom_settings.get('CUSTOM_TLS', []),
self.spider.custom_settings.get('CUSTOM_CIPHER', [])))
self.test = 1
def getCertificateOptions(self):
if self.spider.count > 5:
next_comb = self.combinations.pop(0)
self.spider.count = 0
method = self.METHODS[next_comb[0]]
ciphers = next_comb[1]
self.contextFactory = ScrapyClientContextFactory(method=method, tls_ciphers=ciphers)
return self.contextFactory.getCertificateOptions()
def getContext(self, hostname=None, port=None):
return self.getCertificateOptions().getContext()
def creatorForNetloc(self, hostname, port):
return ScrapyClientTLSOptions(hostname.decode("ascii"), self.getContext())
def fill_youself(owner):
""" The func returns a list of notes """
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1',8888))
title = "hash.get_all.%s"%owner #get_all
sock.sendall(title.encode('utf-8'))
if sock.recv(1024).decode() == "Success":
#owner
sock.sendall(owner.encode('utf-8'))
#get array
notes = []
for _ in range(int(sock.recv(512).decode())):
size = sock.recv(1024).decode()
if not size: break
note = sock.recv(int(size))
notes.append(json.loads(note))
# print(notes)
sock.close()
return notes
else:
sock.close()
return False
data = conn.recv(1024).decode()
elif data.split('.')[1] == "get_all": # Get all notes
# Send size
owner = conn.recv(1024).decode() # Владелец
notes = find_all(owner) # список всех записок для владельца
conn.send(str(len(notes)).encode('utf-8'))
for note in notes:
note['_id'] = str(note['_id'])
j_note = json.dumps(note)
print(j_note)
conn.send(str(sys.getsizeof(j_note)).encode('utf-8'))
conn.send(j_note.encode('utf-8'))
И как работает передача шифров через запятую в DOWNLOADER_CLIENT_TLS_CIPHERS
Наблюдал ситуацию: 4 шифра в строке через запятую
Получаю ошибки
Удалил первые два - получил ответ, удалил последний - ответ есть
По моим наблюдениям передача через запятую нескольких комбинаций не работает, но документация скрапи говорит об обратном