What do you mean "monitor URL"? you can monitor all HTTP packages, for sure. And then you could filter them somehow. URL's may appear in different parts of request, not only main address (the "host" field), but in referrer, content itself, and so on. There are different plug-ins for browsers you can use. If you want to monitor it from browser, this is what you can use. If this is what you want, address to the documentation on each particular browser or use available plug-ins.
If you are talking about ASP.NET, apparently, you can monitor all requests to some page only because all HTTP requests come to this page anyway. You can log this information anywhere (usually, relational databases are used) and provide access to this log on this or some other pages. Please see:
https://msdn.microsoft.com/en-us/library/system.web.httprequest%28v=vs.110%29.aspx.
You cannot get MAC address of a remote computer, of course. I don't mean rare cases when the client from the same network segment as the HTTP server (see also
http://stackoverflow.com/questions/3309122/how-can-i-get-a-mac-address-from-an-http-request).
—SA