Żądanie Scrapy może dotrzeć do Splash, podczas gdy przeglądarka wewnątrz Splash nadal potrzebuje innej trasy wyjściowej. To dwa połączenia:

Scrapy → Splash API
Splash browser → forward proxy → website

Dla jednego proxy na renderowanie przekaż argument proxy interfejsu HTTP API. Splash 3.5 dokumentuje adres URL proxy, taki jak http://proxy.example:8080, albo nazwę skonfigurowanego profilu proxy. Format adresu obsługuje także SOCKS5 i opcjonalne dane logowania.

Gdy poszczególne zasoby strony wymagają różnych punktów końcowych, użyj skryptu execute i zarejestruj wybór przed nawigacją:

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

Przekaż default_proxy i special_proxy jako nazwy hostów, a special_resource jako dokładny adres URL zasobu, który ma być kierowany osobno. Zastąp jedyny port z przykładu, gdy dwa nasłuchy się różnią. Pozostałe zasoby otrzymują trasę domyślną. Lista proxy HTTP dostarcza kandydatów punktów końcowych dla tych pól hosta i portu, gdy trasy do zasobów publicznych są dozwolone, a do kandydatów nie są stosowane dane logowania proxy.

Metoda request przyjmuje opcjonalne pola username i password. Przy typie HTTP cele HTTPS używają CONNECT przez to proxy HTTP; nie wymagają wymyślonego typu proxy HTTPS.

Wywołanie zwrotne uruchamia się przed każdym żądaniem. Jego metody request nie mogą zmienić żądania po wysłaniu, a wywołanie zwrotne nie może wywoływać asynchronicznych metod Splash, takich jak splash:go czy splash:wait.

Utrzymuj stabilny wybór trasy, gdy strona oczekuje jednej sesji lub jednej tożsamości źródła. Losowe przypisywanie każdego obrazu i żądania API do innego wyjścia może dać wyrenderowaną stronę, której żądania nie należą już do jednej spójnej sesji.

Powiązane artykuły