diff --git a/animepahe/animepahe.js b/animepahe/animepahe.js index c3ed2a9..c88de8d 100644 --- a/animepahe/animepahe.js +++ b/animepahe/animepahe.js @@ -195,13 +195,30 @@ class DdosGuardInterceptor { async fetchWithBypass(url, options = {}) { let response = await this.fetchWithCookies(url, options); + let responseText = null; - const isBlocked = await this.isBlockedResponse(response); - - if (!isBlocked) { + if (this.errorCodes.includes(response.status)) { + const newCookie = await this.getNewCookie(url); + if (newCookie || this.cookieStore["__ddg2_"]) { + return this.fetchWithCookies(url, options); + } return response; } + try { + responseText = await response.text(); + } catch (e) { + return response; + } + + const isBlocked = responseText.includes('ddos-guard/js-challenge') || + responseText.includes('DDoS-Guard') || + responseText.includes('data-ddg-origin'); + + if (!isBlocked) { + response.text = async () => responseText; + return response; + } if (this.cookieStore["__ddg2_"]) { return this.fetchWithCookies(url, options); @@ -209,6 +226,7 @@ class DdosGuardInterceptor { const newCookie = await this.getNewCookie(url); if (!newCookie) { + response.text = async () => responseText; return response; } @@ -217,13 +235,19 @@ class DdosGuardInterceptor { async fetchWithCookies(url, options) { const cookieHeader = this.getCookieHeader(); - const headers = { ...options.headers, Cookie: cookieHeader }; + const headers = options.headers || {}; + if (cookieHeader) { + headers.Cookie = cookieHeader; + } - const response = await fetchv2(url, headers ); + const response = await fetchv2(url, headers); - const setCookieHeader = response.headers["Set-Cookie"]; - if (setCookieHeader) { - this.storeCookies(setCookieHeader); + try { + const setCookieHeader = response.headers ? response.headers["Set-Cookie"] || response.headers["set-cookie"] : null; + if (setCookieHeader) { + this.storeCookies(setCookieHeader); + } + } catch (e) { } return response; @@ -234,23 +258,6 @@ class DdosGuardInterceptor { return serverHeader && this.serverCheck.includes(serverHeader.toLowerCase()); } - async isBlockedResponse(response) { - if (this.errorCodes.includes(response.status)) { - return true; - } - - const clonedResponse = response.clone(); - const text = await clonedResponse.text(); - - if (text.includes('ddos-guard/js-challenge') || - text.includes('DDoS-Guard') || - text.includes('data-ddg-origin')) { - return true; - } - - return false; - } - storeCookies(setCookieString) { const cookies = Array.isArray(setCookieString) ? setCookieString : [setCookieString]; @@ -301,10 +308,11 @@ class DdosGuardInterceptor { } }); - let setCookie = localResponse.headers["set-cookie"] || - localResponse.headers["Set-Cookie"] || - (localResponse.headers.raw && localResponse.headers.raw()['set-cookie']) || - (localResponse.headers.get && localResponse.headers.get('set-cookie')); + let setCookie = null; + try { + setCookie = localResponse.headers ? localResponse.headers["set-cookie"] || localResponse.headers["Set-Cookie"] : null; + } catch (e) { + } if (setCookie) { this.storeCookies(setCookie); } @@ -320,10 +328,10 @@ class DdosGuardInterceptor { } }); - setCookie = checkResponse.headers["set-cookie"] || - checkResponse.headers["Set-Cookie"] || - (checkResponse.headers.raw && checkResponse.headers.raw()['set-cookie']) || - (checkResponse.headers.get && checkResponse.headers.get('set-cookie')); + try { + setCookie = checkResponse.headers ? checkResponse.headers["set-cookie"] || checkResponse.headers["Set-Cookie"] : null; + } catch (e) { + } if (setCookie) { this.storeCookies(setCookie); }