Class: Miteru::Feeds::UrlScan

Inherits:
Feed
  • Object
show all
Defined in:
lib/miteru/feeds/urlscan.rb

Constant Summary collapse

HOST =
"urlscan.io"
VERSION =
1
URL =
"https://#{HOST}/api/v#{VERSION}"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(size = 100) ⇒ UrlScan

Returns a new instance of UrlScan.

Raises:

  • (ArgumentError)


14
15
16
17
# File 'lib/miteru/feeds/urlscan.rb', line 14

def initialize(size = 100)
  @size = size
  raise ArgumentError, "size must be less than 10,000" if size > 10_000
end

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



13
14
15
# File 'lib/miteru/feeds/urlscan.rb', line 13

def size
  @size
end

Instance Method Details

#urlsObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/miteru/feeds/urlscan.rb', line 19

def urls
  url = url_for("/search/")
  url.query = URI.encode_www_form(
    q: "PhishTank OR OpenPhish OR CertStream-Suspicious",
    size: size
  )

  res = JSON.parse(get(url))
  res["results"].map { |result| result.dig("task", "url") }
rescue HTTPResponseError, JSON::ParserError => e
  puts "Failed to load urlscan.io feed (#{e})"
  []
end