1
0
mirror of https://github.com/RipMeApp/ripme.git synced 2025-02-22 07:03:35 +01:00

Fix ig ripper grabbing incorrect query hash

This commit is contained in:
Tushar 2020-10-09 04:52:17 +05:30
parent 560a417386
commit 096ad4a655

View File

@ -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<String, String> extractHash) {
List<Statement> 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<Statement> list, String keyword, int offset) {
private String getHashValue(String javaScriptData, String keyword, int offset) {
return getHashValue(javaScriptData, keyword, offset, null);
}
private String lookForHash(List<Statement> list, String keyword, int offset, Function<String, String> 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");
}
}