Заявка на Scrapy може успешно да достигне до Splash, докато браузърът вътре в Splash все още се нуждае от различен изходящ маршрут. Това са две връзки:

Scrapy → Splash API
Splash browser → forward proxy → website

За едно прокси на рендиране подайте аргумента proxy на HTTP API. Splash 3.5 документира URL на прокси като http://proxy.example:8080 или име на конфигуриран профил на прокси. Форматът на URL поддържа също SOCKS5 и незадължителни идентификационни данни.

Когато отделни ресурси на страницата се нуждаят от различни крайни точки, използвайте скрипт execute и регистрирайте избора преди навигацията:

function main(splash, args)
  splash:on_request(function(request)
    local host = args.default_proxy
    if request.url == args.special_resource then
      host = args.special_proxy
    end
    request:set_proxy{host = host, port = 8080, type = 'HTTP'}
  end)

  assert(splash:go(args.url))
  return splash:html()
end

Подайте default_proxy и special_proxy като имена на хостове, а special_resource — като точния URL на ресурса, който да се маршрутизира отделно. Заменете единствения порт от примера, когато двата слушателя се различават. Другите ресурси получават маршрута по подразбиране. Списъкът с HTTP проксита предоставя кандидати за крайни точки за тези полета за хост и порт, когато са разрешени маршрути до публични ресурси и към кандидатите не се прилагат идентификационни данни за прокси.

Методът request приема незадължителни полета username и password. С тип HTTP дестинациите по HTTPS използват CONNECT през това HTTP прокси; те не изискват измислен тип HTTPS прокси.

Обратното извикване се изпълнява преди всяка заявка. Неговите методи request не могат да променят вече изпратена заявка, а обратното извикване не може да извиква асинхронни методи на Splash като splash:go или splash:wait.

Поддържайте избора на маршрут стабилен, когато страницата очаква една сесия или една самоличност на източника. Случайното разпределяне на всяко изображение и API заявка към друг изход може да създаде рендирана страница, чиито заявки вече не принадлежат на една последователна сесия.

Подобни статии