J'ai dû y accéder via un proxy utilisant jsoup, mais c'était difficile de manière inattendue.
Les points sont les deux points suivants.
jsoup
pom.xml
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.12.1</version>
</dependency>
Version Java: 8
//Annulez le paramètre «Interdire l'accès HTTPS via un proxy nécessitant une authentification».
//Par défaut cette propriété"Basic"Est spécifié et l'authentification de base ne peut pas être utilisée."Basic"Remplacez par un caractère vide pour annuler le réglage de.
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
//ID du serveur proxy/Assurez-vous de transmettre le mot de passe via Authenticator.
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("{ID utilisateur du serveur proxy}", "{Mot de passe du serveur proxy}".toCharArray());
}
});
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.proxy("{ID du serveur proxy ou nom d'hôte}", {Numéro de port du serveur proxy})
.get();
//Version qui utilise l'en-tête d'autorisation Partie 1
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.header("Authorization", "Basic " + Base64.getEncoder().encodeToString("{ID utilisateur du serveur proxy}:{Mot de passe du serveur proxy}".getBytes()))
.proxy("{Adresse IP ou nom d'hôte du serveur proxy}", {Numéro de port du serveur proxy})
.get();
//Version 2 qui utilise l'en-tête Authorization (dans la valeur d'en-tête"Basic "Ne spécifiez pas la chaîne de caractères de)
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.header("Authorization", Base64.getEncoder().encodeToString("{ID utilisateur du serveur proxy}:{Mot de passe du serveur proxy}".getBytes()))
.proxy("{Adresse IP ou nom d'hôte du serveur proxy}", {Numéro de port du serveur proxy})
.get();
// Proxy-Version qui utilise l'en-tête d'autorisation Partie 1
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.header("Proxy-Authorization", "Basic " + Base64.getEncoder().encodeToString("{ID utilisateur du serveur proxy}:{Mot de passe du serveur proxy}".getBytes()))
.proxy("{Adresse IP ou nom d'hôte du serveur proxy}", {Numéro de port du serveur proxy})
.get();
// Proxy-Version 2 qui utilise l'en-tête Authorization (dans la valeur d'en-tête"Basic "Ne spécifiez pas la chaîne de caractères de)
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.header("Proxy-Authorization", Base64.getEncoder().encodeToString("{ID utilisateur du serveur proxy}:{Mot de passe du serveur proxy}".getBytes()))
.proxy("{Adresse IP ou nom d'hôte du serveur proxy}", {Numéro de port du serveur proxy})
.get();
// 「jdk.http.auth.tunneling."Schémas désactivés" n'est pas spécifié
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("{ID utilisateur du serveur proxy}", "{Mot de passe du serveur proxy}".toCharArray());
}
});
Jsoup.connect("{URL à laquelle vous souhaitez accéder}")
.proxy("{ID du serveur proxy ou nom d'hôte}", {Numéro de port du serveur proxy})
.get();
Dans les deux cas, l'erreur suivante s'est produite.
java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"
C'était très utile! Je vous remercie! https://qiita.com/kaakaa_hoe/items/d4fb11a3af035a287972
Recommended Posts