|
123456789101112131415161718192021222324252627282930313233 |
- #!/usr/bin/env ruby
- require 'httparty'
- require 'nokogiri'
- require 'nokogiri-pretty'
- require 'open-uri'
-
- uas = Nokogiri::HTML open 'https://www.ssllabs.com/ssltest/clients.html'
- uas = Hash[uas.css('#multiTable > tr > td:first > a').collect do |ua|
- ua_url = ua.attr :href
- ua = Nokogiri::HTML open "https://www.ssllabs.com/ssltest/#{ua_url}"
-
- name = ua.at_css('h1').text.sub('User Agent Capabilities:', '').strip
- puts name
-
- reports = ua.css '.reportTable'
- protocols = Hash[reports[0].css('tr').collect do |protocol|
- protocol, support = protocol.css 'td'
- next if protocol.attr(:class) == 'tableHead'
- protocol = protocol.text.sub("\xC2\xA0 INSECURE", '').strip
- support = support.text == 'Yes'
- [protocol, support]
- end.reject &:nil?]
-
- ciphers = Hash[reports[1].css('tr').collect do |cipher|
- cipher, size = cipher.css 'td'
- next if cipher.attr(:class) == 'tableHead' or size.nil?
- cipher = /(.*) \(0x(.*)\).*/.match cipher.text
- cipher = ["0x#{cipher[2].upcase.rjust(2, '0')}", cipher[1]]
- end.reject &:nil?]
-
- [name, { protocols: protocols, ciphers: ciphers }]
- end]
- File.write 'config/user-agent.json', JSON.pretty_generate(uas, {indent: "\t"})
|