From f030f65ce0713014ba5c216d71bb711975bc6130 Mon Sep 17 00:00:00 2001 From: cranci1 <100066266+cranci1@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:31:01 +0100 Subject: [PATCH] =?UTF-8?q?idk=20if=20this=20uses=201.1.1.1=20DNS=20?= =?UTF-8?q?=F0=9F=98=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/JavaScriptCore+Extensions.swift | 4 ++-- Sora/Utils/Extensions/URLSession.swift | 17 +++++++++++++++++ Sora/Utils/JSLoader/JSController.swift | 8 ++++---- .../Helpers/VTTSubtitlesLoader.swift | 2 +- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Sora/Utils/Extensions/JavaScriptCore+Extensions.swift b/Sora/Utils/Extensions/JavaScriptCore+Extensions.swift index 71e9f9d..553a7e7 100644 --- a/Sora/Utils/Extensions/JavaScriptCore+Extensions.swift +++ b/Sora/Utils/Extensions/JavaScriptCore+Extensions.swift @@ -45,7 +45,7 @@ extension JSContext { request.setValue(value, forHTTPHeaderField: key) } } - let task = URLSession.custom.dataTask(with: request) { data, _, error in + let task = URLSession.cloudflareCustom.dataTask(with: request) { data, _, error in if let error = error { Logger.shared.log("Network error in fetchNativeFunction: \(error.localizedDescription)", type: "Error") reject.call(withArguments: [error.localizedDescription]) @@ -90,7 +90,7 @@ extension JSContext { request.setValue(value, forHTTPHeaderField: key) } } - let task = URLSession.custom.dataTask(with: request) { data, response, error in + let task = URLSession.cloudflareCustom.dataTask(with: request) { data, response, error in if let error = error { Logger.shared.log("Network error in fetchV2NativeFunction: \(error.localizedDescription)", type: "Error") reject.call(withArguments: [error.localizedDescription]) diff --git a/Sora/Utils/Extensions/URLSession.swift b/Sora/Utils/Extensions/URLSession.swift index cb1862d..9144c9f 100644 --- a/Sora/Utils/Extensions/URLSession.swift +++ b/Sora/Utils/Extensions/URLSession.swift @@ -6,6 +6,7 @@ // import Foundation +import Network extension URLSession { static let userAgents = [ @@ -45,4 +46,20 @@ extension URLSession { ] return URLSession(configuration: configuration) }() + + static let cloudflareCustom: URLSession = { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = [ + "User-Agent": randomUserAgent + ] + + let dnsSettings: [AnyHashable: Any] = [ + "DNSSettings": [ + "ServerAddresses": ["1.1.1.1", "1.0.0.1"] + ] + ] + + configuration.connectionProxyDictionary = dnsSettings + return URLSession(configuration: configuration) + }() } diff --git a/Sora/Utils/JSLoader/JSController.swift b/Sora/Utils/JSLoader/JSController.swift index a0a220b..6cf5e82 100644 --- a/Sora/Utils/JSLoader/JSController.swift +++ b/Sora/Utils/JSLoader/JSController.swift @@ -36,7 +36,7 @@ class JSController: ObservableObject { return } - URLSession.custom.dataTask(with: url) { [weak self] data, _, error in + URLSession.cloudflareCustom.dataTask(with: url) { [weak self] data, _, error in guard let self = self else { return } if let error = error { @@ -77,7 +77,7 @@ class JSController: ObservableObject { return } - URLSession.custom.dataTask(with: url) { [weak self] data, _, error in + URLSession.cloudflareCustom.dataTask(with: url) { [weak self] data, _, error in guard let self = self else { return } if let error = error { @@ -130,7 +130,7 @@ class JSController: ObservableObject { return } - URLSession.custom.dataTask(with: url) { [weak self] data, _, error in + URLSession.cloudflareCustom.dataTask(with: url) { [weak self] data, _, error in guard let self = self else { return } if let error = error { @@ -430,7 +430,7 @@ class JSController: ObservableObject { func fetchStreamUrlJSSecond(episodeUrl: String, softsub: Bool = false, completion: @escaping ((stream: String?, subtitles: String?)) -> Void) { let url = URL(string: episodeUrl)! - let task = URLSession.custom.dataTask(with: url) { data, response, error in + let task = URLSession.cloudflareCustom.dataTask(with: url) { data, response, error in if let error = error { Logger.shared.log("URLSession error: \(error.localizedDescription)", type: "Error") DispatchQueue.main.async { completion((nil, nil)) } diff --git a/Sora/Utils/MediaPlayer/CustomPlayer/Helpers/VTTSubtitlesLoader.swift b/Sora/Utils/MediaPlayer/CustomPlayer/Helpers/VTTSubtitlesLoader.swift index 37b98d4..944f2de 100644 --- a/Sora/Utils/MediaPlayer/CustomPlayer/Helpers/VTTSubtitlesLoader.swift +++ b/Sora/Utils/MediaPlayer/CustomPlayer/Helpers/VTTSubtitlesLoader.swift @@ -29,7 +29,7 @@ class VTTSubtitlesLoader: ObservableObject { let format = determineSubtitleFormat(from: url) - URLSession.custom.dataTask(with: url) { data, _, error in + URLSession.cloudflareCustom.dataTask(with: url) { data, _, error in guard let data = data, let content = String(data: data, encoding: .utf8), error == nil else { return }