我正在尝试在用户访问Safari网站时检索网址。
我有想法使用内容拦截器,但我找不到任何方法来获取blockList.json
文件中的网站网址。
我尝试在ContentBlockerRequestHandler类中打印一些东西,但什么都没发生。
这是班级:
class ContentBlockerRequestHandler: NSObject, NSExtensionRequestHandling {
func beginRequest(with context: NSExtensionContext) {
let attachment = NSItemProvider(contentsOf: Bundle.main.url(forResource: "blockerList", withExtension: "json"))!
print("test")
let item = NSExtensionItem()
item.attachments = [attachment]
context.completeRequest(returningItems: [item], completionHandler: nil)
}
}
是否存在替代解决方案,或解决方案是什么?
由于
答案 0 :(得分:1)
更新:您可以通过选择html标记来制作动作并触发并阻止页面上的所有内容。您无法获取用户所在的网址,因为这是违反隐私的行为。相反,你有预定义的规则,关于safari应该如何以及何时阻止某些内容 因此,如果您想隐藏整个页面,可以使用json规则:
~http(?<=\bhttp)s?://[^/]+/[ti]/[^/]+/\S+~
上面通过不显示来阻止html标签中的所有内容。 然后使用触发器字典:
"action":{
"type": "css-display-none"
"selector": "#html"
}
"trigger": {
"if-domain": ["domaintoblock.com", "blocktodomain.org"]
"url-filter": ".*"
}
是您要阻止的网站列表,if-domain
指定&#34;加载时要应用的资源&#34; - 来源1。
以上仅隐藏元素。如果您想阻止加载,请在您的操作中使用url-filter
。请参阅WWDC视频中的6:25。内容拦截器只是JSON数组规则。要为项目添加目标,请执行以下操作:应用程序扩展&gt;内容拦截器扩展。每次加载Safari时,您的应用扩展程序都会加载它的字节码,您必须在"type": "block"
中为Safari提供blockerList.json。请参阅WWDC视频中的9:29。从那里你就完成了,它是自动的。这应该足以让你开始。如果我帮忙,请告诉我。谢谢你们:)
有关内容阻止的详细信息,请参阅https://developer.apple.com/videos/play/wwdc2015/511/。有关更详细,更难的示例,请参阅https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AppExtensionKeys.html
上一次发布
您可以考虑查看Safari Extensions。他们有一个方便的事件,可能会使您受益。在页面加载之前调用beginRequestWithExtensionContext(context: NSExtensionContext)
。您可以使用另一种名为SafariBeforeNavigateEvent
的方法来阻止页面加载。因此,将此与preventDefault()
文件结合使用,可以检查被调用的事件是否具有blockList.json中的url。您需要首先将JSON解析为对象才能使用它。从那里它只是事件处理程序中的blockList.json
。您需要for loop
的另一个属性SafariBeforeNavigateEvent
。如果这有帮助,请告诉我,谢谢:)
https://developer.apple.com/documentation/safariextensions/safaribeforenavigateevent https://developer.apple.com/documentation/safariextensions/safarievent/1635502-preventdefault https://developer.apple.com/documentation/safariextensions/safarievent https://developer.apple.com/documentation/safariextensions