Парсинг hh.ru ошибка требует капчу

Считываю с hh.ru страницы с вакансиями в json. Далее перехожу по ссылкам в каждую вакансию и считываю полные данные по каждой вакансии, сохраняю в json. После примерно 3000 вакансий начинает считываться ошибка

{"errors":[{"value":"captcha_required","captcha_url":"https://hh.ru/account/captcha?state=pxvcxBozfu7ry7R4QCetFpeicJ2Ml%2Bur%2F701s7jX2mZxCzHziryEFFjVgnI%2BvznkWxaVSgPj67XokFr31BOU8EFhIWldkAUTAsvw7%2FdzN4pT%2Fd%2Boae6SsDZ%2FD1amd0j5","type":"captcha_required"}],"request_id":"16527760531513bc87dd9347f901b5af"}

По ссылке captcha_url при открывании в браузере тоже ошибка. Ответ от службы поддержки: "После ссылки на капчу подставить backurl, который вернёт обратно в приложение." Куда подставлять backurl и что в нем должно быть? Ссылка на вакансию, на которой началась ошибка капчи?

Есть ли какой-то способ открыть страницу с капчей для прохождения вручную? Использую метод requests.get

import json
import os
import time
import requests

start_time = time.time()

k=0
# Получаем перечень ранее созданных файлов со списком вакансий и проходимся по нему в 
цикле 
for fl in os.listdir('.\pages'):
 
    # Открываем файл, читаем его содержимое, закрываем файл
    f = open('.\\pages\\{}'.format(fl), encoding='utf8')
    jsonText = f.read()
    f.close()
 
    # Преобразуем полученный текст в объект справочника
    jsonObj = json.loads(jsonText)
 
    # Получаем и проходимся по непосредственно списку вакансий
    for v in jsonObj['items']:
     
        # Обращаемся к API и получаем детальную информацию по конкретной вакансии
        req = requests.get(v['url'])
        data = req.content.decode()
        req.close()
     
        # Создаем файл в формате json с идентификатором вакансии в качестве названия
        # Записываем в него ответ запроса и закрываем файл
        fileName = '.\\vacancies\\{}.json'.format(v['id'])
        f = open(fileName, mode='w', encoding='utf8')
        f.write(data)
        k+=1
        f.close()        
     
print('Вакансии собраны')

print("--- %s seconds ---" % (time.time() - start_time))

Ответы (1 шт):

Автор решения: G0Ra

Ловите ошибку связанную с капчей и переходите на страницу с капчей + &backurl=<ваш сайт>. На JS это выглядит так:

catch (error) {
    document.location.href = error.response.data.errors[0].captcha_url + '&backurl=' + 'http://127.0.0.1:5500/index.html';
}

Вместо http://127.0.0.1:5500/index.html, прописываете то что нужно вам

→ Ссылка