-
Notifications
You must be signed in to change notification settings - Fork 40
/
how-does-adblock-work.html
executable file
·183 lines (167 loc) · 10.7 KB
/
how-does-adblock-work.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-FVTW7P4');</script>
<!-- End Google Tag Manager -->
<title>About CRX Extractor – Chrome Extension source code downloading tool</title>
<meta name="keywords" content="about, crx, chrome, extension, get, extract, download, source, code"/>
<meta name="description" content="About page of .crx file extractor explains how that works and which tools have been used to make it working."/>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<meta name="author" content="Vladimir Ignatev">
<link rel="icon" type="image/png" href="images/favicon.png">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "ca-pub-9423687387443767",
enable_page_level_ads: true
});
</script>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-FVTW7P4"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="breakthrough center nomargin">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- CRXExtractor Top -->
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-9423687387443767"
data-ad-slot="3613922026"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
<div class="with-background">
<div class="row">
<div class="logo center"><a href="/"><img src="images/logo.png" height="50" alt="crx extractor logo" /></a></div>
<h3 class="center">Investigate and hack into any Chrome Extension <br/>from the Chrome WebStore.</h3>
<div class="center"><a href="/" class="button button-primary" tabindex="1">Start</a></div>
</div>
</div>
<div class="article-wrapper">
<div class="article container">
<div class="row">
<div class="eight columns">
<h1>How does Adblock work?</h1>
<em>Attention! Long-read!</em>
<h2>What is adblocker and how does an ads in the web work?</h2>
<p>I believe that everyone who surfs the web hates ads that pop out here and there,
asking you to buy something, to download some "free" stuff or do anything but
viewing the page you were looking for in Google so long.</p>
<p>But we know that advertising makes some profits for website owners. Lucky ones
can have thousands and dozens thousands dollars of monthly income. It enables
them to create more and more useful and valuable content. They build the web
we love and use everyday.</p>
<p>Not all ads make us angry. There are several types of ads especially annoying,
such as pop-up and pop-under ads, that either cover whole screen or turning
the page we were looking at into strange bunch of irrelevant marketing fluff. Here is the place
where adblock solutions come to help, and in this article we cover the topic about
how do adblockers work.</p>
<h2>What the hack adblockers are?</h2>
<p>Huge publishers like Google are staying away from websites that use "gray" techniques
to drive profits out of traffic (i.e. CPC arbitrage). They use content filtering and ranking techniques
to defend user from aggressive ads.</p>
<p>It helps them keep content relevant to user's queries. They know, that theirs' massive
profits backed with investors expectations depend highly on user satisfaction
and usability. If a user watches irrelevant, ugly, misspelled ads, big chance is
that user will skip further ads and possibly churn away and stop using such
website or online product or mobile app.</p>
<p>Not all site owners do like Google does. Also, Google can't control every possible ad,
because a lot of webmasters use ad networks for displaying ads that aren't
affiliated with Google.</p>
<p>You got the idea: Google improves ads on his own, but to control ads on user's
side user need some additional software. Such software exist and is called "adblockers".</p>
<h2>How do Adblockers work?</h2>
<p>Typically, ad-blocking works through filtering out a content on the page that
user interact with and removing out some blocks of text, images, javascripts or flash.
To decide what to remove, an adblocker use very simple rules created by developer.
No matter how sophisticated ads code is, it will have some features like specified HTML-tags or styles.
Developer finds such features and add them as rules for filtering.</p>
<p>For example, if a page contains an image with URL that contains word "ad" or "affiliate",
the image become a candidate for removal.</p>
<p>This is the browser-based adblocking. It is exactly how AdblockPlus works.</p>
<p>In addition to browser-based solutions, there are proxy-based solutions. For example,
AdblockPlus work in this manner on Android devices. The idea is to filter out not a content,
because AdblockPlus on Android have no access to content the user watch, but filter out HTTP
requests being used to get banner images or texts.</p>
<p>To achieve such filtering abilities, user run a HTTP-proxy server on his device, he does
it using AdblockPlus app, and configures network to drive all traffic through this proxy.</p>
<p>If you aren't familiar with Proxy Servers, just look to corresponding Wikipedia page.
Proxy server are easy to understand. And the concept is very straightforward.</p>
<h2>Adblock Plus</h2>
<p>Nowadays, more than 100 millions of devices have installed AdBlock Plus. It is the most
popular and sensational adblocker. It is free and open-source. </p>
<p>We can look into source code. Go, grab it using CRXExtractor! This is a link you should use to download him: <a href="https://chrome.google.com/webstore/detail/adblock-plus/cfhdojbkjhnklbpkdaibdccddilifddb">https://chrome.google.com/webstore/detail/adblock-plus/cfhdojbkjhnklbpkdaibdccddilifddb</a>.
Just put this link into corresponding field and extract it using tool.</p>
<p>Open <pre>lib/adblockplus.js</pre>. If you go over the source code you will easily find 1417-1467 lines. There are URLs pointing to <pre>adblockplus.org</pre>, where you can get actual filters that AdblockPlus apply to content of websites in order to block ads from popping.</p>
</div>
<div class="four columns">
<div class="adsense-wrapper hide-small">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- CRXExtractor Side -->
<ins class="adsbygoogle"
style="display:inline-block;width:300px;height:600px"
data-ad-client="ca-pub-9423687387443767"
data-ad-slot="5090655229"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
</div>
</div>
<div class="breakthrough border-top border-bottom row center">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- CRXExtractor Bottom -->
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-9423687387443767"
data-ad-slot="8044121628"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
</div>
</div>
<div class="footer-wrapper">
<div class="footer container">
<div class="row">
<div class="six columns copyrights hide-small">
<p>© 2016 CRXExtractor.<br/>
© 2015 Google Inc, used with permission. Google, Chrome, Chrome WebStore are registered trademarks of Google Inc.</p>
<p>Photo of Felix Lindner by Die Welt, "Wie "gute" Hacker Firmen im Cyberkrieg helfen"</p>
<br/>
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/vladignatyev" data-style="mega" data-count-href="/vladignatyev/followers" data-count-api="/users/vladignatyev#followers" data-count-aria-label="# followers on GitHub" aria-label="Follow @vladignatyev on GitHub">Follow @vladignatyev</a>
<a class="github-button" href="https://github.com/vladignatyev/crx-extractor" data-icon="octicon-star" data-style="mega" data-count-href="/vladignatyev/crx-extractor/stargazers" data-count-api="/repos/vladignatyev/crx-extractor#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star vladignatyev/crx-extractor on GitHub">Star</a>
</div>
<div class="two columns copyrights"> </div>
<div class="three columns links">
<a href="https://twitter.com/intent/tweet?screen_name=crxextractor" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @CRXExtractor</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<a href="about.html">About</a>
<a href="contact.html">Contact</a>
<a href="terms-of-use.html">Terms Of Use</a><br/>
</div>
</div>
</div>
</div>
<link rel="stylesheet" href="css/stylesheet.min.css" lazyload>
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Raleway" lazyload>
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-82390179-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>