یک درخواست Scrapy می‌تواند با موفقیت به Splash برسد، در حالی که مرورگر داخل Splash هنوز به مسیر خروجی متفاوتی نیاز دارد. این‌ها دو اتصال هستند:

Scrapy → Splash API
Splash browser → forward proxy → website

برای یک پروکسی به ازای هر رندر، آرگومان proxy مربوط به HTTP API را بفرستید. Splash 3.5 نشانی پروکسی مانند http://proxy.example:8080 یا نام یک پروفایل پروکسی پیکربندی‌شده را مستند می‌کند. قالب نشانی آن 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 را به‌عنوان نشانی دقیق منبعی که باید جداگانه مسیریابی شود بفرستید. وقتی دو شنونده متفاوت‌اند، تنها پورت مثال را جایگزین کنید. سایر منابع مسیر پیش‌فرض را دریافت می‌کنند. فهرست پروکسی HTTP برای این فیلدهای میزبان و پورت کاندیدهای نقطه پایانی ارائه می‌دهد، زمانی که مسیرهای منابع عمومی مجاز باشند و هیچ اعتبارنامه پروکسی روی کاندیدها اعمال نشود.

متد request فیلدهای اختیاری username و password را می‌پذیرد. با نوع HTTP، مقصدهای HTTPS از CONNECT از طریق همان پروکسی HTTP استفاده می‌کنند؛ به نوع پروکسی HTTPS ساختگی نیازی ندارند.

فراخوانی پیش از هر درخواست اجرا می‌شود. متدهای request آن نمی‌توانند درخواستی را پس از ارسال تغییر دهند، و فراخوانی نمی‌تواند متدهای ناهمگام Splash مانند splash:go یا splash:wait را صدا بزند.

وقتی صفحه انتظار یک نشست یا یک هویت منبع را دارد، انتخاب مسیر را پایدار نگه دارید. اختصاص تصادفی هر تصویر و درخواست API به خروجی دیگر می‌تواند صفحه‌ای رندرشده بسازد که درخواست‌هایش دیگر به یک نشست منسجم تعلق ندارند.

مقالات مرتبط