mirror of
https://github.com/RipMeApp/ripme.git
synced 2025-02-23 07:39:52 +01:00
Fix ig ripper grabbing incorrect query hash
This commit is contained in:
parent
560a417386
commit
096ad4a655
@ -192,7 +192,8 @@ public class InstagramRipper extends AbstractJSONRipper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getProfileHash(String jsData) {
|
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) {
|
private String getPinnedHash(String jsData) {
|
||||||
@ -407,7 +408,8 @@ public class InstagramRipper extends AbstractJSONRipper {
|
|||||||
|
|
||||||
// Javascript parsing
|
// 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();
|
List<Statement> statements = getJsBodyBlock(javaScriptData).getStatements();
|
||||||
|
|
||||||
return statements.stream()
|
return statements.stream()
|
||||||
@ -419,15 +421,22 @@ public class InstagramRipper extends AbstractJSONRipper {
|
|||||||
.flatMap(expression -> filterItems(expression, FunctionNode.class))
|
.flatMap(expression -> filterItems(expression, FunctionNode.class))
|
||||||
.map(FunctionNode::getBody)
|
.map(FunctionNode::getBody)
|
||||||
.map(Block::getStatements)
|
.map(Block::getStatements)
|
||||||
.map(statementList -> lookForHash(statementList, keyword, offset))
|
.map(statementList -> lookForHash(statementList, keyword, offset, extractHash))
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.findFirst().orElse(null);
|
.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++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
Statement st = list.get(i);
|
Statement st = list.get(i);
|
||||||
if (st.toString().contains(keyword)) {
|
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");
|
return list.get(i + offset).toString().replaceAll(".*\"([0-9a-f]*)\".*", "$1");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user