AdguardTeam / AdguardFilters

AdGuard Content Blocking Filters
https://adguard.com/
GNU General Public License v3.0
3.2k stars 636 forks source link

dnvod.tv #9156

Closed adguard-bot closed 6 years ago

adguard-bot commented 6 years ago

Issue URL (Anti Adblock Script)

http://www.dnvod.tv/Movie/Readyplay.aspx?id=HhYMLfBFj64%3d

Comment

It seems that this site detects the existence of AdGuard and then display a visual blocker in front of the video. The video itself runs behind the visual blocker.

Screenshots

Screenshot 1 ![Screenshot 1](https://reports-img.adguard.com/Y3Lg0qp.jpg)

System configuration

Information value
Platform: Ext
AdGuard version: 2.7.3
Browser: Firefox
Filters: English,
EasyList China
BlazDT commented 6 years ago

Unsure how to fix it for non App versions.

@seanl-adg Can you please check.

adguard-bot commented 6 years ago

Issue URL (Anti Adblock Script)

https://www.dnvod.tv/Movie/Readyplay.aspx?id=N%2bN0T7Wd7m4%3d

Comment

Screenshots

Screenshot 1 ![Screenshot 1](https://reports-img.adguard.com/7ExURFF.png)

System configuration

Information value
Platform: Ext
AdGuard version: 2.8.4
Browser: Chrome
Filters: Russian,
Filter unblocking search ads and self-promotion,
EasyList China,
EasyList Czech and Slovak,
EasyList Italy,
Liste FR,
Turkish,
French,
English,
Adblock & uBlock polish,
Adblock & uBlock polish filter - Adguard supplement,
Spyware,
Social media,
German,
Japanese,
Dutch,
Spanish/Portuguese
Alex-302 commented 6 years ago

Can't reproduce. Please try to disable EasyList Czech and Slovak, EasyList Italy, Liste FR, Adblock & uBlock polish, Adblock & uBlock polish filter - Adguard supplement

fireincairo00 commented 6 years ago

hullo I am the original reporter of this issue. It seems to be a hard problem since it's been open for a while. This can be reproduced 100%, no need to disable any filters, I had only two English, EasyList China.

Though I noticed since after certain update of Chrome or Firefox, you might need to re-enable running adobe flash plugin when you go to the issue link. Just click the link the screen shows (it shows Chinese, meaning "install Adobe Flash plugin", but when you click on it, Browser will ask you permission to run Flash for this site). Once it's enabled, you will see the reported issue.

Alex-302 commented 6 years ago

Damn. It is impossible)

Please check these rules one-by-one:

@@||dnvod.tv^$elemhide,important
@@||dnvod.tv^$urlblock,important
fireincairo00 commented 6 years ago

Hi I just tried both rules, one by one. It caused a popup window right away saying I am using ad blocking stuff. It seems it's even easier for the website zu detect adguard.

Let me re-iterate the original error: the site runs a ad video for 70 seconds before each video starts. Adguard seems to reduce the count-down time to 2 seconds (counting down really quickly). Then the screen I posted shows up saying I am using some ad blocking stuff and refuses to play the video. Maybe the site is checking the time the ad video has been running? Could you see what data they send back to the server?

Alex-302 commented 6 years ago

Ok. Please check @@dnvod.tv/_player/*/ckplayer.js$replace=/cpt\+='skipads.swf\,0\,0\,0\,0\,2\,0\|';//,domain=dnvod.tv Video ad will be unblocked.

fireincairo00 commented 6 years ago

sorry hate to say this: just check the new rule as below in Firefox capture

Same result - the video running but covered by the visual block.

capture

adguard-bot commented 6 years ago

Issue URL (Anti Adblock Script)

http://www.dnvod.tv/

Comment

Screenshots

Screenshot 1 ![Screenshot 1](https://reports-img.adguard.com/XztiHOU.png)

System configuration

Information value
Platform: Ext
AdGuard version: 2.8.4
Browser: Chrome
Filters: EasyList China,
English
Alex-302 commented 6 years ago

Sadly, I can't reproduce. @AdamWr can you reproduce it on your end? Maybe we should to [partially]exlude this site for browser extensions.

AdamWr commented 6 years ago

I can reproduce it with AdGuard Extension if I enable EasyList China but after 70 seconds I can watch video, so I think the main problem is timer. With AdGuard for Windows it works fine.

Screenshots With AdGuard ![image](https://user-images.githubusercontent.com/29142494/35625158-890763c6-0691-11e8-8e2a-355142654cee.png) Without AdGuard ![image](https://user-images.githubusercontent.com/29142494/35625234-e7f2bad4-0691-11e8-8491-0cf09008cd82.png)
fireincairo00 commented 6 years ago

Hi AdamWr, you are right, one needs the EasyList China, otherwise the ad will be running for 70 sec before the video starts. But with EasyList China, the video starts to run almost right away since the timer counts down quickly, but the video is then covered with this visual blocker until the 70 sec is over. So either way it defeats Adguard for its purpose.

If this is a good way to fight Ad Blockers, I am afraid soon other sites will follow suit.

zhangxiubo commented 6 years ago

Alright, I was curious how they managed to do it and dug around a little bit.

Their trick is to let the Flash video player load the anti-block as a swf clip and play it before / on top of the actual video.

More specifically, the website uses a Flash video player called ckplayer (loaded as ckplayer.swf on the page). Upon loading, the player requests a configuration file called ckplayer.js from the server. One can see several swf files being specified in ckplayer.js. I hijacked the javascript and removed those lines from the configuration, cleared the cache, and reloaded the page --- the anti-block is now removed.

I believe @Alex-302 already suspected this. However it seems skipads.swf is not the only culprit --- blocking all the swf should work.

Hope this helps.

fireincairo00 commented 6 years ago

Hi @zhangxiubo, is there any rule that really works like blocking all the swf? The rules provided by Alex only resulted in a screen telling me I have some adblockers installed with movie running beneath that screen.

zhangxiubo commented 6 years ago

Hello @fireincairo00, unfortunately I am not very familiar with writing ad-blocker rules but I used a Chrome extension called Resource Override to hijack the loading of the scripts --- you can download ckplayer.js, remove the lines, and configure the extension to replace the original ckplayer.js with your modified copy. Hopefully someone who's more experienced with ad-blocker's rules can come up with a proper solution that works for uBlock / Adblock Plus.

fireincairo00 commented 6 years ago

Hi @zhangxiubo , thanks for the info, really appreciate it. Will try the extension first.

Alex-302 commented 6 years ago

@zhangxiubo Hi. Which lines was removed/changed?

zhangxiubo commented 6 years ago

@Alex-302 These are pretty-printed; please see the commented lines.

function ckcpt() {
    var cpt = '';
    // cpt += 'right.swf,2,1,0,0,2,0|';
    // cpt += 'share.swf,1,1,-180,-100,3,0|';
    // cpt += 'adjustment.swf,1,1,-180,-100,3,0|';
    // cpt += 'scaling.swf,0,0,0,0,2,0|';
    // cpt += 'skipads.swf,0,0,0,0,2,0|';
    return cpt;
}
function ckstyle() {
    var ck = {
        cpath: '',
        language: '',
        flashvars: '',
        setup: '1,1,1,1,1,0,0,1,0,0,0,1,200,0,2,1,0,1,1,1,0,10,3,0,0,2,3000,0,0,0,0,1,1,1,1,1,1,250,0,90,0,0,0',
        pm_bg: '0x000000,100,230,180',
        mylogo: 'null',
        pm_mylogo: '1,1,-100,-55',
        logo: 'cklogo.png',
        pm_logo: '0,0,20,20',
        // control_rel: 'related.swf,ckplayer/related.xml,0',
        // control_pv: 'Preview.swf,105,2000',
        pm_repc: '',
        pm_spac: '|',
        pm_fpac: 'file->f',
        pm_advtime: '2,0,-110,10,0,300,0',
        pm_advstatus: '1,2,2,-200,-40',
        pm_advjp: '1,1,2,2,-100,-40',
        pm_padvc: '2,0,-10,-10',
        pm_advms: '2,2,-46,-56',
        pm_zip: '1,1,-20,-8,1,0,0',
        pm_advmarquee: '1,2,50,-60,50,20,0,0x000000,50,0,20,1,30,2000',
        pm_glowfilter: '1,0x01485d, 100, 6, 3, 10, 1, 0, 0',
        // some lines omitted here ....
        mainfuntion: '',
        flashplayer: '',
        calljs: 'ckplayer_status,ckadjump,playerstop,ckmarqueeadv',
        myweb: escape(''),
        cpt_lights: '0',
        cpt_share: 'ckplayer/share.xml',
        cpt_list: ckcpt()
    }
    return ck;
}
Alex-302 commented 6 years ago

@AdamWr , @zhangxiubo please check this rule

||dnvod.tv/_player/*/ckplayer.js$replace=/\,control_rel:\'related.swf\,ckplayer\/related.xml\,0\'\,control_pv:\'Preview.swf\,\d+\,\d+'/,important

it works in desktop apps only

AdamWr commented 6 years ago

On my end current rule from English filter works fine in AdGuard for Windows.

Maybe these rules will be work in extension (second rule is from EasyList China): dnvod.tv#%#AG_onLoad(function() { window.ckcpt = function() {}; }); ||dnvod.tv^*.jpg$object-subrequest,domain=dnvod.tv

fireincairo00 commented 6 years ago

@AdamWr: I tried with both rules added as user rules it works, with only the first rule enabled, it works too.

the site's pictures are gone but links still usable. Maybe the javascript that was emptied by the rule is also responsible to load the pics, but anyway I can turn off the guard when picking movies and turn it on when viewing it, no big deal.

@AdamWr @Alex-302 @zhangxiubo : Thanks a ton for this. Really really appreciate it! Great work!

To summarize: the rules to use:

dnvod.tv#%#AG_onLoad(function() { window.ckcpt = function() {}; }); ||dnvod.tv^*.jpg$object-subrequest,domain=dnvod.tv

AdamWr commented 6 years ago

It seems that images was blocked by this rule: ||static.dnvod.tv/upload/video^$domain=dnvod.tv,image I removed that rule. Added to English filter: ||static.dnvod.tv/upload/video/*.jpg$domain=dnvod.tv,image ||dnvod.tv^*.jpg$object-subrequest,domain=dnvod.tv dnvod.tv#%#AG_onLoad(function() { window.ckcpt = function() {}; });

Update will be available in 2-3 hours. Please, check the result.

fireincairo00 commented 6 years ago

Hi @AdamWr , thanks. Just updated the filter and it works better now, though some pictures still get blocked (seems mostly old movie entries, maybe they used a different style), but most of them are shown. I still need to add both rules as user rule for the video part to work, strang since you added it in the English filter and I had all three filters updated.

anyway with the previous two rules as user rule, almost everything works. Before the filter update I even only need "dnvod.tv#%#AG_onLoad(function() { window.ckcpt = function() {}; });". The whole thing seems really tricky to me. :-)

AdamWr commented 6 years ago

Hi,

I guess that you are using Firefox. As far as I know AdGuard Extension for Firefox (downloaded from addons.mozilla.org) unfortunately can't update/download new JS (#%#) rules, so it is probably a reason why you need it in user filter. I don't know why you need second rule in user filter, it is in English filter, so it should work.

some pictures still get blocked

Ok, I fixed it, now should be okay.

fireincairo00 commented 6 years ago

yes am using firefox. After today's update, I only need the first rule again, maybe the update was not in last update. I will test Chrome later and post the result here.

fireincairo00 commented 6 years ago

@AdamWr I just updated the filter and tested on Chrome - everything works without the user rule. Thanks a lot for this!