fix: validate AniList reports against version two schema
This commit is contained in:
@@ -76,7 +76,7 @@ enum ZokoResolver {
|
||||
|
||||
static func parse(page: String, mediaID: String, episode: Int) throws -> ResolvedSource {
|
||||
guard page.utf8.count <= bodyLimit, ResolvedSource.validAniListIdentity(mediaID: mediaID, episode: episode) else { throw ZokoError.malformed }
|
||||
let pattern = #"window\.__P\s*=\s*[\"']([A-Za-z0-9+/=]+)[\"']\s*;"#
|
||||
let pattern = #"window\.__P\s*=\s*[\"']([A-Za-z0-9+/=]+)[\"']\s*;?\s*</script\s*>"#
|
||||
let regex = try NSRegularExpression(pattern: pattern)
|
||||
let matches = regex.matches(in: page, range: NSRange(page.startIndex..., in: page))
|
||||
guard matches.count == 1, let match = matches.first, let range = Range(match.range(at: 1), in: page) else {
|
||||
@@ -84,7 +84,8 @@ enum ZokoResolver {
|
||||
let lower = page.lowercased()
|
||||
let visible = lower.replacingOccurrences(of: "<[^>]*>", with: " ", options: .regularExpression)
|
||||
if visible.contains("error"), visible.contains("404"), visible.contains("couldn't find anything to play here") { throw ZokoError.unavailable }
|
||||
if lower.contains("cf-chl-") || lower.contains("challenge-platform") || lower.contains("just a moment") || lower.contains("captcha") { throw ZokoError.protection }
|
||||
if lower.contains("cf-chl-") || lower.contains("challenge-platform") || lower.contains("just a moment") ||
|
||||
lower.contains("captcha") || lower.contains("sorry, you have been blocked") { throw ZokoError.protection }
|
||||
throw ZokoError.malformed
|
||||
}
|
||||
guard let encoded = Data(base64Encoded: String(page[range])), !encoded.isEmpty else { throw ZokoError.malformed }
|
||||
|
||||
Reference in New Issue
Block a user