import requests import threading import shutil import concurrent.futures import random import hmac, hashlib import os headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} alph = "aA8b0B0cC1dDe2EfF3gGh4HiI5jKk6LlM7m1N6n8OoP9pQq6RrSsTt5Uu9Vv2WwVxX3y4YzZ" n = [] def gen(): g = random.choices(population=alph, k=7) return ("".join(g)) def down(url): r = requests.get(url, stream=True,headers=headers) if r.status_code == 200: with open("img/%s" %(url.split("/")[-1]) , 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f) if hmac.new(bytearray('signature','utf-8'), bytearray(r.text,'utf-8'), hashlib.sha256).hexdigest() == "4b227e6257f16f58a2ed40a91998ae943a5ea5cc7bbb08932293ca6f613ccd65": os.remove("img/%s" %(url.split("/")[-1])) else: print("Saved: %s" %url) n.append(1) if len(n) % 200 == 0: print("Used: %s"%len(n)) with concurrent.futures.ThreadPoolExecutor(max_workers=200) as executor: threads=[executor.submit(down,"https://i.imgur.com/%s.png"%gen()) for i in range(10000)] Код import requests import threading import shutil import concurrent.futures import random import hmac, hashlib import os headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} alph = "aA8b0B0cC1dDe2EfF3gGh4HiI5jKk6LlM7m1N6n8OoP9pQq6RrSsTt5Uu9Vv2WwVxX3y4YzZ" n = [] def gen(): g = random.choices(population=alph, k=7) return ("".join(g)) def down(url): r = requests.get(url, stream=True,headers=headers) if r.status_code == 200: with open("img/%s" %(url.split("/")[-1]) , 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f) if hmac.new(bytearray('signature','utf-8'), bytearray(r.text,'utf-8'), hashlib.sha256).hexdigest() == "4b227e6257f16f58a2ed40a91998ae943a5ea5cc7bbb08932293ca6f613ccd65": os.remove("img/%s" %(url.split("/")[-1])) else: print("Saved: %s" %url) n.append(1) if len(n) % 200 == 0: print("Used: %s"%len(n)) with concurrent.futures.ThreadPoolExecutor(max_workers=200) as executor: threads=[executor.submit(down,"https://i.imgur.com/%s.png"%gen()) for i in range(10000)] Небольшой пост, посвященный скраперу фоток, он генерирует ссылку на фото и если это фото было загружено пользователем, то оставляет его в папке img. Работает в 200 потоков (поменять max_workers, для каждого компьютера и интернета свой параметр) в последней строке "for i in range(10000)" вместо 10000 можна написать любое число генераций, ссылки. Кстати, еще написал такой-же для prnt. sc, но вот с ним все немного сложнее и легче одновременно, там защита от парсинга но, фотографии попадаються в 98% запросов, за сегодня на него убил 3к ******, среди картинок, есть паспорта, карточки, *********,пароли и всякий шлак(в основном шлак). А теперь главный вопрос у кого-нибудь есть варианты как парсить prnt. sc, не перебирая тысячи ******? Мой вариант через tor, но скорость упадет, да и работать будет лишь на linux, вроде.