Skip to content

Instantly share code, notes, and snippets.

@JackDanger
Forked from isaacs/urlmonitor.rb
Created November 24, 2009 18:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JackDanger/242096 to your computer and use it in GitHub Desktop.
Save JackDanger/242096 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# urlmonitor - print out the URLs requested system wide on the main network interface
# Accept a network interface name as an optional argument
iface = ARGV.first
# No interface specified? Try to guess which one is king..
unless iface
`ifconfig -l`.split.each do |iface|
next if iface =~ /^lo/
break if `ifconfig #{iface}` =~ /inet (0|1|2)/
end
end
# Get tcpdump running, grep out relevant HTTP headers and build them
# in to URLs
STDOUT.sync = true
IO.popen(%{sudo tcpdump -i #{iface} -n -s 0 -w - | grep -a --line-buffered -E "Host\: .*|GET \/.*"}, 'r') do |pipe|
pipe.sync = true
while line = pipe.gets
path = $1.chomp and host = nil if line =~ /GET (.*?)\s/
host = $1.chomp if line =~ /Host: (.*)/
if path && host
puts "http://#{host}#{path}"
path = host = nil
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment