Skip to content

Protect your users against malware and phishing threats using Google Safe Browsing

License

Notifications You must be signed in to change notification settings

alexruperez/SafeBrowsing

Repository files navigation

SafeBrowsing

Twitter Version License Platform Swift Carthage compatible Swift Package Manager Compatible Build Status codecov

Protect your users against malware and phishing threats using Google Safe Browsing

SafeBrowsing

๐ŸŒŸ Features

  • Check multiple URLs asynchronously
  • Check single URL asynchronously
  • Check single URL synchronously
  • Open URL in Safari only if it's safe
  • UIApplication extension
  • UIViewController extension
  • SFSafariViewController compatible

๐Ÿ“ฒ Installation

SafeBrowsing is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'SafeBrowsing'

Or you can install it with Carthage:

github "alexruperez/SafeBrowsing"

Or install it with Swift Package Manager:

dependencies: [
    .package(url: "https://github.com/alexruperez/SafeBrowsing.git", from: "0.1.0")
]

๐Ÿ›  Configuration

Required configuration

Just enable Google Safe Browsing API and get your API key.

SafeBrowsing.apiKey = "YOUR_API_KEY_HERE"

Advanced optional configuration

You can easily customize threat types, platform types or threat entry types.

SafeBrowsing.clientId = "YOUR_CLIENT_ID" // By default your bundle identifier.
SafeBrowsing.clientVersion = "YOUR_CLIENT_VERSION" // By default your bundle short version.
SafeBrowsing.threatTypes = [.malware, .socialEngineering, .unwantedSoftware, .potenciallyHarmfulApplication]
SafeBrowsing.platformTypes = [.any]
SafeBrowsing.threatEntryTypes = [.url, .executable]

๐Ÿ’ Usage

Check multiple URLs asynchronously:

SafeBrowsing.isSafe([anURL, anotherURL]) { isSafe, error in
    // Your code here
}

Check single URL asynchronously:

SafeBrowsing.isSafe(anURL) { isSafe, error in
    // Your code here
}

Check single URL synchronously:

Caution: Don't call it in main thread
if SafeBrowsing.isSafe(anURL) {
    // Your code here
}

Open URL in Safari only if it's safe:

SafeBrowsing.safeOpen(anURL) { opened, error in
    // Your code here
}

Open URL in SFSafariViewController only if it's safe:

SafeBrowsing.safeOpenInSafariViewController(anURL, over: aViewController, animated: true) { opened, error in
    // Your code here
}

UIApplication extension

Yes, you can use SafeBrowsing with UIApplication, just like open(_:options:completionHandler:) method works.

You also have all isSafe(_:) methods available with this extension.

UIApplication.shared.safeOpen(anURL) { opened, error in
    // Your code here
}

Open URL in SFSafariViewController only if it's safe:

UIApplication.shared.safeOpenInSafariViewController(anURL, over: aViewController, animated: true) { opened, error in
    // Your code here
}

UIViewController extension

aViewController.safeOpenInSafariViewController(anURL, animated: true) { opened, error in
    // Your code here
}

Testing Google Safe Browsing

let testingURL = URL(string: "http://malware.testing.google.test/testing/malware/")!
SafeBrowsing.isSafe(testingURL) { isSafe, error in
    print(error.debugDescription)
}

โค๏ธ Etc.

  • Contributions are very welcome.
  • Attribution is appreciated (let's spread the word!), but not mandatory.

๐Ÿ‘จโ€๐Ÿ’ป Authors

alexruperez, [email protected]

๐Ÿ‘ฎโ€โ™‚๏ธ License

SafeBrowsing is available under the MIT license. See the LICENSE file for more info.