בקשת Scrapy יכולה להגיע ל-Splash בהצלחה, בעוד שהדפדפן בתוך Splash עדיין זקוק למסלול יציאה אחר. אלו שני חיבורים:

Scrapy → Splash API
Splash browser → forward proxy → website

עבור פרוקסי אחד לכל רינדור, העבירו את ארגומנט proxy של ה-HTTP API. Splash 3.5 מתעד כתובת URL של פרוקסי כמו 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 ככתובת ה-URL המדויקת של המשאב שיש לנתב בנפרד. החליפו את הפורט היחיד בדוגמה כאשר שני המאזינים שונים. משאבים אחרים מקבלים את המסלול המוגדר כברירת מחדל. רשימת פרוקסי HTTP מספקת מועמדים לנקודות קצה עבור שדות המארח והפורט האלה כאשר מסלולים למשאבים ציבוריים מותרים ולא מוחלים פרטי התחברות פרוקסי על המועמדים.

שיטת request מקבלת את השדות האופציונליים username ו-password. עם הסוג HTTP, יעדי HTTPS משתמשים ב-CONNECT דרך אותו פרוקסי HTTP; הם אינם דורשים סוג פרוקסי HTTPS מומצא.

הקריאה החוזרת רצה לפני כל בקשה. שיטות ה-request שלה אינן יכולות לשנות בקשה לאחר שנשלחה, והקריאה החוזרת אינה יכולה לקרוא לשיטות אסינכרוניות של Splash כמו splash:go או splash:wait.

שמרו על יציבות בחירת המסלול כאשר העמוד מצפה לסשן אחד או לזהות מקור אחת. הקצאה אקראית של כל תמונה ובקשת API ליציאה אחרת עלולה להפיק עמוד מרונדר שבקשותיו כבר אינן שייכות לסשן עקבי אחד.

מאמרים קשורים