Перейти к основному содержимому

Как добавить поддержку прокси в Jsoup?

· 2 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим, как добавить поддержку прокси в Jsoup .

2. Распространенные причины использования прокси

Есть две основные причины, по которым мы можем захотеть использовать прокси с Jsoup.

2.1. Использование за прокси-сервером организации

Организации часто используют прокси-серверы, контролирующие доступ в Интернет. Если мы попытаемся получить доступ к Jsoup через проксированную локальную сеть, мы получим исключение :

java.net.SocketTimeoutException: connect timed out

Когда мы видим эту ошибку, нам нужно установить прокси для Jsoup, прежде чем пытаться получить доступ к любому URL-адресу за пределами сети .

2.2. Предотвращение блокировки IP

Еще одна распространенная причина использования прокси с Jsoup — предотвратить блокировку IP-адресов веб-сайтами.

Другими словами, использование прокси (или нескольких чередующихся прокси) позволяет нам более надежно анализировать HTML, уменьшая вероятность того, что наш код перестанет работать из-за блокировки или бана нашего IP-адреса .

3. Настройка

При использовании Maven нам нужно добавить зависимость Jsoup в наш pom.xml :

<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>

В Gradle мы должны объявить нашу зависимость в build.gradle :

compile 'org.jsoup:jsoup:1.13.1'

4. Добавление поддержки прокси через свойства хоста и порта

Добавить поддержку прокси в Jsoup довольно просто. Все, что нам нужно сделать, это вызвать метод proxy (String, int) при построении объекта Connection :

Jsoup.connect("https://spring.io/blog")
.proxy("127.0.0.1", 1080)
.get();

Здесь мы устанавливаем прокси-сервер HTTP, который будет использоваться для этого запроса, причем первый аргумент представляет имя хоста прокси-сервера, а второй — порт прокси-сервера.

5. Добавление поддержки прокси через прокси - объект

Или, чтобы добавить прокси в Jsoup с помощью класса Proxy , мы вызываем метод proxy (java.net.Proxy) объекта Connection :

Proxy proxy = new Proxy(Proxy.Type.HTTP, 
new InetSocketAddress("127.0.0.1", 1080));

Jsoup.connect("https://spring.io/blog")
.proxy(proxy)
.get();

Этот метод принимает объект Proxy , состоящий из типа прокси, обычно типа HTTP, и InetSocketAddress — класса, который содержит имя хоста и порт прокси соответственно.

6. Заключение

В этом руководстве мы рассмотрели два разных способа добавления поддержки прокси в Jsoup .

Во-первых, мы узнали, как это сделать с помощью метода Jsoup, который принимает свойства хоста и порта. Во-вторых, мы узнали, как добиться того же результата, используя объект Proxy в качестве параметра.

Как всегда, образцы кода доступны на GitHub .