שליפת עמוד דרך פרוקסי HTTP ב-jsoup
השתמש ב-API של פרוקסי HTTP ברמת הבקשה של jsoup וצור בקשות נפרדות כאשר כמה עובדים חולקים הגדרות הפעלה.
jsoup יכול לשלוף את העמוד דרך פרוקסי HTTP ולנתח את התגובה באותה קריאה:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
שם המארח והפורט השלם מזהים את הפרוקסי. לבקשות מותרות לעמודים ציבוריים, בחר נקודת קצה HTTP מהשירות שלך או מרשימת פרוקסי HTTP. הכתובת שמועברת ל-connect נשארת העמוד שאתה רוצה. אין צורך להוריד את ה-HTML למחרוזת באמצעות URLConnection נפרד רק כדי להוסיף את המסלול הזה.
proxy(String, int) בוחר פרוקסי HTTP עבור הבקשה הזו. מספר פורט כמו 1080 אינו משנה את הפרוטוקול ל-SOCKS; נקודת הקצה של הפרוקסי חייבת לדבר את הסוג שמוגדר. jsoup גם חושף עומס יתר שמקבל java.net.Proxy, אך התמיכה במסלול מסוים עדיין תלויה במימוש ה-HTTP שבו משתמשים.
תן לכל עובד בקשה משלו
אפשרות ברמת הבקשה מקלה על עבודה מקבילה יותר משינוי מאפייני מערכת של JVM סביב כל הורדה. שמור את הבקשה המשתנה בנפרד לכל עובד. jsoup מודרני יכול לחלוק הגדרות ומאגר עוגיות של הפעלה תוך יצירת בקשה חדשה:
Connection session = Jsoup.newSession();
Document first = session.newRequest()
.url("https://www.example.com/one")
.proxy("proxy-a.example", 8080)
.get();
Document second = session.newRequest()
.url("https://www.example.com/two")
.proxy("proxy-b.example", 8080)
.get();
הקריאות לעיל רצות ברצף לשם בהירות. אם העבודה מופצת בו-זמנית, צור את הבקשות באופן עצמאי במקום לשנות את הפרוקסי ב-Connection אחד שנמצא בתהליך. הפעלה משותפת חולקת גם עוגיות; השתמש בהפעלות שונות כאשר זהויות הגלישה צריכות להישאר נפרדות.
ממשקים אלה קיימים ב-jsoup 1.21.2. ממשק newRequest() ללא ארגומנטים מקורו ב-1.14.1, ולכן אפליקציה ישנה יותר צריכה לבדוק את התלות שלה לפני אימוץ דוגמת ההפעלה.
פרטי התחברות הם דרישה נוספת לפרוקסי מאומת. בחירת מסלול מוצלחת אינה מספקת חשבון, וקבלת אתגר פרוקסי שונה מכישלון להתחבר לפורט שלו.