From 152d6f635fd4764e56a4dee34ca7fc2a9bc290b4 Mon Sep 17 00:00:00 2001 From: Philipp Erhardt Date: Thu, 21 Nov 2019 20:02:02 +0100 Subject: [PATCH] Warn users about possibly fixable permission error --- .../java/com/rarchives/ripme/utils/Http.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rarchives/ripme/utils/Http.java b/src/main/java/com/rarchives/ripme/utils/Http.java index 0eabaea1..5ce9c48b 100644 --- a/src/main/java/com/rarchives/ripme/utils/Http.java +++ b/src/main/java/com/rarchives/ripme/utils/Http.java @@ -15,6 +15,7 @@ import org.jsoup.Connection.Method; import org.jsoup.Connection.Response; import org.jsoup.helper.StringUtil; import org.jsoup.Jsoup; +import org.jsoup.HttpStatusException; import org.jsoup.nodes.Document; import com.rarchives.ripme.ripper.AbstractRipper; @@ -90,7 +91,7 @@ public class Http { cookiesParsed = RipUtils.getCookiesFromString(cookieStr.trim()); } } catch (MalformedURLException e) { - logger.warn("Parsing url while getting cookies" + url, e); + logger.warn("Parsing url " + u + " while getting cookies", e); } return cookiesParsed; @@ -171,6 +172,20 @@ public class Http { response = connection.execute(); return response; } catch (IOException e) { + // Warn users about possibly fixable permission error + if (e instanceof org.jsoup.HttpStatusException) { + HttpStatusException ex = (HttpStatusException)e; + + // These status codes might indicate missing cookies + // 401 Unauthorized + // 403 Forbidden + + int status = ex.getStatusCode(); + if (status == 401 || status == 403) { + throw new IOException("Failed to load " + url + ": Status Code " + Integer.toString(status) + ". You might be able to circumvent this error by setting cookies for this domain" , e); + } + } + logger.warn("Error while loading " + url, e); lastException = e; }