Рубрики
Без рубрики

Jsoup – Проверить URL перенаправления

– Jsoup – Проверить URL перенаправления

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

1. Перенаправление URL-адресов

Обычно URL-адрес перенаправления возвращает HTTP-код 301 или 307, и целевой URL-адрес будет присутствовать в заголовке ответа” местоположение “поле.

Просмотрите образец заголовка HTTP-ответа

{ 
	Location=http://mkyong.com
	Server=GSE, 
	Cache-Control=no-cache, 
	no-store, 
	max-age=0, 
	must-revalidate
}

2. Пример Jsoup

2.1 По умолчанию Jsoup будет рекурсивно следовать перенаправлению и отображать конечный URL-адрес.

package com.mkyong.crawler;

import java.io.IOException;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;

public class RedirectExample {

	public static void main(String[] args) throws IOException {

		String url = "http://goo.gl/fb/gyBkwR";
		
		Response response = Jsoup.connect(url).execute();
		System.out.println(response.statusCode() + " : " + response.url());
		
	}

}

Выход

200 : http://www.mkyong.com/mongodb/mongodb-remove-a-field-from-array-documents/

2.2 Чтобы проверить перенаправление URL-адреса, установите для followRedirects значение false.

	Response response = Jsoup.connect(url).followRedirects(false).execute();
	System.out.println(response.statusCode() + " : " + response.url());
	
	//check if URL is redirect? 
	System.out.println("Is URL going to redirect : " + response.hasHeader("location"));
	System.out.println("Target : " + response.header("location"));

Выход

301 : http://goo.gl/fb/gyBkwR
Is URL going to redirect : true
Target : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/...

3. Пример Jsoup, Снова

3.1 В этом примере URL-адреса перенаправления будут распечатаны рекурсивно.

package com.mkyong.crawler;

import java.io.IOException;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;

public class RedirectExample {

	public static void main(String[] args) throws IOException {

		String url = "http://goo.gl/fb/gyBkwR";

		RedirectExample obj = new RedirectExample();
		obj.crawl(url);

	}

	private void crawl(String url) throws IOException {

		Response response = Jsoup.connect(url).followRedirects(false).execute();

		System.out.println(response.statusCode() + " : " + url);

		if (response.hasHeader("location")) {
			String redirectUrl = response.header("location");
			crawl(redirectUrl);
		}

	}

}

Выход

301 : http://goo.gl/fb/gyBkwR
301 : http://feeds.feedburner.com/~r/FeedForMkyong/~3/D_6Jqi4trqo/...
200 : http://www.mkyong.com/mongodb/mongodb-remove-a-field-from-array-documents/

Рекомендации

  1. Википедия: Перенаправление URL-адресов

Оригинал: “https://mkyong.com/java/jsoup-check-redirect-url/”