Το jsoup μπορεί να ανακτήσει τη σελίδα μέσω διακομιστή μεσολάβησης HTTP και να αναλύσει την απάντηση στην ίδια κλήση:

Document page = Jsoup.connect("https://www.example.com/")
    .proxy("proxy.example", 8080)
    .get();

Το όνομα κεντρικού υπολογιστή και η ακέραια θύρα προσδιορίζουν τον διακομιστή μεσολάβησης. Για επιτρεπόμενα αιτήματα σε δημόσιες σελίδες, επίλεξε ένα τελικό σημείο HTTP από την υπηρεσία σου ή από τη λίστα διακομιστών μεσολάβησης HTTP. Το URL που περνά στο connect παραμένει η σελίδα που θέλεις. Δεν χρειάζεται να κατεβάσεις το HTML σε συμβολοσειρά με ξεχωριστό URLConnection μόνο για να προσθέσεις αυτή τη διαδρομή.

Το proxy(String, int) επιλέγει διακομιστή μεσολάβησης HTTP για αυτό το αίτημα. Ένας αριθμός θύρας όπως 1080 δεν αλλάζει το πρωτόκολλό του σε SOCKS· το τελικό σημείο του διακομιστή μεσολάβησης πρέπει να μιλά τον τύπο που διαμορφώνεται. Το jsoup εκθέτει επίσης μια υπερφόρτωση που δέχεται java.net.Proxy, αλλά η υποστήριξη για μια συγκεκριμένη διαδρομή εξακολουθεί να εξαρτάται από την υλοποίηση HTTP που χρησιμοποιείται.

Δώσε σε κάθε εργαζόμενο το δικό του αίτημα

Μια επιλογή σε επίπεδο αιτήματος κάνει την παράλληλη εργασία ευκολότερη από την αλλαγή ιδιοτήτων συστήματος JVM γύρω από κάθε λήψη. Κράτα το μεταβλητό αίτημα ξεχωριστό για κάθε εργαζόμενο. Το σύγχρονο jsoup μπορεί να μοιράζεται τις ρυθμίσεις και τον χώρο αποθήκευσης cookies μιας συνεδρίας δημιουργώντας ένα νέο αίτημα:

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 που βρίσκεται σε εξέλιξη. Μια κοινή συνεδρία μοιράζεται επίσης cookies· χρησιμοποίησε διαφορετικές συνεδρίες όταν οι ταυτότητες περιήγησης πρέπει να παραμείνουν ξεχωριστές.

Αυτές οι διεπαφές υπάρχουν στο jsoup 1.21.2. Η διεπαφή newRequest() χωρίς ορίσματα χρονολογείται από την 1.14.1, οπότε μια παλαιότερη εφαρμογή θα πρέπει να ελέγξει την εξάρτησή της πριν υιοθετήσει το παράδειγμα της συνεδρίας.

Τα διαπιστευτήρια είναι μια επιπλέον απαίτηση για έναν πιστοποιημένο διακομιστή μεσολάβησης. Μια επιτυχής επιλογή διαδρομής δεν παρέχει λογαριασμό, και η λήψη πρόκλησης διακομιστή μεσολάβησης διαφέρει από την αποτυχία σύνδεσης στη θύρα του.

Σχετικά άρθρα