Bir Scrapy isteği Splash'e ulaşabilir, ancak Splash içindeki tarayıcı hâlâ farklı bir giden rotaya ihtiyaç duyar. Bunlar iki bağlantıdır:

Scrapy → Splash API
Splash browser → forward proxy → website

İşleme başına tek proxy için HTTP API'nin proxy bağımsız değişkenini geçirin. Splash 3.5, http://proxy.example:8080 gibi bir proxy URL'sini veya yapılandırılmış bir proxy profili adını belgeler. URL biçimi ayrıca SOCKS5 ve isteğe bağlı kimlik bilgilerini destekler.

Tek tek sayfa kaynakları farklı uç noktalara ihtiyaç duyduğunda bir execute betiği kullanın ve seçimi gezinmeden önce kaydedin:

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 ve special_proxy değerlerini ana bilgisayar adı olarak, special_resource değerini ise ayrı yönlendirilecek kaynağın tam URL'si olarak geçirin. İki dinleyici farklı olduğunda örnekteki tek bağlantı noktasını değiştirin. Diğer kaynaklar varsayılan rotayı alır. HTTP proxy listesi, genel kaynaklara rotalara izin verildiğinde ve adaylara proxy kimlik bilgileri uygulanmadığında bu ana bilgisayar ve bağlantı noktası alanları için uç nokta adayları sunar.

request yöntemi isteğe bağlı username ve password alanlarını kabul eder. HTTP türüyle HTTPS hedefleri bu HTTP proxy üzerinden CONNECT kullanır; uydurma bir HTTPS proxy türüne ihtiyaç duymazlar.

Geri çağrı her istekten önce çalışır. request yöntemleri gönderilmiş bir isteği değiştiremez ve geri çağrı splash:go veya splash:wait gibi eşzamansız Splash yöntemlerini çağıramaz.

Sayfa tek bir oturum veya tek bir kaynak kimliği beklediğinde rota seçimini sabit tutun. Her görüntüyü ve API isteğini rastgele başka bir çıkışa atamak, istekleri artık tek bir tutarlı oturuma ait olmayan işlenmiş bir sayfa üretebilir.

İlgili makaleler