Всем привет!
Написал скрипт для парсинга некоторых данных из инстаграм.
Так как обработать нужно сразу много постов, то для парсинга каждого поста я создаю тред, внутри которого с помощью requests.Session происходят запросы к
https://www.instagram.com/graphql/query/. Для каждого треда используется индивидуальный публичный прокси (from proxy import Proxy), также, перед тем как выполнить очередной запрос тред засыпает на 25 - 30 секунд, однако всё бесполезно, в середине работы скрипта я всегда получаю ответ со статусом 429 - TooManyRequests, хотя с каждого прокси совершается не более 2 запросов в минуту.
Причём всё выглядит так, как будто бы requests.Session игнорирует переданный прокси и стучится с моего айпи - например, у меня создано 20 тредов, как только первый тред получает 429 TooManyRequests,
остальные треды тут же получают такой же респонс, с таким же статус кодом!
Вот кусок кода:
proxies = get_proxy_list()
random.shuffle(proxies)
idx_counter = 0
for code in shortcodes:
proxy = proxies[idx_counter]
idx_counter += 1
session = requests.Session()
session.proxies.update(proxy)
humanize_session(session)
threading.Thread(target=new_load_data, args=(session, code, )).start()
В методе new_load_data из значимого только следующий код:
sleep(random.randint(25, 30))
print(f'Запрос для {code}')
response = session.get(QUERY_ROUTE, params={'query_hash': QUERY_HASH,
'variables': json.dumps(load_data_vars)})
Что я делаю не так?