اختر وكيلاً لكل مورد في Splash
اختر وكيل Splash على نطاق العرض أو داخل استدعاء on_request عندما تحتاج موارد فردية إلى مسارات مختلفة.
قد ينجح طلب 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 عشوائياً إلى مخرج آخر قد يُنتج صفحة معروضة لم تعد طلباتها تنتمي إلى جلسة واحدة متماسكة.