try squid3-dev, marcelloc has added a feature for captiveportal authentication with non transparent proxy, whit this feature squid now gets the username from captiveportal and content filtering with captiveportal usernames by squidguard is now possible, the only issue is to force the clientsto use proxy and it can be done by using wpad/pac function
my solution is
1-use non-transparent proxy
2-block everything except proxy
3-force clients to use autoproxy via wpad/pac feature or set browsers to use my proxy manually
4-so if a client does not configure his browser to use my proxy or not set it to autodedect the proxy, he can not access internet
5-all the web based software must be configured to use proxy too
6-use squidguard to apply content filtering by captiveportal usernames
The one and only problem I am facing is, some java applets(especially games) does not work behind squid, but it can be solved by adding allow rules for every domain that java wants to connect using firewall rules and aliases, and setting the connection method to "direct connection" in windows java settings
and also if you have some php skills, you can modify marcelloc's solution in squid.inc and squid.xml files to be used for transparent proxy too