summarylogtreecommitdiffstats
path: root/get_nessus_link.rb
blob: 335facef894715ca4cfbb554c16aca8a0631fda6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env ruby
# frozen_string_literal: true

# To install the prerequisites, use the command below:
#   pacman -S ruby-nokogiri

require 'json'
require 'nokogiri'
require 'open-uri'

def get_json
  res = URI.open('https://www.tenable.com/downloads/nessus')
  doc = Nokogiri::HTML(res)
  json = doc.at_css('#__NEXT_DATA__').content
  JSON.parse(json)
end

def get_link
  data = get_json
  url, filename = nil
  downloads = data['props']['pageProps']['page']['downloads']
  downloads.each do |download|
    filename = download['file']
    if filename.end_with?('-fc38.x86_64.rpm')
      url = "https://www.tenable.com/downloads/api/v1/public/pages/nessus/downloads/#{download['id']}/download?i_agree_to_tenable_license_agreement=true"
      break
    end
  end
  raise 'Cannot find a download link!' if url.nil?

  puts filename
  puts url
end

get_link if __FILE__ == $PROGRAM_NAME