refer to: https://github.com/wappalyzer/wappalyzer
very good~

register ( no need ... )
9$ / month
github:
git clone https://github.com/wappalyzer/wappalyzer.git
cd wappalyzer
yarn install
yarn run link
usage:
node src/drivers/npm/cli.js https://siwei.me
result:

do some test: ( run as rails script )
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'production'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'rails'
require 'rubygems'
require 'httparty'
require 'csv'
puts "== install wappalyzer from: https://github.com/wappalyzer/wappalyzer"
WAPPALYZER = "node /workspace2/coding_tools/wappalyzer/src/drivers/npm/cli.js"
def run url, server
command = "#{WAPPALYZER} https://#{url}"
result = `#{command}`
puts "== result: #{result.inspect}"
puts "== result.urls: #{JSON.parse(result)['urls'].inspect}"
key = JSON.parse(result)['urls'].keys[0]
puts "== key is: #{key}"
if JSON.parse(result)['urls'][key]['status'] < 400
server.update wappalyzer_result: result
else
command = "#{WAPPALYZER} http://#{url}"
result = `#{command}`
server.update wappalyzer_result: "https is not available,
" + result
end
end
all_servers = Server.all.order('id desc')
all_servers.each_slice(10) do |servers|
threads = []
servers.each do |server|
threads << Thread.new do
puts "site: #{server.name}, id: #{server.id}"
run server.name, server
end
end
threads.each {|t| t.join }
sleep 10
end

result looks very good: 
some practice: CPU may got high if run multiple threads

caution:
it tops when executing mass tasks. ( multiple thread )
maybe because this PC only has 4 core CPU
