I am using squid as an explicit proxy within my organization to block certain websites in my infrastructure. I have successfully set it up using url_rewrite_program and ssl_bump features and its working like a charm.
The problem is, so far, i am not successful in figuring out the main website url either in squid's access.log or url_rewrite_program. i.e. when user accesses a website say http://www.yahoo.com, a large number of requests to many different hosts are logged and i cannot figure out which website user actually wanted to access. I also tried looking at referer header field and found out most of the time its not set. specially for https connect request.
Is there a neat and clean way to find out which websites are actually visited by users and which urls are actually requested internally by the webpage. Any help will be highly appreciated.
Простой и удобный способ определить, какой сайт посещал пользователь, - это посмотреть на заголовок Host
HTTP-запроса. Если пользователь вводит адрес в адресную строку и браузер пользователя открывает дюжину различных URL-адресов, это означает, что пользователь посещает все эти сайты. Разница между «пользователь посещает сайт» и «браузер посещает сайт» строго философская: браузер посещает сайт по запросу пользователя.
Единственная причина, по которой вы на самом деле не можете быть уверены, какой сайт посещает пользователь, - это случай, когда пользователь заходит на сайт с запросом HTTPS, который squid регистрирует как запрос CONNECT
с IP-адресом сверстник. Но так как вы успешно реализовали sslBump, не должно возникнуть никаких сложностей: для сайтов, на которые смотрели и смотрели, squid точно знает, что это такое. Остальные будут зависеть от ряда факторов.