Urlscan 1.3.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package Urlscan --version 1.3.3
NuGet\Install-Package Urlscan -Version 1.3.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Urlscan" Version="1.3.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Urlscan --version 1.3.3
#r "nuget: Urlscan, 1.3.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Urlscan as a Cake Addin
#addin nuget:?package=Urlscan&version=1.3.3

// Install Urlscan as a Cake Tool
#tool nuget:?package=Urlscan&version=1.3.3

Urlscan

alternate text is missing from this package README image

🔎 An async and lightweight C# library for interacting with the Urlscan API.

Usage

Available on NuGet as Urlscan, methods can be found under the classes UrlscanClient and LiveClient.

https://www.nuget.org/packages/Urlscan

Obtaining API keys

API keys can be created in the user section Settings & API

Secure identifier SID cookies can be obtained from your browser's cookie storage. Make sure to only copy the value, without the name!

Features

  • Made with .NET 6
  • Fully async
  • Extensive documentation
  • Coverage of the free API endpoints, including some user-only and beta routes
  • No external dependencies (uses integrated HTTP and JSON)
  • Custom exceptions (UrlscanException) for advanced catching
  • Automatic ratelimit handling and request retries
  • Example project to demonstrate all capabilities of the library
  • Scan suspicious URLs and submit verdicts on them
  • Download screenshots and page DOMs
  • Empower your threat intelligence with live scans through LiveClient

Example

Under the Example directory you can find a working demo project that implements this library.

Code Samples

Initializing a new API client

UrlscanClient client = new("d339bf51-9bc7-4d6a-a960-a264896b1891");

Getting the current user

User user = await client.GetCurrentUser();

Submitting a new scan

Submission subm = await client.Scan(new ScanParameters()
{
    Url = "https://example.com",
    Tags = new string[] { "test" },
    Country = ScanCountry.FI,
    UserAgent = "My-Custom-Scanner/1.0.0",
    OverrideSafety = false,
    Referer = "https://google.com",
    Visibility = Visibility.Public
});

Polling a submission for the result

Result res = await client.Poll(subm);

Getting similar scans

SimilarScan[] similar = await client.GetSimilarScans("bc1ef5f2-eddc-40ae-86c9-fb5894b5d1f2");

Processing newly created scans in real time

LiveClient live = new();
live.UrlScanned += (sender, scan) =>
{
    Console.WriteLine(scan.Task.URL[..Math.Min(scan.Task.URL.Length, 50)]);
};

Adding a verdict to a scan

await client.AddVerdict(new VerdictParameters()
{
    UUID = "8964cc71-ea31-476c-ba8f-863bf4bf6b2f",
    Comment = "Running a Discord phishing scam with Discord HypeSquad as their target.",
    Scope = VerdictScope.PageDomain,
    ScopeValue = "contact-hype-testers.com",
    ThreatTypes = new ThreatType[]
    {
        ThreatType.Phishing,
        ThreatType.BrandImpersonation
    },
    Brands = new string[]
    {
        "Discord"
    },
    Verdict = VerdictType.Malicious
});

Available Methods

  • Task AddVerdict(Result result, VerdictScope scope, VerdictType type, string comment, string[] brands, ThreatType[] threats)
  • Task AddVerdict(string uuid, VerdictScope scope, string scopeValue, VerdictType type, string comment, string[] brands, ThreatType[] threats)
  • Task AddVerdict(VerdictParameters parameters)
  • Task<byte[]> DownloadScreenshot(Result result)
  • Task<byte[]> DownloadScreenshot(string uuid)
  • Task<byte[]> Liveshot(string url, int width = 1280, int height = 1024)
  • Task<Result> GetResult(string uuid)
  • Task<Result> Poll(string uuid, int delay = 5000, int interval = 2000)
  • Task<Result> Poll(Submission submission, int delay = 5000, int interval = 2000)
  • Task<SearchResult[]> Search(string query, int amount = 100)
  • Task<SimilarScan[]> GetSimilarScans(string uuid)
  • Task<Stats> GetStats()
  • Task<Stream> DownloadScreenshotStream(string uuid)
  • Task<Stream> LiveshotStream(string url, int width = 1280, int height = 1024)
  • Task<string> DownloadDOM(Result result)
  • Task<string> DownloadDOM(string uuid)
  • Task<Submission> Scan( string url, string[] tags = null, string userAgent = null, string referer = null, bool overrideSafety = false, Visibility visibility = Visibility.Public, ScanCountry country = ScanCountry.Auto )
  • Task<Submission> Scan(ScanParameters parameters)
  • Task<User> GetCurrentUser()

Available Events

  • EventHandler<LiveScan> UrlScanned

https://urlscan.io

https://twitter.com/urlscanio

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.4.0 167 11/25/2023
1.3.7 392 12/18/2022
1.3.6 323 11/20/2022
1.3.5 342 11/17/2022
1.3.4 368 10/28/2022
1.3.3 394 10/25/2022
1.2.3 399 10/22/2022
1.2.2 390 10/22/2022
1.1.2 431 7/31/2022
1.1.1 425 7/18/2022
1.0.1 453 6/23/2022
1.0.0 426 6/22/2022