Adblock Plus and (a little) more

Working towards Adblock Plus for Internet Explorer · 2013-06-19 15:34 by Wladimir Palant

Remember this blog post of mine six years ago? Probably not. But you will certainly be happy to know that I was right: creating a usable ad blocker for Internet Explorer means tons of work. However, the goals of the Adblock Plus project got more ambitious since that post has been written. In order to change the web we need to provide all users with the option to run an ad blocker. This means that we could no longer ignore Internet Explorer and so a few months ago we started working on an Adblock Plus port to Internet Explorer.

The important news first: this work progressed to a point where we can give you development builds that are even usable to some extent — and compatible to Internet Explorer 6! In our tests it worked quite reliably and is a vast improvement over Internet Explorer’s tracking protection lists that are limited to say the least. In particular, Adblock Plus for Internet Explorer has much better support of our blocking rules (e.g. YouTube ads can be blocked) and also provides element hiding functionality. There is still room for improvement of course:

  • You will have to choose a different installation package depending on whether you are running 64 bit Windows or not. The goal is to have a single installer of course that will choose the installation package automatically but we don’t have it working correctly yet.
  • The development builds will update automatically but the update experience is far from being great. The user interface is suboptimal and chances are that the updater will ask you to restart Windows — sorry about that. Our primary goal was to make this work at all (which proved surprisingly difficult) and we will improve later.
  • The AdblockPlusEngine.exe process starts automatically when you start up Internet Explorer with Adblock Plus. However, it won’t shut down when the last Internet Explorer window is closed. Fixing this is on our TODO list.
  • The ABP icon shows up in the status bar of Internet Explorer. However, the status bar is hidden by default in newer Internet Explorer versions so this isn’t a great location. Of course, displaying a hint explaining how to enable the status bar isn’t a solution — we are still looking for a proper solution here.
  • Currently the ABP icon doesn’t do anything beyond showing the Adblock Plus preferences. It should show a menu instead that will at least allow disabling Adblock Plus on a website without going to preferences.
  • There is no first-run page to indicate that Adblock Plus was installed correctly — this is work in progress.
  • The processing of blocking rules and especially the element hiding rules is sometimes different from Firefox and Chrome. We are working on some of the issues, others will unfortunately be unavoidable however.
  • We are still working on the performance of our solution, right now there are some issues like Internet Explorer startup being delayed by Adblock Plus (fortunately this is a one-time thing).
  • Metro mode Internet Explorer in Windows 8 and Internet Explorer in Windows RT are locked down environments that don’t allow any third-party code to run — including Adblock Plus. So we unfortunately cannot support these environments at the moment.
  • Enhanced Protected Mode of Internet Explorer 10 isn’t supported at the moment.

If you notice other issues, there is an Adblock Plus for Internet Explorer forum for this now.

As to the technical side of it: the idea was not to develop a completely new extension but rather reuse as much as possible from other Adblock Plus extensions. The first challenge here was the JavaScript engine of Internet Explorer which is slower than modern JavaScript engines even in Internet Explorer 10 and completely unusable in Internet Explorer 6. We decided to go with the approach that has already proven useful in Adblock Plus for Android: we use V8 (Chrome’s JavaScript engine) to run shared Adblock Plus code. We’ve even built a general-purpose library around it called libadblockplus, the same library will hopefully soon be used in Adblock Plus for Android.

The other challenge was the multi-process architecture of Internet Explorer. With EasyList getting close to 40,000 filters we didn’t want to load all these filters in each Internet Explorer process. Instead, the first Internet Explorer window opened spawns a new process called AdblockPlusEngine.exe that is where most of our code lives (in particular the JavaScript engine). The individual Internet Explorer processes communicate with our engine when they need to make a decision, this is very similar to how things work in Google Chrome.

The user interface for our extension is yet another challenge. We have to use HTML for things like preferences or the first-run page. Not only is it very tedious to create HTML code that’s compatible with Internet Explorer 6, the JavaScript code in there needs to communicate with the Adblock Plus engine. The approach here is essentially to inject an ActiveX object into these pages that will forward calls to the engine (in a different process) — funny setup.

Altogether however this slowly starts looking like a product that we can release to the general public and not just to a handful of brave development build users. If you would like to contribute, the relevant source code repositories are adblockplusie and libadblockplus (yes, documentation needs to improve). Better yet, if you like working on complex problems such as this — feel free to apply for a job at Eyeo.

Tags:

Comment [16]

  1. VIP · 2013-06-19 16:26 · #

    Awesome, heard MS also gonna allow addons in Metro version of IE, hope it would be available on it but this step is in right direction.

  2. EM · 2013-06-19 20:44 · #

    Yessssss! This was the only reason I still use Chrome sometimes.

  3. Victor · 2013-06-19 22:10 · #

    Guys! I love you!

  4. JohnP · 2013-06-19 22:23 · #

    Good job on landing ABP for IE. I notice this is a very similar look and feel to avast adblocker. They use your engine, I assume they are releasing their resources to help you guys on this project?

    Anyway, it look like you guys are making the solution harder than it should be. Why not go with the Browser Helper Object model? Don’t know if you guys have look at MGTEK’s AdblockIE, but their solution is using BHO and it is on-par with ABP for Firefox—down to the advance features like show blocked items and a built-in rule editor that’s very similar to Firefox’s version. They are using Easylist (don’t know if that legal since their software is not free)

    AdblockIE is also as fast as ABP Firefox in my opinion. I don’t know how they do it, I assume they have insider access to Windows APIs. They are a partner with Microsoft I think.

    Reply from Wladimir Palant:

    Yes, avast! Ad Blocker is based on Adblock Plus – it says so on the settings page. And – no, Avast isn’t helping on this project.

    We are using Browser Helper Objects. However, there is a new instance of the BHO for each Internet Explorer process – running a second JavaScript engine there would be very suboptimal.

  5. Nathaniel Kofalt · 2013-06-20 02:07 · #

    Excellent work, it’s great to hear that IE will have a robust option for blocking ads. I imagine this project must make for frustrating work, overcoming that is good news for the internet as a whole.

  6. Ryan · 2013-06-20 13:01 · #

    So IE gets Adblock Plus before Safari…

  7. Eric Lind · 2013-06-21 02:40 · #

    i hope this will work

  8. John C · 2013-06-23 22:42 · #

    ADP for IE 10 is not compatible with Enhanced Protected Mode.
    I see there’s only a 32-bit plugin?

    Reply from Wladimir Palant:

    No, there is a 64-bit plugin as well. See the list of current limitations in this post.

  9. Ubiquitous Child · 2013-06-25 18:21 · #

    I actually read your 6-year-old post some minutes ago while searching for an “adblockplus” for IE. I felt sad to realize that you would not take up that challenge. Then I jumped to your recent posts and I found this one! A very nice surprise.

    I don’t mean it for the sake of IE users, since IE is not as popular as it used to be. Myself I just thought that since I have Firefox and Chrome protected from those nasty ads, I should mercifully provide the same treatment to my IE as well.

    Considering the technical challenges that you described, I think you are very brave. I also think that if we expect to have a future free and democratic internet (in the “good sense” of those words) we must strongly support talented guys like you. Maybe these are the tools we need to prevent a distopic future corporate-lead internet (read Facebook-led internet) to ever materialize.

    Congratulations for what you have achieved so far and keep up the excellent work!

  10. danwat1234 · 2013-07-01 02:52 · #

    Great work! I can’t wait for it’s release.

  11. sb · 2013-07-08 00:11 · #

    Great contribution. I’ll appreciate it greatly as it progresses. Thumbs up!

  12. Zuiop · 2013-07-09 18:53 · #

    Just to give another side to this: I feel like supporting a proprietary browser, apparently with considerable difficulty, seems like somewhat of a waste of effort. If it helps people, fine, but I don’t think it should be the main concern of the developers.

  13. Denis · 2013-07-09 20:38 · #

    Dont work ((

  14. Derek Marvelley · 2013-07-10 05:17 · #

    is ad block plus free /.

  15. Brasil · 2013-07-16 08:52 · #

    BRASIL:

    http://super.abril.com.br/blogs/rebit/google-subornou-programa-que-bloqueia-anuncios-na-internet/

    GOOGLE PAGA.

    https://adblockplus.org/en/acceptable-ads

    Reply from Wladimir Palant:

    Off-topic comment removed, as usually.

  16. AC · 2013-07-21 19:35 · #

    Been waiting for this for years! So excited

Commenting is closed for this article.