Ich entwickle eine Anwendung für meine Schulwebsite und verwende jsoup zum Parsen des HTML-Codes.
Ich habe ein Problem mit dem Captcha-Bild, das ich dieser Frage sehe und das ich aber implementiert hatte Ich erhalte nicht das gleiche Bild wie auf der Website.
Wie kann ich das gleiche Bild-Captcha erhalten? Die Website verwendet BotDetectCaptcha . Ich bin ein wenig verwirrt, wie ich es speziell auf meiner Website tun kann
2 Antworten
Wie in SLaks Kommentar angegeben, fehlen möglicherweise einige Cookies.
Hier ist ein Arbeitsbeispiel mit der angegebenen URL:
// Load the initial page for getting the required cookies
Connection conn = Jsoup.connect("https://www.saes.upiicsa.ipn.mx/");
Document d = conn.get();
Element captcha = d.select("#c_default_ctl00_leftcolumn_loginuser_logincaptcha_CaptchaImage").first();
if (captcha == null) {
throw new RuntimeException("Unable to find captcha...");
}
// Fetch the captcha image
Connection.Response response = Jsoup //
.connect(captcha.absUrl("src")) // Extract image absolute URL
.cookies(conn.response().cookies()) // Grab cookies
.ignoreContentType(true) // Needed for fetching image
.execute();
// Load image from Jsoup response
ImageIcon image = new ImageIcon(ImageIO.read(new ByteArrayInputStream(response.bodyAsBytes())));
// Show image
JOptionPane.showMessageDialog(null, image, "Captcha image", JOptionPane.PLAIN_MESSAGE);
AUSGABE
Getestet mit JSoup 1.8.3
Sie sagten, dass Sie nicht das gleiche Bild erhalten, das Sie auf der Website sehen ... Das ist normal, da das Bild jedes Mal anders ist, wenn Sie die Seite aktualisieren.
Neue Fragen
java
Java ist eine Programmiersprache auf hoher Ebene. Verwenden Sie dieses Tag, wenn Sie Probleme haben, die Sprache selbst zu verwenden oder zu verstehen. Dieses Tag wird selten alleine verwendet und wird am häufigsten in Verbindung mit [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] und [maven] verwendet.