Merge pull request #168 from andersonvom/non-logged-likes

Improve CookieUtils
This commit is contained in:
Austin Huang 2020-09-19 20:16:53 -04:00 committed by GitHub
commit 8dd6a8f90f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 80 deletions

View File

@ -10,6 +10,10 @@ import java.net.CookieStore;
import java.net.HttpCookie; import java.net.HttpCookie;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import awais.instagrabber.BuildConfig; import awais.instagrabber.BuildConfig;
import awaisomereport.LogCollector; import awaisomereport.LogCollector;
@ -54,99 +58,61 @@ public final class CookieUtils {
} }
@Nullable @Nullable
public static String getUserIdFromCookie(final String cookie) { public static String getUserIdFromCookie(final String cookies) {
if (!TextUtils.isEmpty(cookie)) { return getCookieValue(cookies, "ds_user_id");
final int uidIndex = cookie.indexOf("ds_user_id="); }
if (uidIndex > 0) {
String uid = cookie.split("ds_user_id=")[1].split(";")[0]; @Nullable
return !TextUtils.isEmpty(uid) ? uid : null; public static String getCsrfTokenFromCookie(final String cookies) {
} return getCookieValue(cookies, "csrftoken");
}
@Nullable
private static String getCookieValue(final String cookies, final String name) {
final Pattern pattern = Pattern.compile(name + "=(.+?);");
final Matcher matcher = pattern.matcher(cookies);
if (matcher.find()) {
return matcher.group(1);
} }
return null; return null;
} }
public static String getCsrfTokenFromCookie(final String cookie) { @Nullable
if (cookie == null) { public static String getCookie(@Nullable final String webViewUrl) {
return null; final List<String> domains = Arrays.asList(
"https://instagram.com",
"https://instagram.com/",
"http://instagram.com",
"http://instagram.com",
"https://www.instagram.com",
"https://www.instagram.com/",
"http://www.instagram.com",
"http://www.instagram.com/"
);
if (!TextUtils.isEmpty(webViewUrl)) {
domains.add(0, webViewUrl);
} }
return cookie.split("csrftoken=")[1].split(";")[0];
return getLongestCookie(domains);
} }
@Nullable @Nullable
public static String getCookie(@Nullable final String webViewUrl) { private static String getLongestCookie(final List<String> domains) {
int lastLongestCookieLength = 0; int longestLength = 0;
String mainCookie = null; String longestCookie = null;
String cookie; for (final String domain : domains) {
if (!TextUtils.isEmpty(webViewUrl)) { final String cookie = COOKIE_MANAGER.getCookie(domain);
cookie = COOKIE_MANAGER.getCookie(webViewUrl);
if (cookie != null) { if (cookie != null) {
final int cookieLen = cookie.length(); final int cookieLength = cookie.length();
if (cookieLen > lastLongestCookieLength) { if (cookieLength > longestLength) {
mainCookie = cookie; longestCookie = cookie;
lastLongestCookieLength = cookieLen; longestLength = cookieLength;
} }
} }
} }
cookie = COOKIE_MANAGER.getCookie("https://instagram.com");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("https://instagram.com/");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("http://instagram.com");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("http://instagram.com/");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("https://www.instagram.com");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("https://www.instagram.com/");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("http://www.instagram.com");
if (cookie != null) {
final int cookieLen = cookie.length();
if (cookieLen > lastLongestCookieLength) {
mainCookie = cookie;
lastLongestCookieLength = cookieLen;
}
}
cookie = COOKIE_MANAGER.getCookie("http://www.instagram.com/");
if (cookie != null && cookie.length() > lastLongestCookieLength) mainCookie = cookie;
return mainCookie; return longestCookie;
} }
} }