What you really need is a proxy that will do the filtering at the application layer. There are modules for Squid that offer this, though a quick search is not showing any that don't require recompiling Squid. Alternatively, you could chain your Squid proxy through a proxy that offers the features you want. It could be as simple as a Perl script using HTTP::Proxy, or another language and library of your choice.
Ettercap really isn't the tool for this, though it could probably be made to work. You'll probably have to muck around with the kernel routing tables to get it to work. Try sniffing your traffic in the current configuration: you may find that Ettercap is retransmitting modified frames without dropping the original ones. Also, make sure you have the latest version of Ettercap. It was recently re-released with lots of bug fixes, and I know at least a few had to do with packet filtering. Latest version is 0.7.4.