Jsoup - Vérifier l’URL de redirection

Jsoup - Vérifier l'URL de redirection

Dans cet article, nous allons vous montrer comment utiliser Jsoup pour vérifier si une URL va rediriger.

1. Redirection d'URL

Normalement, une URL de redirection renverra un code HTTP de 301 ou 307, et l'URL cible figurera dans le champ d'en-tête de réponse «location».

Examiner un échantillon d'en-tête de réponse HTTP

Code HTTP: 301 déplacé définitivement

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

2. Exemple Jsoup

2.1 By default, Jsoup will follow the redirect recursively and display the final URL.

RedirectExample.java

package com.example.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());

    }

}

Sortie

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

2.2 To test the URL redirection, set followRedirects to 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"));

Sortie

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

3. Exemple Jsoup, encore une fois

3.1 This example will print out the redirect URLs recursively.

RedirectExample.java

package com.example.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);
        }

    }

}

Sortie

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