From 096ad4a655c5a88d00597fe9b73dff1c415f76de Mon Sep 17 00:00:00 2001 From: Tushar Date: Fri, 9 Oct 2020 04:52:17 +0530 Subject: [PATCH] Fix ig ripper grabbing incorrect query hash --- .../ripme/ripper/rippers/InstagramRipper.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java index 82b7dea5..4a4122ad 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/InstagramRipper.java @@ -192,7 +192,8 @@ public class InstagramRipper extends AbstractJSONRipper { } private String getProfileHash(String jsData) { - return getHashValue(jsData, "loadProfilePageExtras", -1); + return getHashValue(jsData, "loadProfilePageExtras", -1, + s -> s.replaceAll(".*queryId\\s?:\\s?\"([0-9a-f]*)\".*", "$1")); } private String getPinnedHash(String jsData) { @@ -407,7 +408,8 @@ public class InstagramRipper extends AbstractJSONRipper { // Javascript parsing /* ------------------------------------------------------------------------------------------------------- */ - private String getHashValue(String javaScriptData, String keyword, int offset) { + private String getHashValue(String javaScriptData, String keyword, int offset, + Function extractHash) { List statements = getJsBodyBlock(javaScriptData).getStatements(); return statements.stream() @@ -419,15 +421,22 @@ public class InstagramRipper extends AbstractJSONRipper { .flatMap(expression -> filterItems(expression, FunctionNode.class)) .map(FunctionNode::getBody) .map(Block::getStatements) - .map(statementList -> lookForHash(statementList, keyword, offset)) + .map(statementList -> lookForHash(statementList, keyword, offset, extractHash)) .filter(Objects::nonNull) .findFirst().orElse(null); } - private String lookForHash(List list, String keyword, int offset) { + private String getHashValue(String javaScriptData, String keyword, int offset) { + return getHashValue(javaScriptData, keyword, offset, null); + } + + private String lookForHash(List list, String keyword, int offset, Function extractHash) { for (int i = 0; i < list.size(); i++) { Statement st = list.get(i); if (st.toString().contains(keyword)) { + if (extractHash != null) { + return extractHash.apply(list.get(i + offset).toString()); + } return list.get(i + offset).toString().replaceAll(".*\"([0-9a-f]*)\".*", "$1"); } }