uBlockOrigin / uBlock-issues

This is the community-maintained issue tracker for uBlock Origin
https://github.com/gorhill/uBlock
916 stars 78 forks source link

Prevent cookie lists from being selected at the same time #3231

Open ghost opened 3 months ago

ghost commented 3 months ago

Prerequisites

I tried to reproduce the issue when...

Description

AdGuard/uBO – Cookie Notices and EasyList/uBO – Cookie Notices have filters that reload webpages after changing cookie values.

If they're programmed to set cookies to different values, this may cause an infinite refresh loop.

Consider adding a check to prevent them from being selected at the same time. This would prevent conflicts without having to remove either list from the extension.

If a user has selected EasyList/uBO – Cookie Notices, and then click on AdGuard/uBO – Cookie Notices , the extension will deselect EasyList/uBO – Cookie Notices, and vice-versa.

A specific URL where the issue occurs.

See https://github.com/uBlockOrigin/uAssets/issues/23562

Steps to Reproduce

-

Expected behavior

-

Actual behavior

-

uBO version

1.57.2

Browser name and version

Firefox 125.0.3

Operating System and version

Hannah Montana Linux

jackrjli commented 3 months ago

This kind of breakage can occur with any list that uses set-cookie/set-cookie-reload. Making people choose either AdGuard or EasyList Cookie Notices wouldn't solve the issue beyond this particular case, and would get in the way of people with legitimate reasons to use both lists (they don't cover all the same sites).

u-RraaLL commented 3 months ago

I wonder if uBO should discard a second filter trying to set the same cookie just as if it were an exact duplicate.

stephenhawk8054 commented 3 months ago

There were actually other issues prior to the above case with 2 cookie lists conflicted to each other. I agree with the solution of only choosing 1 list for cookie. Other lists can use set-cookie but these 2 setlists are the ones using it the most extensively and can highly likely cause conflictions, especially when this is the only scriptlet with a reload option which can cause more severe issue than other filters.

We don't encourage users to enable more lists to cover different sites any way, and all of the breakages will just be reported to uBO volunteers to solve. Breakage is always a more important issue than lack of sites' coverages. Reporting to respective list maintainers is the correct way to solve the latter.

u-RraaLL commented 3 months ago

Agreed. In this particular case, though, the user had a custom AG Annoyance added to his lists (instead of enabled AG Cookie Notices itself), so the issue would've still arisen.

stephenhawk8054 commented 3 months ago

Yes, I think we can just try to cover the most obvious/popular case here since it's impossible to cover all edge cases (even the same list can have same issue if there are some mistakes)

gorhill commented 3 months ago

Consider adding a check to prevent them from being selected at the same time. This would prevent conflicts without having to remove either list from the extension.

This would make it difficult to diagnose filter issues since whichever one takes effect first is undetermined.

garry-ut99 commented 3 months ago

The most conflicts are between EasyList cookies and AdGuard cookies, but on the other hand the both lists are reasonably unique and are good supplements to each other, hence forcing to "enable only one cookie list at once" will significantly reduce the effectiveness of blocking cookie notices, the optimal solution would be to fix conflicts at set-cookie scriptlet level if possible.

krystian3w commented 3 months ago

In the past set-constant was similar breakage: https://github.com/uBlockOrigin/uBlock-issues/issues/156#issuecomment-709423918

ghost commented 3 months ago

This would make it difficult to diagnose filter issues since whichever one takes effect first is undetermined.

My proposal is to make it possible to select only one of them in the GUI.

By "without having to remove either list from the extension", I meant "without having to remove them from the list of available lists" (in the other issue, someone hinted that you should remove the AdGuard list from uBlock Origin altogether).

gorhill commented 1 month ago

Originally, a long time ago, the AdGuard lists were introduced as stock lists because EasyList lists didn't support extended filtering syntax, limiting itself to only ABP-compatible syntax. It has been a while now that EasyList supports extended syntax, and it might be that AdGuard's lists are no longer needed -- so maybe we should just remove them as stock lists? (Except where there is no alternative)

dportvine commented 1 month ago

As far as I can see, the problem will only be with the rules for mobile. Rules for them can be added to EasyList and regional lists. If this is a complex case, add it to uBlock filters.

garry-ut99 commented 1 month ago

AdGuard filter lists are good supplements for EasyList/uBlock filter lists because they cover big amount of unique websites not covered by EasyList/uBlock filter lists, these websites can be covered in EasyList/uBlock over time, but it will take months or years for EasyList/uBlock filter lists to catch up the similiar coverage. Statistics show that 36% of uBlock users have at least 1 AdGuard filter list enabled.

On the other hand, keeping AdGuard lists in uBlock, causes occasional conflicts/breakages, and inhibits the growth rate of EasyList/uBlock own filters, because less sites are reported to EasyList/uBlock's filter trackers, by users who have AdGuard lists enabled. Removing AdGuard lists from uBlock will cause some of these users to re-add AdGuard lists via "Import" list feature, but some other users will not re-add and will start reporting uncovered sites to EasyList/uBlock filter trackers, helping and assisting in the growth of EasyList/uBlock own filters.

The explanation of why AdGuard dominated EasyList/uBlock filter lists, in number of websites, is:

it caused AdGuard to achieve a massive amount of websites reported: ~170000 issues reported on their AdGuard filter tracker, compared to ~41000 on [ EasyList (~21000) + uAssets (~20000) ] filter trackers combined.

(the calculations for EasyList-related filter reports are the following: 1502 in Fanboy old tracker + [ 7430 in EasyList new tracker + 22923 EasyList forum tracker 1 + 8157 EasyList forum tracker 2 ] / 2 = 1502 + 38510 / 2 = ~21000, it has been divided by 2 because we need to exclude websites reports related to main EasyList, which I don't know how many % it is, so I just blind-shooted to be 50%, because it would be too difficult and time-consuming to calculate precisely).

Now is time to decide: either EasyList/uBlock still includes AdGuard useful lists, or drop them to fix conflicts and to grow faster on its own at the cost of a noticeable reduction in effectiveness (amount of websites covered).

Marko-98 commented 3 weeks ago

Just stumbled upon this issue and was thinking about reporting it. Now I see I'm not the only one...

https://github.com/user-attachments/assets/fc26f3f2-1e06-4223-8412-3d02105c92bf

krystian3w commented 3 weeks ago

That is correct, GDPR at this page block load videos: https://github.com/AdguardTeam/AdguardFilters/issues/137106

Therefore, you should check how to unblock the video in EasyList Cookies to eventually finally repair the player in uBo Cookie Notices.

Marko-98 commented 2 weeks ago

That is correct, GDPR at this page block load videos: AdguardTeam/AdguardFilters#137106

Therefore, you should check how to unblock the video in EasyList Cookies to eventually finally repair the player in uBo Cookie Notices.

Huh, I didn't realize the videos aren't working (I'm not visiting this website often). But I will open an issue on uAssets regarding this.

Edited: Issue reported here.