Изтегляне на страница през 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, така че по-старо приложение трябва да провери зависимостта си, преди да приеме примера със сесия.
Идентификационните данни са допълнително изискване за удостоверено прокси. Успешният избор на маршрут не предоставя акаунт и получаването на предизвикателство от проксито е различно от неуспешно свързване с неговия порт.