gpt4 book ai didi

ios9 - NSURLSession是否自动发送用户代理

转载 作者:行者123 更新时间:2023-12-01 13:33:40 26 4
gpt4 key购买 nike

当用户WatchKit 2.0,iOS 9.0时,NSURLSession是否自动发送用户代理?
有没有办法在WatchKit应用程序中对此进行验证?

最佳答案

是的,将自动提供用户代理作为默认 session 配置的一部分。

默认的NSURLSession请求 header User-Agent字段包括watchOS应用程序扩展的捆绑包名称(CFBundleName)和内部版本号(CFBundleVersion):

$(CFBundleName)/$(CFBundleVersion) CFNetwork/808.3 Darwin/16.3.0

请注意,不包括您应用的版本号( CFBundleShortVersionString)。 (有关更多信息,请参见 Technical Note TN2420: Version Numbers and Build Numbers。)

例如,对于内部版本号为1的产品“Foo”,您的用户代理为:
Foo%20WatchKit%20Extension/1 CFNetwork/808.3 Darwin/16.3.0

如何验证?

我认为您的应用程序中没有方法可以检查默认用户代理字段,因为它是 nil(除非您将其设置为自定义值)。

但是,您可以使用netcat来检查模拟器发送的请求。
  • 在终端中运行nc -l 5678,让netcat监听端口localhost上发送到5678的请求
  • 在应用程序的Info.plist文件中,添加“应用程序传输安全设置”字典,将“允许任意加载”键设置为YES
  • 将以下代码添加到application(_:didFinishLaunchingWithOptions:)的开头
    let url = URL(string: "http://localhost:5678/")!
    URLSession.shared.dataTask(with: url) { (data, response, error) in
    let body = String(data: data!, encoding: .utf8)!
    print("body: \(body)")
    }.resume()
    return true
  • 在模拟器中运行您的应用程序,然后在终端
  • 中查看哪些netcat输出

    如果您的隐私无关紧要,则可以使用 user-agent.me之类的服务在您的设备上进行测试。
  • 将上面的localhost:5678替换为user-agent.me
  • 在设备上运行您的应用程序
  • 检查Xcode的控制台输出

  • 完成验证后,请记住撤消上述所有更改。

    关于ios9 - NSURLSession是否自动发送用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379347/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com