Барањето на Scrapy може успешно да стигне до Splash, додека прелистувачот внатре во Splash сè уште бара различен излезен маршрут. Тоа се две врски:

Scrapy → Splash API
Splash browser → forward proxy → website

За едно прокси по рендерирање, предајте го proxy аргументот на HTTP API. Splash 3.5 документира URL на прокси како http://proxy.example:8080 или име на конфигуриран proxy профил. Форматот на 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 барање на друг излез може да создаде рендерирана страница чии барања веќе не припаѓаат на една кожерентна сесија.

Поврзани статии