macos - 如何使用 swift 为 osx webview 设置自定义用户代理

标签 macos swift cocoa webview

我在演示中为我的 webview 设置自定义用户代理时遇到问题我只是想将它设置为我的 Safari 用户代理。似乎很难找到如何在基于 swift 的 osx cocoa 应用程序中执行此操作的示例。

这是我的代码:

import Cocoa
import WebKit

class ViewController: NSViewController {

    @IBOutlet weak var webView: WebView!
    @IBOutlet weak var progressIndicator: NSProgressIndicator!

    override func viewDidAppear() {
        super.viewDidAppear()

        self.view.window?.titleVisibility = .Hidden
        self.view.window?.titlebarAppearsTransparent = true
        self.view.window?.styleMask |= NSFullSizeContentViewWindowMask

        let urlString = NSURL(string: "http://whatsmyuseragent.com")

        NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12"])

        self.webView.mainFrame.loadRequest(NSMutableURLRequest(URL: urlString!))
    }

    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }

    override func webView(sender: WebView!, didStartProvisionalLoadForFrame frame: WebFrame!) {
        self.progressIndicator.startAnimation(self)
    }

    override func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) {
        self.progressIndicator.stopAnimation(self)
    }

    override func mouseEntered(event: NSEvent) {

    }

}

我也看到了UIWebView iOS5 changing user-agent给出的代码示例似乎没有做任何事情和/或我把它放在了错误的地方。我有 2 个文件“AppDelegate.swift”和“ViewController.swift”我在这两个文件的不同位置尝试了代码但无济于事。

谢谢!

最佳答案

这方面的重要属性是 WebView customUserAgent:WebView applicationNameForUserAgent:

用新的用户代理字符串替换整个用户代理字符串:

webView.customUserAgent = "MyAgent/1.0.0"

将您的应用字符串附加到现有的用户代理字符串上:

webView.applicationNameForUserAgent = "MyAgent/1.0.0"

更多细节: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DisplayWebContent/Tasks/Spoofing.html

关于macos - 如何使用 swift 为 osx webview 设置自定义用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31839122/

相关文章:

ios - 如何快速解析 Json 文件以获取 2 个 Collection View ?

macos - 直接从我的 OSX 应用程序发送电子邮件

macos - 使用绑定(bind)和结构时自定义 nspopupbutton 标题

ios - Swift:检查用户输入计数以继续

objective-c - NSMetadataQuery 的 NSPredicate 是否匹配包含目标日期的 kMDItemAccessedDates (数组)?

macos - 是否可以为付费 Mac 应用程序提供促销代码(无应用内购买)

Cocoa - 指定 mailto URL 中的内容类型以包含 HTML

objective-c - 创建仅使用非英语语言的应用程序的正确方法

macos - 在 AppleScript 中识别终端窗口

ios - 如何使用 url 而不是本地加载 rtf