通过 Tor 创建 URLSession 并访问 .onion 网站。这个 Swift 包是一个使用 Tor 框架的简单 Tor 客户端。
要允许 Tor 连接,请在应用传输安全设置中启用任意加载。
SwiftTor 可用于 iOS 和 macOS。
如果您在 macOS 上使用 SwiftTor,请确保您激活了传入和传出连接。
let tor = SwiftTor()
if tor.state == .connected {
// connected
}else {
// not connected
}
let onionAddress = "http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api/v1/fees/recommended"
let url = URL(string: onionAddress)!
let request = URLRequest(url: url)
let result = try! await tor.request(request: request)
let tor = SwiftTor(hiddenServicePort: 80)
Timer.scheduledTimer(withTimeInterval: 3.7, repeats: false) { _ in
print(tor.onionAddress ?? "No onion address")
}
import SwiftUI
import SwiftTor
struct ContentView: View {
@StateObject var tor = SwiftTor()
@State private var text = ""
@State private var time = 0.0
@State private var requesting = false
var body: some View {
VStack {
Text("Time: \(time) seconds")
Text(text)
Text(tor.state == .connected ? "Tor Connected" : "Tor not connected")
.foregroundColor(tor.state == .connected ? .green : .red)
Button("Tor Request", action: request)
}
}
func request() {
guard tor.state == .connected else {return}
guard self.requesting == false else {return}
self.text = ""
self.requesting = true
self.time = 0.0
Task {
let time1 = Date().timeIntervalSince1970
let onionAddress = "http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api/v1/fees/recommended"
let url = URL(string: onionAddress)!
let request = URLRequest(url: url)
let result = try! await tor.request(request: request)
let time2 = Date().timeIntervalSince1970
self.time = time2 - time1
text = String(data: result.0, encoding: .utf8)!
self.requesting = false
}
}
}