Sha256: 3c2ab09180dcd0fe2c0e45d5a5114d95e59f6d2ee5b773e01d8300b4c491a216

Contents?: true

Size: 823 Bytes

Versions: 4

Compression:

Stored size: 823 Bytes

Contents

# frozen_string_literal: true

require "urlscan"

module Mihari
  module Analyzers
    class Urlscan < Base
      attr_reader :api
      attr_reader :title
      attr_reader :description
      attr_reader :query
      attr_reader :tags

      def initialize(query, tags: [])
        super()

        @api = ::UrlScan::API.new
        @query = query
        @title = "urlscan lookup"
        @description = "query = #{query}"
        @tags = tags
      end

      def artifacts
        result = search
        return [] unless result

        results = result.dig("results") || []
        results.map do |match|
          match.dig "task", "url"
        end.compact.uniq
      end

      private

      def search
        api.search(query)
      rescue ::UrlScan::ResponseError => _e
        nil
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-0.5.1 lib/mihari/analyzers/urlscan.rb
mihari-0.5.0 lib/mihari/analyzers/urlscan.rb
mihari-0.4.2 lib/mihari/analyzers/urlscan.rb
mihari-0.4.0 lib/mihari/analyzers/urlscan.rb