Skip to content

Instantly share code, notes, and snippets.

@fanweixiao
Forked from peterc/urlmonitor
Created March 5, 2012 09:00
Show Gist options
  • Save fanweixiao/1977562 to your computer and use it in GitHub Desktop.
Save fanweixiao/1977562 to your computer and use it in GitHub Desktop.
urlmonitor - print out the URLs requested system wide on the main network interface
# 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 en1 -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