Đối với yêu cầu API Tôi đang cố gắng thiết lập URLSession bằng Proxy. Đối với mục đích thử nghiệm, tôi đang sử dụng Proxy công khai và API đáp ứng IP.Cách sử dụng URLSession với Proxy trong Swift 3
func makeRequestViaUrlSessionProxy(_ url: String, completion: @escaping (_ result: String?) ->()) {
let request = URLRequest(url: URL(string: url)!)
let config = URLSessionConfiguration.default
config.requestCachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
config.connectionProxyDictionary = [AnyHashable: Any]()
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPEnable as String] = 1
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPProxy as String] = "142.54.173.19"
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPPort as String] = 8888
let session = URLSession.init(configuration: config, delegate: nil, delegateQueue: OperationQueue.current)
let task = session.dataTask(with: request) {
(data: Data?, response: URLResponse?, error: Error?) in
if error != nil {
NSLog("Client-side error in request to \(url): \(error)")
completion(nil)
return
}
if data == nil {
NSLog("Data from request to \(url) is nil")
completion(nil)
return
}
let httpResponse = response as? HTTPURLResponse
if httpResponse?.statusCode != 200 {
NSLog("Server-side error in request to \(url): \(httpResponse)")
completion(nil)
return
}
let encodingName = response?.textEncodingName != nil ? response?.textEncodingName : "utf-8"
let encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding(encodingName as CFString!))
let stringData = String(data: data!, encoding: String.Encoding(rawValue: UInt(encoding)))
session.invalidateAndCancel()
completion(stringData)
}
task.resume()
}
gọi theo:
override func viewDidLoad() {
super.viewDidLoad()
makeRequestViaUrlSessionProxy("https://api.ipify.org?format=json") { string in
print(string)
}
}
Nó có vẻ như các config
là hoàn toàn bỏ qua bởi vì ngay cả với tạo Proxy IP, IP trả lời luôn luôn là các thiết bị thực tế IP
Bất kỳ sự giúp đỡ rất đánh giá cao.
Chỉnh sửa: theo đề xuất của Người dùng hasan83, việc "khóa HTTPS" có vẻ không phải là một tùy chọn.
hello, 142.54.173.19 ip này là có địa chỉ IP, router hoặc khác. ? –