Атрыманне старонкі праз HTTP-проксі ў jsoup
Выкарыстоўвайце HTTP-проксі API jsoup на ўзроўні запыту і стварайце асобныя запыты, калі некалькі працоўных супольна выкарыстоўваюць налады сеанса.
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 можа абагульваць налады сеанса і сховішча кукаў, ствараючы новы запыт:
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, таму старэйшая праграма павінна праверыць сваю залежнасць, перш чым ужываць прыклад з сеансам.
Уліковыя даныя — дадатковая патраба для аўтэнтыфікаванага проксі. Паспяховы выбар маршруту не дае ўліковага запісу, а атрыманне запыту проксі адрозніваецца ад няўдалага злучэння з яго портам.