first commit

This commit is contained in:
gorhill 2014-06-23 18:42:43 -04:00
parent f48946132f
commit b5fdac9053
99 changed files with 232216 additions and 0 deletions

43
1p-filters.html Normal file
View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTTP Switchboard — Ubiquitous rules</title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<style>
div > p:first-child {
margin-top: 0;
}
div > p:last-child {
margin-bottom: 0;
}
.dim {
color: #444;
}
.userFilters {
font-size: smaller;
width: 48em;
height: 40em;
white-space: nowrap;
}
</style>
</head>
<body>
<div>
<p data-i18n="1pFormatHint"></p>
<p><button id="importUserFiltersFromFile" data-i18n="1pImport"></button> &emsp; <button id="exportUserFiltersToFile" data-i18n="1pExport"></button></p>
<textarea class="userFilters" id="userFilters"></textarea>
<p><button id="userFiltersApply" disabled="true" data-i18n="1pApplyChanges"></button></p>
</div>
<script src="lib/jquery-2.min.js"></script>
<script src="js/i18n.js"></script>
<script src="js/dashboard-common.js"></script>
<script src="js/messaging-client.js"></script>
<script src="js/1p-filters.js"></script>
</body>
</html>

56
3p-filters.html Normal file
View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTTP Switchboard — Ubiquitous rules</title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<style>
div > p:first-child {
margin-top: 0;
}
div > p:last-child {
margin-bottom: 0;
}
ul {
padding: 0;
list-style-type: none;
}
ul > li {
margin: 0 0 0 1em;
}
.dim {
color: #444;
}
.userUbiquitousHosts {
font-size: smaller;
width: 36em;
height: 16em;
white-space: nowrap;
}
</style>
</head>
<body>
<p id="3pListsOfBlockedHostsPrompt2"></p>
<ul id="blacklistTemplate" style="display:none">
<li class="blacklistDetails"><input type="checkbox">&thinsp;<a href="" type="text/plain"></a>:
<span class="dim" data-i18n="3pListsOfBlockedHostsPerListStats"></span>
</ul>
<ul id="blacklists" style="margin:0.5em 0 0 0;padding-left:1em;list-style-type:none">
<li style="margin-top:0.75em"><input type="checkbox" id="parseAllABPHideFilters"><span data-i18n="3pParseAllABPHideFiltersPrompt1"></span>
<span class="dim" id="3pParseAllABPHideFiltersPrompt2"></span>
<button class="whatisthis"></button>
<div class="whatisthis-expandable para" data-i18n="3pParseAllABPHideFiltersInfo"></div>
<li style="margin-top:0.75em"><button id="blacklistsApply" disabled="true" data-i18n="3pApplyChanges"></button>
</ul>
<script src="lib/jquery-2.min.js"></script>
<script src="js/i18n.js"></script>
<script src="js/dashboard-common.js"></script>
<script src="js/messaging-client.js"></script>
<script src="js/3p-filters.js"></script>
</body>
</html>

674
LICENSE.txt Normal file
View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{{project}} Copyright (C) {{year}} {{fullname}}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
{http://www.gnu.org/licenses/}.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
{http://www.gnu.org/philosophy/why-not-lgpl.html}.

130
_locales/de/messages.json Normal file
View file

@ -0,0 +1,130 @@
{
"extName": {
"message": "µBlock",
"description": "extension name."
},
"extShortDesc": {
"message": "Finally, an efficient blocker for Chromium-based browsers. Easy on CPU and memory.",
"description": "this will in chrome web store: must be 132 characters or less"
},
"3pPageName" : {
"message": "3rd-party filters",
"description": "appears as tab name in dashboard"
},
"1pPageName" : {
"message": "Your filters",
"description": "appears as tab name in dashboard."
},
"aboutPageName": {
"message": "Über",
"description": "appears as tab name in dashboard"
},
"3pListsOfBlockedHostsPrompt2" : {
"message": "{{ubiquitousBlacklistCount}} eindeutig blockierte Hostnamen aus:",
"description": "English: {{ubiquitousBlacklistCount}} distinct blocked hostnames from:"
},
"3pListsOfBlockedHostsPerListStats" : {
"message": "{{used}} benutzt aus {{total}}",
"description": "English: {{used}} used out of {{total}}"
},
"3pParseAllABPHideFiltersPrompt1" : {
"message": "Adblock+ Filter zum Verstecken von Elementen analysieren und anwenden.",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersPrompt2" : {
"message": "{{abpHideFilterCount}} Filter zum Verstecken von Elementen genutzt.",
"description": "English: {{abpHideFilterCount}} element hiding filters used."
},
"3pParseAllABPHideFiltersInfo" : {
"message": "<p>Diese Option ermöglicht die Analyse und Anwendung von <a href=\"https://adblockplus.org/de/faq_internal#elemhide\">Adblock Plus-kompatiblen Filtern zum &ldquo;Verstecken von Elementen&rdquo; </a>. Diese Filter sind in erster Linie kosmetischer Natur und dienen zum Verstecken von Elementen auf einer Webseite, die als optische Belästigung wahrgenommen werden und nicht von der Matrix oder normalen ABP-Filtern geblockt werden können.</p><p>Das Aktivieren dieser Option erhöht den Speicherbedarf von <i>µBlock</i>.</p>",
"description": "English: see English messages.json"
},
"3pListsOfBlockedHostsHeader" : {
"message": "Listen blockierter Hostnamen",
"description": "English: Lists of blocked hosts"
},
"3pApplyChanges" : {
"message": "Änderungen anwenden",
"description": "English: Apply changes"
},
"1pFormatHint" : {
"message": "Eine Regel pro Zeile. Eine Regel kann ein einfacher Hostname sein oder ein Adblock Plus-kompatibler Filter. Zeilen mit vorangestelltem &lsquo;!&rsquo; werden ignoriert.",
"description": "English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored."
},
"1pImport" : {
"message": "Importieren und anfügen",
"description": "English: Import and append"
},
"1pExport" : {
"message": "Exportieren",
"description": "English: Export"
},
"1pApplyChanges" : {
"message": "Änderungen anwenden",
"description": "English: Apply changes"
},
"aboutChangelog" : {
"message": "<a href='https://github.com/gorhill/ublock/wiki/Changelog'>Changelog</a>",
"description": "English: <a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>"
},
"aboutCode" : {
"message": "<a href='https://github.com/gorhill/ublock'>Quellcode (GPLv3)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>"
},
"aboutExtensionDataHeader" : {
"message": "Externe Ressourcen dieser Erweiterung",
"description": "English: Extension data"
},
"aboutAssetsUpdatePrompt" : {
"message": "Von <i>µBlock</i> benutzte externe Ressourcen können hier upgedatet werden, ohne auf eine neue Version dieser Erweiterung warten zu müssen. Diese Ressourcen werden bezogen vom <a href=\"https://github.com/gorhill/ublock\">Github Repository dieses Projekts</a>.",
"description": "Short descriptive text of the update feature"
},
"aboutAssetsUpdateColPath" : {
"message": "Pfad",
"description": "Path column header"
},
"aboutAssetsUpdateColStatus" : {
"message": "Status",
"description": "Status column header"
},
"aboutAssetsUpdateGetListError" : {
"message": "Ein Fehler ist aufgetreten. Ist <b>XHR</b> blockiert für <b>raw2.github.com</b>?",
"description": "Successful outcome of clicking 'update' button"
},
"aboutAssetsUpdateStatusAdded" : {
"message": "Hinzufügen",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusChanged" : {
"message": "Neue Version verfügbar",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusUnchanged" : {
"message": "Up-to-date",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusRemoved" : {
"message": "Entfernen",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateButton" : {
"message": "Update",
"description": "Update button"
},
"aboutAssetsUpdatingButton" : {
"message": "Updating...",
"description": "Updating..."
},
"dummy": {
"message": "This entry must be the last one",
"description": "so we dont need to deal with comma for last entry"
}
}

130
_locales/en/messages.json Normal file
View file

@ -0,0 +1,130 @@
{
"extName": {
"message": "µBlock",
"description": "extension name."
},
"extShortDesc": {
"message": "Finally, an efficient blocker for Chromium-based browsers. Easy on CPU and memory.",
"description": "this will be in the chrome web store: must be 132 characters or less"
},
"3pPageName" : {
"message": "3rd-party filters",
"description": "appears as tab name in dashboard."
},
"1pPageName" : {
"message": "Your filters",
"description": "appears as tab name in dashboard."
},
"aboutPageName": {
"message": "About",
"description": "appears as tab name in dashboard."
},
"3pListsOfBlockedHostsPrompt2" : {
"message": "{{ubiquitousBlacklistCount}} network filters from:",
"description": "English: {{ubiquitousBlacklistCount}} distinct blocked hostnames from:"
},
"3pListsOfBlockedHostsPerListStats" : {
"message": "{{used}} used out of {{total}}",
"description": "English: {{used}} used out of {{total}}"
},
"3pParseAllABPHideFiltersPrompt1" : {
"message": "Parse and enforce Adblock+ element hiding filters.",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersPrompt2" : {
"message": "{{abpHideFilterCount}} element hiding filters used.",
"description": "English: {{abpHideFilterCount}} element hiding filters used."
},
"3pParseAllABPHideFiltersInfo" : {
"message": "<p>This option enables the parsing and enforcing of <a href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-compatible &ldquo;element hiding&rdquo; filters</a>. These filters are essentially cosmetic, they serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the matrix- or ABP-filtering engines.</p><p>Enabling this feature increases <i>µBlock</i>'s memory footprint.</p>",
"description": "English: see English messages.json"
},
"3pListsOfBlockedHostsHeader" : {
"message": "Lists of blocked hosts",
"description": "English: Lists of blocked hosts"
},
"3pApplyChanges" : {
"message": "Apply changes",
"description": "English: Apply changes"
},
"1pFormatHint" : {
"message": "One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored.",
"description": "English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored."
},
"1pImport" : {
"message": "Import and append",
"description": "English: Import and append"
},
"1pExport" : {
"message": "Export",
"description": "English: Export"
},
"1pApplyChanges" : {
"message": "Apply changes",
"description": "English: Apply changes"
},
"aboutChangelog" : {
"message": "<a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>",
"description": "English: <a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>"
},
"aboutCode" : {
"message": "<a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>"
},
"aboutExtensionDataHeader" : {
"message": "Extension data",
"description": "English: Extension data"
},
"aboutAssetsUpdatePrompt" : {
"message": "<i>µBlock</i> assets can be updated here without having to wait for the next release of the extension. These assets are pulled from the <a href=\"https://github.com/gorhill/ublock\">project's Github repository</a>.",
"description": "Short descriptive text of the update feature"
},
"aboutAssetsUpdateColPath" : {
"message": "Path",
"description": "Path column header"
},
"aboutAssetsUpdateColStatus" : {
"message": "Status",
"description": "Status column header"
},
"aboutAssetsUpdateGetListError" : {
"message": "An error occurred. Is <b>XHR</b> blocked for <b>raw2.github.com</b>?",
"description": "Successful outcome of clicking 'update' button"
},
"aboutAssetsUpdateStatusAdded" : {
"message": "To add",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusChanged" : {
"message": "New version available",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusUnchanged" : {
"message": "Up to date",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusRemoved" : {
"message": "To remove",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateButton" : {
"message": "Update",
"description": "Update button"
},
"aboutAssetsUpdatingButton" : {
"message": "Updating...",
"description": "Updating..."
},
"dummy": {
"message": "This entry must be the last one",
"description": "so we dont need to deal with comma for last entry"
}
}

130
_locales/fr/messages.json Normal file
View file

@ -0,0 +1,130 @@
{
"extName": {
"message": "µBlock",
"description": "extension name."
},
"extShortDesc": {
"message": "Finally, an efficient blocker for Chromium-based browsers. Easy on CPU and memory.",
"description": "this will in chrome web store: must be 132 characters or less"
},
"3pPageName" : {
"message": "Listes de filtres",
"description": "appears as tab name in dashboard"
},
"1pPageName" : {
"message": "Vos règles",
"description": "appears as tab name in dashboard."
},
"aboutPageName": {
"message": "À propos",
"description": "appears as tab name in dashboard"
},
"3pListsOfBlockedHostsPrompt2" : {
"message": "{{ubiquitousBlacklistCount}} hôtes actuellement bloqués :",
"description": "English: {{ubiquitousBlacklistCount}} distinct blocked hostnames from:"
},
"3pListsOfBlockedHostsPerListStats" : {
"message": "{{used}} utilisés sur un total de {{total}}",
"description": "English: {{used}} used out of {{total}}"
},
"3pParseAllABPHideFiltersPrompt1" : {
"message": "Utiliser en plus les règles Adblock Plus esthétiques",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersPrompt2" : {
"message": "{{abpHideFilterCount}} règles Adblock Plus esthétiques utilisées",
"description": "English: {{abpHideFilterCount}} element hiding filters used."
},
"3pParseAllABPHideFiltersInfo" : {
"message": "<p>Cette option permet de prendre en charge les filtres AdblockPlus de type <a href=\"https://adblockplus.org/en/faq_internal#elemhide\">&ldquo;element hiding&rdquo;</a>. Ces filtres ont principalement un impact visuel, servant à dissimuler des éléments nuisibles d'une page Web et qui ne sont blocables ni par la matrice, ni par le filtrage type Adblock Plus.</p><p>L'activation de cette fonctionnalité augmente l'empreinte mémoire de <i>µBlock</i></p>",
"description": "English: see English messages.json"
},
"3pListsOfBlockedHostsHeader" : {
"message": "Listes d'hôtes à bloquer",
"description": "English: Lists of blocked hosts"
},
"3pApplyChanges" : {
"message": "Appliquer",
"description": "English: Apply changes"
},
"1pFormatHint" : {
"message": "Une règle par ligne. Une règle peut être un simple nom d'hôte, ou encore un filtre respectant la syntaxe des filtres Adblock Plus. Les lignes débutant par &lsquo;!&rsquo; seront ignorées.",
"description": "English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored."
},
"1pImport" : {
"message": "Importer",
"description": "English: Import and append"
},
"1pExport" : {
"message": "Exporter",
"description": "English: Export"
},
"1pApplyChanges" : {
"message": "Appliquer",
"description": "English: Apply changes"
},
"aboutChangelog" : {
"message": "<a href='https://github.com/gorhill/ublock/wiki/Change-log'>Journal des changements (en Anglais)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>"
},
"aboutCode" : {
"message": "<a href='https://github.com/gorhill/ublock'>Code Source (Licence GPLv3, en Anglais)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>"
},
"aboutExtensionDataHeader" : {
"message": "Données de l'extension",
"description": "English: Extension data"
},
"aboutAssetsUpdatePrompt" : {
"message": "Les éléments dynamiques, comprenant entre autres listes d'hôtes à bloquer et recettes prédéfinies, peuvent être mis à jour ici sans avoir à attendre la prochaine version de µBlock. Le processus s'effectue à partir de la <a href=\"https://github.com/gorhill/ublock\">page du projet sur Github</a>.",
"description": "Short descriptive text of the update feature"
},
"aboutAssetsUpdateColPath" : {
"message": "Élément dynamique",
"description": "Path column header"
},
"aboutAssetsUpdateColStatus" : {
"message": "État",
"description": "Status column header"
},
"aboutAssetsUpdateGetListError" : {
"message": "Une erreur est survenue. Veuillez vous assurer que les requêtes de type <b>XHR</b> ne soient pas bloquées pour <b>raw2.github.com</b>",
"description": "Successful outcome of clicking 'update' button"
},
"aboutAssetsUpdateStatusAdded" : {
"message": "À ajouter",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusChanged" : {
"message": "Nouvelle version disponible",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusUnchanged" : {
"message": "À jour",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusRemoved" : {
"message": "À supprimer",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateButton" : {
"message": "Mettre à jour",
"description": "Update button"
},
"aboutAssetsUpdatingButton" : {
"message": "Mise à jour en cours...",
"description": "Updating..."
},
"dummy": {
"message": "This entry must be the last one",
"description": "so we dont need to deal with comma for last entry"
}
}

130
_locales/ru/messages.json Normal file
View file

@ -0,0 +1,130 @@
{
"extName": {
"message": "µBlock",
"description": "название расширения"
},
"extShortDesc": {
"message": "Finally, an efficient blocker for Chromium-based browsers. Easy on CPU and memory.",
"description": "this will in chrome web store: must be 132 characters or less"
},
"3pPageName" : {
"message": "Third-party filters",
"description": "appears as tab name in dashboard"
},
"1pPageName" : {
"message": "Your filters",
"description": "appears as tab name in dashboard."
},
"aboutPageName": {
"message": "О расширении",
"description": "appears as tab name in dashboard."
},
"3pListsOfBlockedHostsPrompt2" : {
"message": "{{ubiquitousBlacklistCount}} блокируется хостов, помимо:",
"description": "English: {{ubiquitousBlacklistCount}} distinct blocked hostnames from:"
},
"3pListsOfBlockedHostsPerListStats" : {
"message": "{{used}} используется из {{total}}",
"description": "English: {{used}} used out of {{total}}"
},
"3pParseAllABPHideFiltersPrompt1" : {
"message": "Разбор и применение Adblock+ фильтров скрытия элементов.",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersPrompt2" : {
"message": "{{abpHideFilterCount}} element hiding filters used.",
"description": "English: {{abpHideFilterCount}} element hiding filters used."
},
"3pParseAllABPHideFiltersInfo" : {
"message": "<p>Эта опция включает разбор и применение <a href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-совместимых &ldquo;element hiding&rdquo; фильтров</a>. Эти фильтры по сути только визуальные, они позволяют скрыть элементы страницы, которые не могут быть заблокированы матрицей фильтров или ABP-фильтрами.</p><p>Включение этой опции увеличивает использование памяти для <i>µBlock</i>.</p>",
"description": "English: see English messages.json"
},
"3pListsOfBlockedHostsHeader" : {
"message": "Список блокируемых хостов",
"description": "English: Lists of blocked hosts"
},
"3pApplyChanges" : {
"message": "Применить изменения",
"description": "English: Apply changes"
},
"1pFormatHint" : {
"message": "Одно правило на строку. Правилом может быть обычное имя сайти, или Adblock Plus-совместимый фильтр. Линии начинающиеся с &lsquo;!&rsquo; будут пропущены.",
"description": "English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored."
},
"1pImport" : {
"message": "Импортировать и добавить",
"description": "English: Import and append"
},
"1pExport" : {
"message": "Экспортировать",
"description": "English: Export"
},
"1pApplyChanges" : {
"message": "Применить изменения",
"description": "English: Apply changes"
},
"aboutChangelog" : {
"message": "<a href='https://github.com/gorhill/ublock/wiki/Change-log'>Список изменений</a>",
"description": "English: <a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>"
},
"aboutCode" : {
"message": "<a href='https://github.com/gorhill/ublock'>Исходный код (GPLv3)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>"
},
"aboutExtensionDataHeader" : {
"message": "Данные расширения",
"description": "English: Extension data"
},
"aboutAssetsUpdatePrompt" : {
"message": "<i>µBlock</i> подписки могут быть обновлены здесь вручную, если не хотите ждать новой версии расширения. Они загружаются из <a href=\"https://github.com/gorhill/ublock\">Github хранилища</a>.",
"description": "Short descriptive text of the update feature"
},
"aboutAssetsUpdateColPath" : {
"message": "Путь",
"description": "Path column header"
},
"aboutAssetsUpdateColStatus" : {
"message": "Состояние",
"description": "Status column header"
},
"aboutAssetsUpdateGetListError" : {
"message": "Произошла ошибка. <b>XHR</b> заблокирован для <b>raw2.github.com</b>?",
"description": "Successful outcome of clicking 'update' button"
},
"aboutAssetsUpdateStatusAdded" : {
"message": "Добавить",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusChanged" : {
"message": "Доступно обновление",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusUnchanged" : {
"message": "Обновлений не найдено",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusRemoved" : {
"message": "Для удаления",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateButton" : {
"message": "Обновить",
"description": "Update button"
},
"aboutAssetsUpdatingButton" : {
"message": "Обновление...",
"description": "Updating..."
},
"dummy": {
"message": "Эта запись должна быть последней",
"description": "so we dont need to deal with comma for last entry"
}
}

View file

@ -0,0 +1,130 @@
{
"extName": {
"message": "µBlock",
"description": "extension name."
},
"extShortDesc": {
"message": "Finally, an efficient blocker for Chromium-based browsers. Easy on CPU and memory.",
"description": "this will be in the chrome web store: must be 132 characters or less"
},
"1pPageName" : {
"message": "Your filters",
"description": "appears as tab name in dashboard."
},
"3pPageName" : {
"message": "Third-party filters",
"description": "appears as tab name in dashboard."
},
"aboutPageName": {
"message": "关于",
"description": "appears as tab name in dashboard."
},
"3pListsOfBlockedHostsPrompt2" : {
"message": "共{{ubiquitousBlacklistCount}}个不同的屏蔽站点名,来自:",
"description": "English: {{ubiquitousBlacklistCount}} distinct blocked hostnames from:"
},
"3pListsOfBlockedHostsPerListStats" : {
"message": "{{total}}中使用{{used}}",
"description": "English: {{used}} used out of {{total}}"
},
"3pParseAllABPHideFiltersPrompt1" : {
"message": "解析并应用Adblock+元素隐藏过滤规则。",
"description": "English: Parse and enforce Adblock+ element hiding filters."
},
"3pParseAllABPHideFiltersPrompt2" : {
"message": "{{abpHideFilterCount}}条元素隐藏过滤规则被使用。",
"description": "English: {{abpHideFilterCount}} element hiding filters used."
},
"3pParseAllABPHideFiltersInfo" : {
"message": "<p>这项选项启用了对<a href=\"https://adblockplus.org/zh_CN/faq_internal#elemhide\">Adblock Plus相兼容的“元素隐藏”过滤规则</a>。这些过滤规则本质上只是装饰它们被用于隐藏一个网页上被认为碍眼的元素并且这些元素不能被矩阵过滤或ABP过滤引擎所屏蔽。</p><p>启用这项功能将增加<i>µBlock</i>的内存使用量。</p>",
"description": "English: see English messages.json"
},
"3pListsOfBlockedHostsHeader" : {
"message": "被屏蔽站点列表",
"description": "English: Lists of blocked hosts"
},
"3pApplyChanges" : {
"message": "应用变更",
"description": "English: Apply changes"
},
"1pFormatHint" : {
"message": "每行一条规则。一条规则可以是一个平凡的站点名或者是一条Adblock Plus的兼容过滤规则。以“!”开头的行将被忽略。",
"description": "English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with &lsquo;!&rsquo; will be ignored."
},
"1pImport" : {
"message": "导入并附加规则",
"description": "English: Import and append"
},
"1pExport" : {
"message": "导出规则",
"description": "English: Export"
},
"1pApplyChanges" : {
"message": "应用变更",
"description": "English: Apply changes"
},
"aboutChangelog" : {
"message": "<a href='https://github.com/gorhill/ublock/wiki/Change-log'>变更日志</a>",
"description": "English: <a href='https://github.com/gorhill/ublock/wiki/Change-log'>Change log</a>"
},
"aboutCode" : {
"message": "<a href='https://github.com/gorhill/ublock'>源代码 (GPLv3)</a>",
"description": "English: <a href='https://github.com/gorhill/ublock'>Source code (GPLv3)</a>"
},
"aboutExtensionDataHeader" : {
"message": "扩展数据",
"description": "English: Extension data"
},
"aboutAssetsUpdatePrompt" : {
"message": "<i>µBlock</i>使用的资源可以在这里进行升级,而不必等到扩展的下一个发行版。这些资源是拉取自<a href=\"https://github.com/gorhill/ublock\">本项目的Github代码托管库</a>。",
"description": "Short descriptive text of the update feature"
},
"aboutAssetsUpdateColPath" : {
"message": "路径",
"description": "Path column header"
},
"aboutAssetsUpdateColStatus" : {
"message": "状态",
"description": "Status column header"
},
"aboutAssetsUpdateGetListError" : {
"message": "有一个错误发生。<b>raw2.github.com</b>的<b>XHR</b>是否被屏蔽?",
"description": "Successful outcome of clicking 'update' button"
},
"aboutAssetsUpdateStatusAdded" : {
"message": "将被添加",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusChanged" : {
"message": "有新版本",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusUnchanged" : {
"message": "已是最新",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateStatusRemoved" : {
"message": "将被移除",
"description": "Displayed in the status column for each entry"
},
"aboutAssetsUpdateButton" : {
"message": "马上更新",
"description": "Update button"
},
"aboutAssetsUpdatingButton" : {
"message": "正在更新...",
"description": "Updating..."
},
"dummy": {
"message": "This entry must be the last one",
"description": "so we dont need to deal with comma for last entry"
}
}

91
about.html Normal file
View file

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>µBlock — About</title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<style>
table th {
text-align: left;
}
table td:first-child {
padding-right: 2em;
}
#allLocalAssetsUpdated {
margin-left: 1em;
color: green;
}
#assetList table tr.unchanged {
color: gray;
}
#assetList table tr td:nth-of-type(2) {
font-weight: bold;
white-space: nowrap;
}
#assetList table tr.unchanged td:nth-of-type(2) {
font-weight: normal;
}
#assetList.ooo > table {
display: none;
}
#assetList.oox > table,
#assetList.oxx > table,
#assetList.xxx > table {
display: block;
}
#assetList > p {
display: none;
}
#assetList.ooo > p.ooo {
display: block;
}
#assetList.oxx > p.oxx {
display: block;
}
#assetList.xxx > p.xxx {
display: block;
}
</style>
</head>
<body>
<h2>µBlock <span id="aboutVersion"></span></h2>
<div>
<span data-i18n="aboutChangelog"></span><br>
<span data-i18n="aboutCode"></span><br>
</div>
<h2 data-i18n="aboutExtensionDataHeader"></h2>
<div>
<p class="para" data-i18n="aboutAssetsUpdatePrompt"></p>
<div id="assetList">
<!--
Let's define 'abc' as bit 0 to 2
Where bit can be '0' or '1'
Bit 0: list => o=absent, x=present
Bit 1: list => o=clean, x=dirty
Bit 2: update => o=idle, x=updating
Therefore:
List visible: oox oxx xox
Etc.
-->
<table class="ooo">
<tr><th data-i18n="aboutAssetsUpdateColPath"><th data-i18n="aboutAssetsUpdateColStatus">
</table>
<p class="ooo" style="color:red" data-i18n="aboutAssetsUpdateGetListError"></p>
<p class="oxx"><button type="button" id="aboutAssetsUpdateButton" data-i18n="aboutAssetsUpdateButton"></button></p>
<p class="xxx"><button type="button" disabled data-i18n="aboutAssetsUpdatingButton"></button></p>
</div>
</div>
<script src="lib/jquery-2.min.js"></script>
<script src="js/i18n.js"></script>
<script src="js/dashboard-common.js"></script>
<script src="js/messaging-client.js"></script>
<script src="js/about.js"></script>
</body>
</html>

49
assets/checksums.txt Normal file
View file

@ -0,0 +1,49 @@
f92fb201840fcb83afd1125791433229 assets/httpsb/preset-recipes-1st.yaml
c5c15a8f8ab54eb7d3307dbde033db72 assets/httpsb/ubiquitous-block-lists.json
66c4469349db6c19f88df92540fd0840 assets/httpsb/setup/httpsb-noscript-like-setup.txt
e9f66671bb58917577127e483f2187e7 assets/httpsb/setup/httpsb-requestpolicy-like-setup.txt
cb1f8dc3b5aa5fabe113a0e4e7068893 assets/httpsb/setup/httpsb-block-all-narrowly-allow-all-setup.txt
8181bd0c532d7f0a38cb743f1a7d4143 assets/httpsb/setup/httpsb-just-block-ads-setup.txt
b869255b8152f363dee21e8427e27c34 assets/httpsb/setup/httpsb-block-nothing-report-everything-setup.txt
229b68f9695fb1a597b29f344a185939 assets/httpsb/setup/httpsb-allow-all-block-exceptionally-setup.txt
ccd4abb2f8714009b147edd34e6a52d6 assets/httpsb/setup/httpsb-factory-setup.txt
188ce926323d816ae9d7d5ebbb567862 assets/httpsb/blacklist.txt
847b801091b64d0bfb1dcd2f7c6fe204 assets/httpsb/block-facebook.txt
fb55d70ecc242116235092e9c21df24e assets/httpsb/preset-recipes-3rd.yaml
36d8978c647291a4415dc02fe176e54e assets/thirdparties/download.wiltteri.net/wiltteri.txt
132b3ecc9da8a68c3faf740c00af734b assets/thirdparties/adblock-plus-japanese-filter.googlecode.com/hg/abp_jp.txt
3739b55487ff20f235c736601319f843 assets/thirdparties/adblock.gardar.net/is.abp.txt
ffbae230b87496ec2db39c9ef36a6f6a assets/thirdparties/raw.githubusercontent.com/adblockpolska/Adblock_PL_List/master/adblock_polska.txt
0918113ecf027723a9fa1705e5751400 assets/thirdparties/spam404bl.com/spam404scamlist.txt
726798f47f8e9816a3f9fefa80f3dbe4 assets/thirdparties/easylist-downloads.adblockplus.org/easylistchina.txt
183d5ac66aa7b9c7629abb219e875b73 assets/thirdparties/easylist-downloads.adblockplus.org/fanboy-annoyance.txt
0eff3603cdae96571ee425e43b1733f9 assets/thirdparties/easylist-downloads.adblockplus.org/easylistdutch.txt
82b492c96831ad7df081ef76afdbdb23 assets/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt
09d5dfd1e93f8574a525a5d9649c323f assets/thirdparties/easylist-downloads.adblockplus.org/easylist_noelemhide.txt
dea4a712f0425d757ad3cacc6e9c8921 assets/thirdparties/easylist-downloads.adblockplus.org/advblock.txt
9a1b6b7d9e5be3e25475fa15b89d8e41 assets/thirdparties/easylist-downloads.adblockplus.org/liste_fr.txt
0ae0fa0cd92001311a563fac3cc5b9cb assets/thirdparties/easylist-downloads.adblockplus.org/easylistitaly.txt
d5f4a8c80245e5d5b3f2580dc24f7e45 assets/thirdparties/easylist-downloads.adblockplus.org/easylistgermany.txt
916eae8b3c806294fee2af3d838d9f14 assets/thirdparties/easylist-downloads.adblockplus.org/easylist.txt
36a285b3ef9aadad4529d40153364013 assets/thirdparties/adblock-chinalist.googlecode.com/svn/trunk/adblock.txt
cfba650e2d9844245f9044a7de4c8ce2 assets/thirdparties/mirror1.malwaredomains.com/files/immortal_domains.txt
7f0443f3dcc9abfd47cfbc95ce824ddb assets/thirdparties/mirror1.malwaredomains.com/files/README.md
84c99326a296b1e3617495cb46db26b4 assets/thirdparties/mirror1.malwaredomains.com/files/justdomains
f6bba27911e9b379bcb638e42f0bb740 assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat
0d707b2cee4a38988662107971137d13 assets/thirdparties/abp.mozilla-hispano.org/nauscopio/filtros.txt
53c21f59aab683b9f4b9dfb842735932 assets/thirdparties/margevicius.lt/AdBlockPlusLithuania.txt
0f7ee1f53f867d82e24e05b06e63be2d assets/thirdparties/someonewhocares.org/hosts/hosts
419084a035e8ebed3017575cae6233db assets/thirdparties/winhelp2002.mvps.org/hosts.txt
1e62958b5bef08fcfe68ff1d1ceafe91 assets/thirdparties/raw.github.com/AdBlockPlusIsrael/EasyListHebrew/master/EasyListHebrew.txt
7c0d09fbccd87b5252d3bab3e822f2e4 assets/thirdparties/adblock-czechoslovaklist.googlecode.com/svn/filters.txt
6e7d05575f252a921126225df0c155d9 assets/thirdparties/liste-ar-adblock.googlecode.com/hg/Liste_AR.txt
de54b1c316988c37965107ffa4b7a52f assets/thirdparties/www.fanboy.co.nz/enhancedstats.txt
042419405031f0fcfac3735bf4f05e21 assets/thirdparties/www.malwaredomainlist.com/hostslist/README.md
9461eb435dc2ab98bb9f7e31c8d73b79 assets/thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt
fbb638ed6eb138fa9a8b0190edcde2ab assets/thirdparties/indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt
c6466d360dc0ec9b8dddebb9b13aae42 assets/thirdparties/stanev.org/abp/adblock_bg.txt
4d6a139c60b2dc910f976ccf314beab6 assets/thirdparties/hosts-file.net/hosts.txt
58ee8163e7b5c6972dd60fb833c18e17 assets/thirdparties/hosts-file.net/ad-servers
d9de3340f59e2ba71781a39be5b2e3f4 assets/thirdparties/pgl.yoyo.org/as/serverlist
5b8e13b618c68293430913029118781a assets/thirdparties/pgl.yoyo.org/as/README.md
9d8075d833c3293bfa6979cfbfb69522 assets/thirdparties/www.void.gr/kargig/void-gr-filters.txt

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,659 @@
[Adblock Plus 2.0]
! Homepage: http://adblock.studenthosting.sk
! Title: Easylist Czech and Slovak filters for AdBlock and Adblock Plus
! Last change: 05/10/2013
! List maintainers: Fanboy, Moskoe, tomasko126
! License: http://creativecommons.org/licenses/by/3.0/
! Email: tomasko126@gmail.com
! Forum: http://adblock.studenthosting.sk/forums/forum/easylist-czech-and-slovak/
!
! ---------- Czech Generic Blocking Rules ----------
!
.com/bannery/
.cz/ads/$~object_subrequest,domain=~hcplzen.cz
.cz/BAN/
.cz/banners/$domain=~web.volny.cz
.cz/bannery_
.cz/img/banery/
.cz/img/banner$domain=~abecedaher.cz|~amnesty.cz|~hitech.instruktori.cz|~melcer.cz
.cz/o/poutani^
.cz/rs/get-iframe.php?
.etargetnet.
.lt/banner/
.swf?clickthru$domain=~postovnisporitelna.cz|~restaurace.cz
/a_adv.dat?
/advantage.$domain=~dama.cz
/banner-system/banners/*
/emonitor.
/getbanner.aspx?
/ImgLib/bannery/*
/komercni-sdeleni/*
/n4/r-head.gif
/reklama-
/reklama3.
/reklama_
/reklamy.
/scripts/clickjs
_clickthru.swf?
!
! ---------- Slovak Generic Blocking Rules ----------
!
.sk/img/banner
^rd.php^$domain=pcforum.sk
!
! ---------- Czech 1st party blocking rules ----------
!
||1.im.cz/ad/$image
||1.im.cz/ad/activateFlashObject.js?$domain=novinky.cz
||1.im.cz/ad/gemius.js
||10.im.cz/sos/$image,domain=lide.cz|tv.seznam.cz
||10.im.cz/sos/$object,domain=novinky.cz
||10.im.cz/sos/$object-subrequest,domain=play.iprima.cz
||86.63.194.248/media/bann/
||abecedaher.cz/index_banner_
||adx.fotoaparat.cz/www/images/
||archiv.roumen.cz/roumingRLeader.html
||autoesa.cz/files/bannery/
||avony.cz/mp3splocha.php
||blisty.cz/ad/
||centrum.cz/design/akt3/o/ads/
||cztorrent.net/images/bannery/
||d.lookit.cz/vv.js
||data.idnes.cz/soutez/
||digitalnitelevize.cz/obrazky/reklamni_odkazy/
||dobresenajim.cz/idnesbanner?
||eserial.cz/liftago2.jpg
||espoluprace.cz/affiliate/
||fdb.cz/ad/
||flash.stream.cz/get_sklik/
||fotoradce.cz/layout/inzerce/
||garaz.autorevue.cz/advantage.js
||geewa.ws/js/ad.
||gidnes.cz/b/
||heureka.cz/direct/bannery/
||hostareal.cz/provize/bannery/
||hry.cz/t/h/ad/
||hyperinzerce.cz/images/banner-text-
||i.iinfo.cz/l/ads/
||i.mimibazar.cz/h/bc/b/
||i.stream.cz/channel/background/
||i.stream.cz/img-mnt/player_brand/
||i0.cz/realitymix/ext-data/
||i.sme.sk/fst/
||idnes.cz/foto.aspx?*&ad=
||idnes.cz/js/ad/
||idnes.cz/r.asp?
||idnes.cz^*/body-$image
||idnes.cz^*/main-$image
||img.mimiaukce.cz/h/ac/b/
||kecy.roumen.cz/roumingBannerator.php
||kurzy.cz/e/adv?
||logobox.cz/images/banners/
||lphard.cz/images/banners/
||mluveneslovo.chaves.cz/images/banners/castor_745x150.jpg
||mluveneslovo.chaves.cz/images/banners/palace.gif
||mluveneslovo.chaves.cz/images/user/pokourenicko.jpg
||mp3s.nadruhou.net/avony_square.gif
||mp3s.nadruhou.net/js/bastard_*.js
||naseadresa.cz/cz/$subdocument
||naseadresa.cz^*/flash/baner
||novinky.cz/static/css/xmas.css
||parabola.cz/img_inzerent/
||phaeton.nadruhou.net/data/mp3s/bastard/
||portalymest.cz/obrazky/eshop
||presentation.lmc.cz/aliance/
||programujte.com/galerie/banery/
||prvnizpravy.cz/repository/banner
||raketa.cz/idnesbanner?
||reklama.warforum.cz
||rocketdock.com/images/screenshots/thumbnails/8-3.png
||romea.cz/296x186.swf
||romea.cz/images/servis/banner
||ronnie.cz/cache/bannery/
||s.imedia.cz/js/szn-script.js
||sagit.cz/inzarchiv/bannery/
||sasoft.cz/files/banner.gif
||serialycz.cz/wp-content/uploads/fbbannercz.jpg
||serialycz.cz/wp-content/uploads/kupi.png
||slevy.tyden.cz/banner/
||spoluzaci.cz/img/new-skin/bgr-main.png
||static.autoweb.cz/img/brands/
||super.cz/static/flash/
||superhry.cz/design/09/banner120.gif
||superhry.cz/fox_$subdocument
||superhry.cz/media/
||topkontakt.cz/banner/
||uloz.to/bannery/
||uloz.to/img/bannery/
||uschovna.cz/dt-dancer-234x60.swf
||videacesky.server.zcom.cz/redirector/redir.php?r=LNKczechidea_dole
||war-net.cz/300x200.gif
||war-net.cz/aukcent.gif
||war-net.cz/vyhraj.swf
||warcenter.cz/banner.js
||warcenter.cz/banner/
||warcenter.cz/jennys.gif
||warforum.cz/flyweb/
||warforum.cz/inau/
||warforum.cz/trika/
||zbynekmlcoch.cz/info/images/banners/*.swf
||zbynekmlcoch.cz/info/images/banners/banner_
||zvraceny.cz/data/upload/
!
! ---------- Slovak 1st party blocking rules ----------
!
||autobazar.eu/__branding/
||bannersector.sector.sk/
||cucaj.sk/images/bannery/
||dot.boss.sk
||fony.sk/content/banners/
||img5.uloz.to/ul3/images/hp_brand_tsbohemia.jpg
||mhdba.eu/banerova-reklama-animacia.gif
||partner.zoznam.sk
||player.joj.sk/age-chooser.swf
||sport.aktuality.sk/css/skins/
||tu-ke.com/certovskezlavy.jpg
||tu-ke.com/jozko.png
||tu-ke.com/kosiceprojekty.gif
||tu-ke.com/poker.jpg
||tu-ke.com/pokerbig.gif
||tu-ke.com/shirtsk.jpg
||tu-ke.com/shopcity.jpg
||tu-ke.com/svadobny-salon-la-fiaba-kosice.png
||war-board.net/banner.swf
||war-board.net/images/vlastenec.jpg
||war-board.net/reklamasj.js
||wasng.joj.sk/
||zoznamstatic.sk/project/mail/Werbung/
!
! ---------- General blocking rules ----------
!
||static.mymobucks.com/client_
||takeit.idnes.cz^$subdocument
||video.vid4u.org/vid4ul.js
!
! ---------- Czech 3rd party blocking rules ----------
!
||10.im.cz$third-party
||a.stats.cz$third-party
||ad1.kde.cz^$third-party
||ad.adfox.cz^$third-party
||ad.autobazar.cz^$third-party
||ad.czechia.com^$third-party
||ad.eva.cz^$third-party
||ad.seznam.cz^$third-party
||ad.surtep.cz^$third-party
||adexpert.cz^$third-party
||admarket.cz^$third-party
||admatik.pl^$third-party
||ads.esports.cz^$third-party
||adverts.cz^$third-party
||aukro.cz/ap/ap_show.php?$third-party
||autoesa.cz/dynbann/$third-party
||b.lookit.cz^$third-party,subdocument
||banan.cz^$third-party
||banner.ifortuna.cz^$third-party
||banners.onebit.cz^$third-party
||bbmedia.cz^$third-party
||betclick.com^$third-party
||bidmax.cz^$third-party
||c.imedia.cz^$third-party
||cars.cz^$third-party
||dev.youcan.cz^$third-party
||dot.idot.cz^$third-party
||ecigareta.eu^$third-party
||elektro-1.cz/InterChange^$third-party
||elweb.cz$third-party
||fastshare.cz$third-party
||heureka.cz$third-party
||i.imedia.cz/$third-party
||inclick.sk^$third-party
||intext.billboard.cz^$third-party
||intext.lookit.cz^$third-party
||intext.wdt.cz^$third-party
||megadarky.cz^$third-party
||n.hyperinzerce.cz^$third-party
||net4ge.cz^$third-party
||net4ge.net^$third-party
||netadvert.cz^$third-party
||observer.cz^$third-party
||out-ng.sklik.cz^$third-party
||out.sklik.cz^$third-party
||pizzamodena.cz$third-party
||playamo.cz^$third-party
||porno-tv.spustit.cz^$third-party
||potenza.cz$third-party
||proklik.cz^$third-party
||script.zebricek.cz^$third-party
||stat.novinky.cz^$third-party
||stat.sport.cz^$third-party
||supersouteze.best4man.cz^$third-party
||tely.cz^$third-party
||xzone.cz$third-party
||zapakatel.cz^$third-party
!
! ---------- Slovak 3rd party blocking rules ----------
!
||heureka.sk$third-party
||ls.hit.gemius.pl/^$third-party
||netsuccess.sk$third-party
||p1.naj.sk^$third-party
||top-sk.mconet.biz^$third-party
!
!---------- Czech Whitelist ------------
!
@@/banners/banner$domain=hafici.cz|svatba.cz
@@||activesolutions.cz/ad/www/delivery/ajs.php?zoneid=19&$script,domain=autoroad.cz
@@||ads2.czc.cz/www/
@@||alfacomp.cz/reklama/
@@||autotube.cz/ui/player/ad.php
@@||bbelements.com/crossdomain.xml$domain=idnes.cz
@@||cz.adocean.pl/files/js/ado.js$domain=blesk.cz
@@||fastshare.cz/banner/site_logo.jpg
@@||g.idnes.cz/o/lidovky_ln3b/poutaky/sport/
@@||hry.cz/ad/ad.aspx?
@@||iboys.cz/advert-list.php
@@||moviezone.cz/js/
@@||new.iboys.cz/advert-list.php
@@||sokolov.cz/images/reklama/
@@||static.tn.nova.cz/static/cz/shared/js/banners.js
@@||ta3.com/advert-async-system/load-items.html?
!
!---------- Slovak Whitelist ------------
!
@@||img.aaaauto.eu/thumb/
@@||yukata.cz/banners/banner_88_31.png$domain=anime-kool.webnode.sk
!
!---------- Czech and Slovak Generic Element Hiding Rules ----------
!
###adblock-rightside
###adRectangle
###autobazar-promo
###bnrhacksky
###bnrhacksqr
###bnrskyr
###bnrsqr
###bnrstr
###bnrtopleft
###etarg
###etarget
###etarget-container
###etarget-container-big
###full_ad_note
###hp_ab
###inclickDock
###nike-banner-hokej
###P_reklama_120x600
###promo-box
###prolinkhd
###reklama_ahead
###reklama-etarget
###reklama-nudle
###reklamni-box
###reklamy
###sklik
###sklikReklama_19976
###slevomat_ad
###super_ad_note
###super_banner_default
##.ad_font
##.advert-square
##.article-adtip-box
##.etarget
##.hp-advert
##.jobscz
##.popisreklama
##.promo-in-article
##.reklama-3
##.reklama-abmix
##.reklama-bottom
##.reklama-box
##.reklama-left
##.reklama-lista
##.reklama-right
##.reklama-top
##.reklama_ahead
##.reklama_box_standard
##.reklama_square
##.reklama_title_flat
##.reklamaBottom
##.reklamaHorniLista
##.reklamaOdkazyVeVetachDole
##.reklamni-up-1
##.reklamni-up-2
##.sklik-block
##.sklik-box
##.sklik
##.sklik_left
##.sklik_right
##.spored-links
##.topreklama
##.vreklama
!
!---------- Czech Site Specific Element Hiding Rules ----------
!
abecedazahrady.dama.cz##.banneraltext
adfox.cz###vse
aktualne.centrum.cz##.box-dvojity
aktualne.centrum.cz##.box-reality
aktualne.centrum.cz##.cars-regiony
aktualne.centrum.cz##.regiony-najisto
aktualne.centrum.cz##.top-standard-obal
alfacomp.cz###leftouterbanner
alfacomp.cz###middlebanner
alfacomp.cz##.rtxtbannerh4
amk.to###header
autoesa.cz###bannerPopup
autorevue.cz###adblock-leaderboard-clip
autorevue.cz##.banner
autotube.cz##.rklh
autotube.cz##.rklv
autoweb.cz##.rklh
blesk.cz###slevisteBox
blisty.cz##.botadv
blisty.cz##.midadv
blisty.cz##.topadv
blog.cz###mainBanner
bohemians.cz###reklama_uvod
businessworld.cz###skyscraper
businessworld.cz##.banner
businessworld.cz##.square_banner
cdr.cz##.not4bbtext
centrum.cz###top-banner
centrum.cz##.container-adfox
centrum.cz##.najisto
cervenykostelec.cz##.sliderbubble-right
ceskatelevize.cz###commercialBox
ceskatelevize.cz###etargetBox
ceskatelevize.cz##.commercialBox
ceskenoviny.cz##.hypertexty
cesky-jazyk.cz###playamo
cesky-jazyk.cz###splayamo
cesky-jazyk.cz##.cornerbox
cesky-jazyk.cz##.heurekaIframeHeader
cestovani.tiscali.cz###zone-tiscali-cestovani-wide
computerworld.cz###skyscraper
computerworld.cz##.ad-obal
computerworld.cz##.banner
computerworld.cz##.square_banner
csfd.cz##.ad-samsung
csfd.cz##.branding.bottom
csfd.cz##.branding.left
csfd.cz##.branding.right
csfd.cz##.branding.top
csfd.cz##.ct-general.th-5
ct24.cz##.commercialBox
cyklotoulkytv.cz##.advert_vert_cs.advert_745x100
cztorrent.net###banner_header
cztorrent.net###banner_skyscraper_right
cztorrent.net###hracky
digitalnitelevize.cz##DIV[style="position: absolute; width: auto; height: auto; top: 0px; left: 783px; z-index: 1; background-color: #EBEEF7; text-align: center;"]
digitalnitelevize.cz##TD[style="font-size: 12px; font-family: Arial, sans-serif; color: Navy"]
diit.cz###block-block-30
diit.cz##.footer_links
diit.cz##.leftbox-main
doktorka.cz###zone-doktorka-box
doktorka.cz###zone-doktorka-sky
doktorka.cz##.ban1
drumandbass.cz##.banner
extrawindows.cnews.cz###block-block-1
extrawindows.cnews.cz###block-block-2
extrawindows.cnews.cz###block-block-5
financninoviny.cz##.hypertexty
firmy.cz###column
fotoaparat.cz###banner2
fotoaparat.cz##[style="border:1px solid #c7d0dc; text-align: center;"]
fotoaparat.cz##[style="border:1px solid #c7d0dc; text-align: center;font-family: Arial,\"Geneva CE\",sans-serif;"]
fotoaparat.cz##[style="margin: 0 0 8px 0; border:1px solid #c7d0dc;"]
fotoaparat.cz##[style="position: absolute; top: 610px; left: 633px; width: 155px; hheight: 360px;"]
fotoaparat.cz##[style="position: absolute; top: 610px; left: 770px; width: 155px; hheight: 360px;"]
fotoaparat.cz##[style="width:628px; height:60px"]
fotoradce.cz###reklamad-vlevo
fotoradce.cz###reklamavlevo
gamepark.cz###bmenu
gamepark.cz###supersize
gamepark.cz##.banner
gamepark.cz##.headerpicture
google.cz,google.com###mbEnd
google.cz,google.com###tads
hcplzen.cz###ads_top_box
heureka.cz###bottom
hokej.cz##.ban1
hokej.cz##.dolni_reklama
hokej.cz##.top_banner
hokej.cz##.top_banner_second
hyperinzerce.cz###banners
hyperinzerce.cz###ilayerr
hyperinzerce.cz###skyscraper
idnes.cz###aaa-box
idnes.cz###advert
idnes.cz###eTargetContent
idnes.cz###hyper300
idnes.cz###r
idnes.cz###r-billboard
idnes.cz###self-box
idnes.cz###self-promo
idnes.cz###selfik-box
idnes.cz###topkontakt-ahead
idnes.cz###topkontakt-sph
idnes.cz###wbox-dovolena
idnes.cz##.adbox-regiobox
idnes.cz##.aheadegiobox
idnes.cz##.ahead
idnes.cz##.catchbox-dual-l
idnes.cz##.col-r
idnes.cz##.m54
idnes.cz##.r-body
idnes.cz##.r-head
idnes.cz##.r-text
idnes.cz##.raketa_dacan
idnes.cz##.sme-art
idnes.cz##.widesquare
ihned.cz###eTargetScript
ihned.cz###r-big-ozn
ihned.cz###r-drazby
ihned.cz###r-nes
ihned.cz###rbannery-items
ihned.cz###sklik
ihned.cz##.jobs09
ihned.cz##.jobs09-label
ihned.cz##.karieraweb-box
ihned.cz##.karieraweb-label
kecy.roumen.cz##.roumingLista
kurzy.cz###adv_fullhead
kurzy.cz###adv_nestandardni
kurzy.cz###adv_prezentace
kurzy.cz###elektro
kurzy.cz###exchangedlinks
kurzy.cz###partnerbox
kurzy.cz##.box2
kurzy.cz##.box4
kurzy.cz##.box9
kurzy.cz##.textovka
kurzy.cz##DIV[style="border: 1px silver solid; float: left;"]
lamer.cz##.square
lidovky.cz###reality-idnes
lidovky.cz###self-box
lidovky.cz###self-promo
lidovky.cz###selfik-box
lidovky.cz##.ahead
lidovky.cz##.col-d
lidovky.cz##.widesquare
lupa.cz###speed-promo
mediafax.cz##.bannercauta
mediafax.cz##.casetaright
medop.cz###block-nodesinblock-0
moda.cz##.square
moda.cz##DIV[style="clear:both; padding-top:30px; width:540px;"]
mojevideo.sk###brnd_koz
mobilizujeme.cz###leaderbanner_space
mobilizujeme.cz##.fullbanner
mp3s.nadruhou.net###lista
mp3s.nadruhou.net##DIV[style*="padding: 0px; height: 270px;"]
mp3s.nadruhou.net##DIV[style*="padding: 0px; height: 275px;"]
mp3s.nadruhou.net##DIV[style*="width: 380px; min-height: 30px;"]
mp3s.nadruhou.net##DIV[style*="width: 202px; height: 60px;"]
naakup.cz###ad-selfpromo
naakup.cz###footer-link
naseadresa.cz###bannersPanel
naseadresa.cz##.advertAlignBoxSpec
naseadresa.cz##.homeAdvertisement
nasepenize.cz##.ks-detail-clanku
nasepenize.cz##.latest-hypertext
nova.cz###banner_nestandard
nova.cz###bb_wallpaper
nova.cz###bbbanner_big_1
nova.cz###bbbanner_big_2
nova.cz###bbbanner_big_3
nova.cz###header_adv_wrap
nova.cz###partners_list
nova.cz###pr_banner_container
nova.cz###sport_banner_flash
nova.cz###square_banner
nova.cz###square_banner_2
nova.cz##.big_baner
nova.cz##.pr_box
novinky.cz###advertRightTopPosition
novinky.cz###sklikReklama_6022
orbion.cz###DIV[style="text-align: center; display: none; z-index: 9999; bottom: 0px;"]
orbion.cz###videoad_full_vol_201305
orbion.cz###videoad_curtain_vol_201305
osel.cz##.right
parlamentnilisty.cz###prezentace
parlamentnilisty.cz###square-dole
parlamentnilisty.cz##.wallpaper
pcworld.cz###skyscraper
pcworld.cz##.banner
penize.tiscali.cz###zone-tiscali-penize-wide
prague.cz##TABLE[bgcolor="BLACK"]
pravidla.cz##.advtick
programujte.com##.jobs
recepty.vareni.cz##.banner
restaurace.cz##.banner-120-600
restaurace.cz##.banner-300-300
ronnie.cz###fixedMenu
ronnie.cz###rek3
ronnie.cz###rodkaz
ronnie.cz##DIV[style="width:100%;height:50px;background-color:#F5FAFF;margin-bottom:19px;padding-top:5px;"]
root.cz###box-64bit-eu
root.cz###servers-promo
rouming.cz##.roumingLista
rychlost.cz##.hb
search.seznam.cz##.sklik
serialycz.cz##CENTER
serialycz.cz##P[style="text-align: center;"]
securityworld.cz##.banner
smartmania.cz###tely-top
smartmania.cz##.bAdvert
smartmania.cz##.heureka3-content
sms.cz##[style="vertical-align:middle; text-align: left; width: 139px;"]
sms.t-zones.cz###adv-topmenu-bar
sms.t-zones.cz###gk-skyscraper
sms.t-zones.cz##P[style="font-size:10px;margin:0;"]
sokolov.cz##IMG[src="/images/reklama/Banner_Wolf.jpg"]
sokolov.cz##IMG[src="/images/reklama/toyota_men__.gif"]
sony-playstation.cz###banner1
sport.tiscali.cz###zone-tiscali-sport-wide
stesti.cz##.mabo.faa
stesti.cz##[style="width:960px;margin:0 auto;text-align:left"]
stream.cz###img_link
stream.cz###user_head
superhry.cz##.video-doporucujeme
t-mobile.cz##.advttl
tn.nova.cz##.right_box_promo_articles
topzine.cz###vyjizdeciBoxikDiv
tv.sms.cz##.P_nadpis[style="text-align:center;height:1em"]
tv.sms.cz##[style="background-color:#cccccc;margin-top:.5em;padding-left:.7em;padding-right:.7em;padding-top:.1em;padding-bottom:.1em;width:90%"]
tv.sms.cz##[style="border:1px solid #B7B7B7;width:320px"]
tvfreak.cz##.banner
tvfreak.cz##.sidebar-banner
tvfreak.cz##.skyscrapper-right
tvt-online.cz###a3f
tvt-online.cz###ideckoo
uloz.to##.banner300x300
uschovna.cz###tiscali-bar
uschovna.cz##.bottom_banner
uschovna.cz##.right_banner_mat
videacesky.cz##.im_top
videacesky.cz##.leftAddBarContainer
vodafonesms.cz##.banner-block-inside1
vodafonesms.cz##.banner-block-right
volny.cz###banner_flash
volny.cz###services_content
volny.cz##[style="padding: 4px; font-size: 11px; background-color: #F6F8EA"]
war-board.net##.mainmenu[style="color:red;font-weight:bold;"]
warforum.cz##A[href="http://acu.cz"]
warforum.cz###adLocation-21
warforum.cz##H3
warforum.cz###popwrapper
webovastranka.cz###deny_anonymous_visitors
webovastranka.cz###overlay
wmmania.cz###header-banner
zdravi.tiscali.cz###zone-tiscali-zdravi-wide
zena-in.cz##.reklama-doporucujeme-right
zena-in.cz##.reklama-kontext-right
zeny.cz##.commerce
zeny.cz##.commercehead
zeny.cz##.partner
zeny.tiscali.cz###zone-tiscali-zeny-wide
zive.cz###ctl01_jobs
zive.cz###zivefirmy
zive.cz##.banner
zive.cz##.banner-box
zpravy.tiscali.cz###zone-tiscali-zpravy-wide
zvraceny.cz###video-reklama-obal
zvraceny.cz##.opacne.text-reklama
zvraceny.cz##.reklama-vodorovne
!
!---------- Slovak Site Specific Element Hiding Rules ----------
!
aktuality.sk##.box-silver.texttip-box.silver-box-big
amateri.sk###banner_left1
amateri.sk###top_rekl
autobazar.eu##.bannero2
azet.sk##.boxzlavy
centrum.sk##.h2.grad2.kupons_games
centrum.sk##.banner
dsl.sk##.header_info_text
fony.sk##.divArticleBannerTop
forum.mobilmania.azet.sk###rwrap
forum.zive.sk###rwrap
hladaj.referaty.atlas.sk###specbox
itnews.sk###backgroundbanner
itnews.sk##.menu_logo
lepsiebyvanie.centrum.sk##.tip
mail.zoznam.sk###box3
mojevideo.sk###brnd_htc1
pcforum.sk##table[align="left"]
pcforum.sk##TD[style="colspan: 2; cursor: pointer;"]
pcforum.sk##td[style="padding: 5px; margin: 5px; cursor: pointer;"]
pcforum.sk##td[width="110px"]
pcforum.sk##.titles
pokec.azet.sk##.c_banner300x300
pretaktovanie.zoznam.sk##.post.bg5
slovnik.azet.sk##.articlesBnr
sme.sk###wg_megaboard
sport.aktuality.sk###skin_link_left
sport.aktuality.sk###skin_link_right
topky.sk##.ad
topky.sk##.box_advertisment.addbox.recycle
topky.sk##.nastip
topky.sk###top-offers-slider
topnovinky.sk###rekl_left_banner
webnode.sk###f3l9j1708q
webnode.sk###fStrip150815823
zoznam.sk##.adbox-genertel
zoznam.sk###rajknih
zoznam.sk###tipy
zoznam.sk##P.left
!
!---------- For EasyList Users ----------
!
$advertisement/
/cgi-bin/banner/*
!
!---------- Experimental ----------
@@svet-it.sk
@@||adtech.de$domain=svet-it.sk
@@||s.atemda.com/Admeta.js
@@||atemda.com$domain=svet-it.sk

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,122 @@
[Adblock Plus 2.0]
! [Icelandic ABP List]
! Adblock Plus listi fyrir íslenskar vefsíður / Adblock Plus list for icelandic websites
! Síðast uppfærður / Last updated 12 Júní/June 2014
! Listinn er í þróun, láttu vita ef þú finnur villur eða vefi sem vantar í listann / The list is under development, please let me know if you find any errors or webs missing from the list
! adblock@gardar.net
! http://adblock.gardar.net
.is/ads/
.is/augl/
.is/*/augl/
||auglysingar.vinnustofan.is/
||skilo.is/orbit/
||bland.is/*/click.aspx?id=
||pressan.is/img/banners/
||fotbolti.net/banners/
||vf.is/files/
||visitreykjavik.is/PortalData/1/Resources//flash/
||doktor.is/images/banners/aads/
||f4x4.is/images/banners/
||dagskrain.is/static/auglysingar/
||utvarpsaga.is/images/banners/
||dfs.is/images/banners/
||siglo.is/static/auglysingar/
||freisting.is/logo/banners/
||freisting.is/skjalasafn/flash/
||freisting.is/skjalasafn/bordar/
||austurglugginn.is/images/banners/
||veitingastadir.is/resources/Files/
||leikjaland.is/images/banners
||boksala.is/portaldata/1/resources/Bannerar/
||flass.is/banners/
||soda.is/uploads/
||dv.is/media/news/kragi/
||hopkaup.is/banner/
||bmwkraftur.is/img/benni-Toyo_bordi2-500x60.gif
||soda.is/qikqik/
||tal.is/bordar/
||vefbordar.sitrus.is/
||live2cruize.com/auglysingar/
||bilasolur.is/AdPlayer.aspx?ad=
||bilasolur.is/banners/
visir.is###topadbanner
dv.is##.gardina
ja.is##.adw
bb.is##.banner-container
bb.is##.banner
smugan.is##OBJECT[width="300"]
smugan.is##.header_add
kki.is##.AuglysingaHnappur
skessuhorn.is##.tdAuglMidja
skessuhorn.is##.imgAuglHead
skessuhorn.is###imgAuglRight_1
skessuhorn.is###imgAuglRight_4
eidfaxi.is##.forsaugl
foreldrahandbokin.is###adinj-2
sporttv.is##.ad-tower
sporttv.is##.banner
sporttv.is##DIV[style="padding: 20px 0; text-align: center;"]
veitingastadir.is##[id*="HeaderAd"]
##A[href^="/framework/resources/forms/ads.aspx"]
bland.is##div[id*="advImg"]
bland.is##.boughtsmas.box
bland.is###modalBackground
bland.is##.slider-wrapper
bland.is##.box.classifedSmas
apache.hvitahusid.is###Stage_btn_transparent
pressan.is###ctl00_RandomBanner2_divBanner
pressan.is###skyscrapper
pjatt.is###text-113
pjatt.is###image-3
sporttv.is###top-banner
sporttv.is###sambio-banner
flass.is###ForsidaMB1
flass.is###ForsidaMB2
flass.is###ForsidaBotn
flass.is##.col2
flass.is##.turn
menn.is##.su-column.su-column-1-3.su-column-style-1
menn.is###text_mnky-2
menn.is###text_mnky-3
mbl.is###slot-668
mbl.is##.augl
||kynning.olis.is/
pressan.is##.randombanner-upperright
apache.hvitahusid.is###augl
dv.is###cboxOverlay
hun.is###snppopup-welcome
infront.is###like
ads.bleikt.is/
ads.pressan.is/
ads.aha.is/
pressan.is##.bp4
pressan.is##.bp26
pressan.is###13_3623
pressan.is###spoton
pressan.is##.fb_ltr
bleikt.pressan.is##.fb_ltr
||openad.visir.is/
clients.ennemm.is###nm_container
fotbolti.net###banner1
fotbolti.net###banner2
fotbolti.net###banner3
fotbolti.net###banner4
fotbolti.net###banner5
fotbolti.net###banner6
fotbolti.net###banner7
fotbolti.net###banner8
fotbolti.net###banner9
fotbolti.net###banner10
fotbolti.net###banner11
fotbolti.net###banner12
fotbolti.net###banner13
fotbolti.net###banner14
fotbolti.net###banner15
fotbolti.net###banner16
fotbolti.net###banner17
||fotbolti.net/themes/2013/images/LG_rammi_mestlesid.jpg
||fotbolti.net/themes/2013/images/LG_rammi_mestlesid_back.jpg
||fotbolti.net/themes/2013/images/vef_bg.png
||fotbolti.net/themes/2013/images/dominos_logo1.png
||fotbolti.net/themes/2013/images/vodafone_logo.png
||auglysingar.pipar.is/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,787 @@
[Adblock Plus 2.0]
! Checksum: ie4zMbwDawgY882Q9imDYQ
! Title: ABPindo
! Last modified: 15 Juni 2014, 13:14:24 WIB
! Expires: 4 days (update frequency)
! Homepage: http://abpindo.blogspot.com/
! Licence: http://indonesianadblockrules.googlecode.com/hg/subscriptions/COPYING
!
! Please report any unblocked adverts or problems
! in the forums (http://forums.lanik.us/viewforum.php?f=94)
!
! *** abpindo_general_block.txt ***
-iklan.gif|
.biz/iklan/
.com/iklan/
.id/ads/$~object-subrequest
.id/iklan/
.info/iklan/
.me/iklan/
.my/iklan/
.net/iklan/
.tv/iklan/
/ads/iklan.
/bb17-iklan.
/images/iklan/*
/obat-kuat-sex.gif|
/sbcagent.gif|
/SkinADkanan.
/SkinADkiri.
/uploads/iklan/*
/usaha-berhasil.gif|
/usahaberhasil.gif|
agen_bola_online.gif|
bundapoker.gif|
sarana88.gif|
! *** abpindo_general_hide.txt ***
###Box-Banner-ads
###adsground
###adv-placeholder
###bottom_exclusive_ads
blogspot.com###btm_banner
###desaiklan
blogspot.com###floating_banner_bottom
blogspot.com###floating_banner_bottom2
blogspot.com###floating_banner_top img[width="728"][height="90"]
###floatingad
###iklan
###iklan1
###iklan2
###iklan3
###iklan4
###iklan_atas
###iklanatas
###iklanpersegi
###top_ad_full
blogspot.com###topbar
###tupiklan
##.SectionAds
##.ad_primex
##.ads.section
##.bannerads
##.bgads
##.gbcontent
##.gpcontent
~kontan.co.id##.iklan
##.iklan728
##.iklanmini
##.pasangiklan
##.topadsense
com##img[alt="Agen Judi Online"]
##img[alt="Pasang Iklan Anda Disini"]
com##img[alt="Pasang Iklan Murah"]
com##img[alt="Space Iklan"]
com##img[alt="Taruhan Bola Online"]
blogspot.com##img[alt="ads"]
! *** abpindo_thirdparty.txt ***
||108.168.231.179^$popup,third-party
||188bet.com^$third-party
||1iklanbaris.com^$third-party
||1st-iklan.com^$third-party
||988bet.com^$third-party
||abadiklan.com^$third-party
||ad.adflazz.com^$third-party
||adbusinessfree.com^$third-party
||adcenter2u.com^$third-party
||addesigner.com^$third-party
||admitra.com^$third-party
||adplus.co.id^$third-party
||adreviewcamp.com^$third-party
||adsbingo.com^$third-party
||adsense-id.com^$third-party
||adsensemu.com^$third-party
||adspeedy.com^$third-party
||adsrelease.com^$third-party
||agenasia88.com^$third-party
||agenbo.la^$popup,third-party
||agenpromosi.com^$third-party
||agent926.com^$third-party
||ajangiklangratis.com^$third-party
||alamatemail.com^$third-party
||anadvertorial.com^$third-party
||anekaiklan.com^$third-party
||apmmedia.net^$third-party
||arenabola.com^$third-party
||asiabolabet.com^$third-party
||axverta.com^$third-party
||baliadv.com^$third-party
||bandarjudi.com/$popup,third-party
||bejopoker.com^$third-party
||bekas.com^$third-party
||belajar-bisnis.com^$third-party
||betwin188.com^$third-party
||bigextracash.com^$third-party
||biindit.com^$third-party
||bincangbisnis.com^$third-party
||bintangbola.net^$third-party
||biroiklangratis.com^$third-party
||biropromosi.com^$third-party
||bisnisgratis.net^$third-party
||bisnishandal.com^$third-party
||bisnisinternetmu.com^$third-party
||bisnisok.com^$third-party
||bisnistransportasi.com^$third-party
||bola777.net^$third-party
||bolaketangkasan.com^$third-party
||bravevolitation.com^$third-party
||btybet.com^$third-party
||bursabet.com^$third-party
||carasukses.com^$third-party
||cash-harvest.com^$third-party
||cashburners.biz/banners/$third-party
||cfs.u-ad.info^$third-party
||clickdbs.com^$third-party
||clickmedia.co.id^$third-party
||clicks4cents.com^$third-party
||clicksia.com^$third-party
||dewa-bisnis.com^$third-party
||dewamabuk.com^$third-party
||doremibet.com^$third-party
||duitbux.com^$third-party
||duitmu.com^$third-party
||dunia-bisnis.com^$third-party
||earneasycash.info^$third-party
||easy-hit-counter.com^$third-party
||edomz.com^$third-party
||entryad.com^$third-party
||fairbet88.com^$popup,third-party
||fellowequality.com^$third-party
||firstbola.com/$popup,third-party
||flexterkita.com^$third-party
||formulabisnis.com/images/$third-party
||forumiklan.com^$third-party
||gadget-ads.com^$third-party
||gajigratis.com^$third-party
||galaxybola.com^$third-party
||gambar123.com/$popup,third-party
||goodlucky99.com^$third-party
||gowellup.com^$third-party
||gratisiklanpasang.com^$third-party
||gratisiklanpasang.net^$third-party
||groupiklan.com^$third-party
||idblognetwork.com/images/banner468x60/$third-party
||idblognetwork.com/images/banner728x90/$third-party
||idr-clickit.com^$third-party
||iklan-baris.org^$third-party
||iklan-indo.org^$third-party
||iklan-laris.com^$third-party
||iklan-sukses.com^$third-party
||iklanads.com^$third-party
||iklanbaliku.com^$third-party
||iklanbaris-gratis.com^$third-party
||iklanbarisgratis.co.uk^$third-party
||iklanbarisgratis.info^$third-party
||iklanbarisgratis.net^$third-party
||iklanbarisgratis.org^$third-party
||iklanbarisgratispasang.com^$third-party
||iklanbarisgratispasang.net^$third-party
||iklanbariskusuma.com^$third-party
||iklanbarislaris.com^$third-party
||iklanbarismandiri.com^$third-party
||iklanbarismu.com^$third-party
||iklanbarispro.com^$third-party
||iklanbaristanpadaftar.com^$third-party
||iklanbiru.com^$third-party
||iklanbisnisbali.com^$third-party
||iklanbisnisku.com^$third-party
||iklanbisnispro.com^$third-party
||iklanblogger.com^$third-party
||iklanbogor.com^$third-party
||iklandenpasar.com^$third-party
||iklandiweb.com^$third-party
||iklandunia.com^$third-party
||iklanekstra.com^$third-party
||iklangoogle.com^$third-party
||iklangra-tis.com^$third-party
||iklangratis.co.uk^$third-party
||iklangratis88.com^$third-party
||iklangratisindonesia.com^$third-party
||iklangratisindonesia.net^$third-party
||iklangratisindonesia.org^$third-party
||iklangratiskita.com^$third-party
||iklangratiskusuma.com^$third-party
||iklangratismu.com^$third-party
||iklangratisonline.com^$third-party
||iklangratispasang.com^$third-party
||iklangratispasang.net^$third-party
||iklangratispasang.org^$third-party
||iklangratispro.com^$third-party
||iklanhemat.com^$third-party
||iklanhoki.com^$third-party
||iklanhouse.com^$third-party
||iklanjagoan.com^$third-party
||iklankomplit.com^$third-party
||iklanlowongan.com^$third-party
||iklanmarket.com^$third-party
||iklanoke.com^$third-party
||iklanonlinemu.com^$third-party
||iklanpasanggratis.com^$third-party
||iklanpedia.com^$third-party
||iklanplaza.com^$third-party
||iklanprimaku.com^$third-party
||iklanpromo.com^$third-party
||iklansilver.com^$third-party
||iklantanpadaftar.com^$third-party
||iklanteks.com^$third-party
||iklantelevisi.com^$third-party
||iklanterpopuler.com^$third-party
||iklantext.com^$third-party
||iklantop.net^$third-party
||iklanumum.com^$third-party
||iklanvip.net^$third-party
||iklanwebid.com^$third-party
||iklanyahoo.com^$third-party
||imgur.com/*.gif$domain=movie76.com
||incentria.com^$third-party
||incrasebux.com^$third-party
||indoagenbola.com^$popup,third-party
||indobanner.com^$third-party
||indofreeads.com^$third-party
||indovertiser.com^$third-party
||investasiceria.net^$third-party
||istanaiklan.com^$third-party
||jagoiklan.com^$third-party
||jagopromo.com^$third-party
||jasaiklan.com^$third-party
||javaiklan.com^$third-party
||javapic.com^$third-party
||jillsclickcorner.com^$third-party
||jingkrak.com^$third-party
||jollywallet.com^$third-party
||juruiklan.com^$third-party
||kakakdewa.com/$popup,third-party
||kakakdewa.net^$third-party
||klikabadi.com^$third-party
||klikabadi.net^$third-party
||klikajadeh.com^$third-party
||ladangiklan.com^$third-party
||ladanguang.com^$third-party
||link2communion.com^$third-party
||lokeriklan.com^$third-party
||lytogame.com/images/partner/$third-party
||lytogame.com/partner/$third-party
||mabosbet.com^$third-party
||manasuka.com/gbr_banner_link/$third-party
||maripromosi.com^$third-party
||marketbola.com^$third-party
||masteriklan.net^$third-party
||mauiklangratis.com^$third-party
||mediaiklanpapua.com^$third-party
||mesiniklan.andipublisher.com^$third-party
||mpnrs.com^$third-party
||mybannermaker.com^$third-party
||nuansaiklan.com^$third-party
||numpanglewat.com^$third-party
||onclinic24.com^$third-party
||onedollarptc.com^$third-party
||paidforfree.com^$third-party
||paidtoclick.com^$third-party
||paneniklan.com^$third-party
||papan-iklan.com^$third-party
||pasang-iklan.com^$third-party
||pasang-iklanbaris.com^$third-party
||pasang-iklangratis.com^$third-party
||pasanggratisiklan.com^$third-party
||pasangiklan.com^$third-party
||pasangiklanbaris.com^$third-party
||pasangiklanbaris.net^$third-party
||pasangiklanbarisgratis.com^$third-party
||pasangiklanbarisgratis.net^$third-party
||pasangiklanbarisgratis.org^$third-party
||pasangiklangratis.com^$third-party
||pasangiklangratis.org^$third-party
||pasangiklangratisbaris.com^$third-party
||pasangiklangratisbaris.net^$third-party
||pasangiklanku.com^$third-party
||pasangiklanmu.com^$third-party
||pasariklanbaris.com^$third-party
||paypalbisnis.com^$third-party
||paypopup.com^$third-party
||peluangbisnis.org^$third-party
||pemaintogel.info^$third-party
||perawan.pro/$popup,third-party
||perawan3gp.com^$popup,third-party
||pokerjujur.com/$popup,third-party
||pondokiklan.com^$third-party
||popupmoney.com^$third-party
||portaliklan.com^$third-party
||postimg.org/*.gif$domain=21sinema.com
||poweredprofits.com^$third-party
||ppcinbox.com^$third-party
||ppcindonesia.net^$third-party
||promobagus.com^$third-party
||promosiiklan.com^$third-party
||promotioncamp.com^$third-party
||publish.web.id^$third-party
||pundibux.net^$third-party
||pusatiklan.com^$third-party
||pusatpromosiiklan.com^$third-party
||rahasiapanas.com^$third-party
||rajabet77.com/$popup,third-party
||ratubola.com^$third-party
||realwap.net^$third-party
||referral-secrets.com^$third-party
||rupiahbux.com^$third-party
||sanglah.com^$third-party
||sbbanner.com^$third-party
||sbo303.com^$third-party
||sebar.idblognetwork.com^$third-party
||selectionlinksjs.info^$third-party
||sentra-iklan.com^$third-party
||sentrapromosi.com^$third-party
||serbapromo.com^$third-party
||sharepointads.com^$third-party
||sitti.co.id^$third-party
||situsbet.com^$third-party
||situsiklan.web.id^$third-party
||situsiklanbaris.com^$third-party
||situsjudi.com^$popup,third-party
||sogoplaza.com^$third-party
||suarabola.com/banners/$third-party
||sumberiklan.com^$third-party
||suryaiklan.com^$third-party
||teliad.com^$third-party
||textlinksdepot.com^$third-party
||textspace.net^$third-party
||theclickers.net^$third-party
||tinggalklik.com^$third-party
||topklik.com^$third-party
||topskor.us^$third-party
||topsurfer.com^$third-party
||trafficfactory.biz^$popup,third-party
||tri7bet.com^$third-party
||twap.eu^$third-party
||u-on.eu/c.php?$third-party
||u1win.com^$third-party
||unobux.com^$third-party
||usahaberhasil.com^$third-party
||useads.com^$third-party
||webbola.com^$third-party
||webiklan.com^$third-party
||weblogiklan.com^$third-party
||webtrackerplus.com^$third-party
||yesads.com^$third-party
! *** abpindo_specific_block.txt ***
|http://173.199.189.86/images/*.gif$domain=forumbokep.com|vocland.com
||alertpay.com/banners/
||angel.exabytes.com.my/banners/
||armylookfashion.com/728.swf
||asianbrain.com/banner/
||bacamanga.com/images/indofiles/$image
||bingofreebonus.net/bfbcontent/locker.js?
||blogspot.com/$popup,domain=bioskop21.us|bokepgratiz.info
||blogspot.com/*.gif$domain=duniasex.ws
||bokepgratiz.info/banner/
||bolavegas.com/ads/
||coblos.net^*.swf$domain=bintangmawar.net
||detik.com/images/banners/
||dinastybet.com/banner/
||dixam.net/banner/
||dorabet.net/banner/
||drtuber.com/templates/drtuber/js/adx_flash_embed.js?
||duniasex.ws/banner-
||ebsoft.web.id/wp-content/banners/
||ewetot.com^$image,object,domain=bintangmawar.net
||forumbookie.com/banner/
||forumkami.net/ad125x125/
||forumkami.net/ad200x50/
||ganool.com/wp-content/uploads/*.gif
||googledrive.com/host/0B-OnGqBU3zuJWVBFZzI5ak01STg
||googleusercontent.com/*.gif$domain=duniasex.ws
||harakah.net.my/images/stories/iklan/
||harianjogja.com/banner/
||harianjogja.com/img/bnr/
||id.hao123.com/resource/id/banner/
||iklanbaris.detik.com/
||images.gameweb.co.id/gw/ads/
||images.indoforum.org/banners/
||imgur.com/*.gif$domain=animekompi.web.id|downloadfilmbaru.com|sodasusu.com|unduhfilm21.net
||indobokepz.com/images/banner/
||indochanger.com/banner/
||jagatreview.com/wp-content/uploads/*-SKIN-
||kad.kaskus.co.id/banner/$subdocument
||kad.kaskus.com/banner/$subdocument
||kampus.us/banners/
||kapanlagi.com^*/banner/
||kaskus.co.id/adv/
||kaskus.co.id/images/banner-wap/
||kaskus.com/images/banner-wap/
||keripikcadas.com/banner/
||kkcdn-static.kaskus.co.id/css_v0.1/img/skin/
||kompas.com/data/banner/
||krucil.net/banner/
||krucil.net/KD.js
||krucil.net/KD_adplib.js
||kumpulblogger.com/minibanner/
||lendir.org/banner/
||mediaindonesia.com/public/banner/flash/
||megindo.net/megindo2/images/banner-
||mforum.cari.com.my/cari/daybanner/ads_daybanner_display.php?
||modemku.com/image-banner/
||modifikasi.com/images/banner/
||modifikasi.com/images/banner_
||mractionclub.com/banner/
||musisi.com/musifile/images_banner/
||my.postsgenius.com/style/banners/
||newopenx.detik.com/images/
||pancet.com/kbads/
||resep.web.id/banner/
||semprot.com/x_ads/
||serbiansoftware.com^$popup,domain=bioskop21.us
||sodasusu.com/banner/
||solopos.com/banner/
||suaramedia.com/images/banners/
||suaramerdeka.com/v1/images/iklan_ffi.$image
||tabloidbintang.com^*/space-iklan/
||tambahketinggian.com/banner/
||tinypic.com^$image,domain=bioskopkita.com
||upload.coblos.net/images/*.gif
||usnewopenx.detik.com/images/
||utusan.com.my/utusan/iklan/
||videogamesindonesia.com/banners/
||widih.modifikasi.com/images/banners/$domain=widih.modifikasi.com
||zonabola.com/wp-content/uploads/*/Banner-
||zonabola.com^*/iklan/
! *** abpindo_specific_hide.txt ***
wowkeren.com###Ad728
lintas.me###Advertisement
ic31linkpage.com,icinema3satu.com###FloatAlamindawa
indogamers.com###IklanIDGS
173.199.167.192,krucil.com,krucil.net###KD_adpB
widih.modifikasi.com###MAX_frame0.bannertop
widih.modifikasi.com###MAX_frame1.bannerleft
widih.modifikasi.com###MAX_frame2.bannerbottom
widih.modifikasi.com###MAX_frame3.bannerright
chip.co.id###TopBannerBg
forumbokep.com,idfl.biz,idfl.info,idfl.me,idfl.my.id,idfl.us,indofiles.web.id,sodasusu.com,vocland.com###ad_global_below_navbar
harianjogja.com,solopos.com###ads-float
dapurpacu.com###ads-mid
downloadfilmbaru.com###ads-stack
inilah.com,kompasiana.com###anchormasklink
tempointeraktif.com###banner-atas
tempointeraktif.com###banner-bawah
panduanpercuma.info###banner125
tribunnews.com###bannerku
tribunnews.com###bannerkubawah
detik.com###bottom_banner
indogamers.com###bottombanner
bioskop21.us###box-message
tribunnews.com###boxright [style="width:300px; height:250px;"]
adipedia.com,bokepgratiz.info,downloadfilmbaru.com,movie76.com,nusareborn.in###btm_banner
cinema81.com###btm_banner_kanan
cinema81.com###btm_banner_kiri
movie76.com###close-teaser
gudang.tv###container-bottom-menu-ads
gudang.tv###container-bottom-menu-ads2
90animax.com###energysaving
lintas.me###facebox_overlay
bioskop21.us###fadeinbox
teknoup.com###fancybox-wrap
teknoup.com###fancybox_ajax
forumbokep.com,krucil.net,vocland.com###floating_banner_bottom
ganool.com###floating_banner_top2
untukku.com###footer-adcont
resep.web.id###googlebox
indosiar.com###headerbanner
indosiar.com###headerbanner + div[style="height:50px"]
lensaindonesia.com###idcomboard1.com-728x90
lensaindonesia.com###idcomright1.com-300x250
lensaindonesia.com###idcomright2.com-300x250
lensaindonesia.com###idcomsensebox1.com-300x250
lensaindonesia.com###idcomsky1.com-160x600
jomniaga.com###imgBanner
downloadfilmbaru.com###itro_opaco
downloadfilmbaru.com###itro_popup
harakahdaily.net###jsemrp_372_719
harakahdaily.net###jsemrp_373_873
harakahdaily.net###jsemrp_374_469
harakahdaily.net###jsemrp_380_290
zonabola.com###lAds
komikbaru.com,mangafox.me###left-skyscraper
duniasex.ws###main_content_section > div[align="center"]
dapurpacu.com###mid-banner
cinema81.com###newnew > [align="center"] img[width="465px"]
indosat.com###preloader
zonabola.com###rAds
utusan.com.my###rec_ad4
movie76.com###related_posts img[alt="ads"]
komikbaru.com,mangafox.me###right-skyscraper
kapanlagi.com###scmicrosite
gopego.com###showcase1
gopego.com###showcase2
lintas.me###showcasedown
zonabola.com###simplemodal-container
zonabola.com###simplemodal-overlay
detik.com###skinad
harianjogja.com,solopos.com###solopos_float
downloadfilmbaru.com###sticky-ads
detik.com###sto_banner
cinema81.com,unduhfilm21.net###teaser1
17gratis.com,cinema81.com,downloadfilmbaru.com,galaxymaya.com,unduhfilm21.net,unikgaul.com###teaser2
172.245.177.74,cinema81.com,downloadfilmbaru.com,galaxymaya.com,movie76.com,unduhfilm21.net,unikgaul.com###teaser3
172.245.177.74,cinema81.com,sodasusu.com###teaser4
movie76.com###teaser5
movie76.com###teaser6
movie76.com###teaser7
17gratis.com###teaser8
detik.com###top_banner
bioskopkita.com###topbanner
jurigjarian.com###topbar
bioskopkita.com###toppopin
kapanlagi.com###v5-leaderboard
kapanlagi.com###v5-marcommpromotion
kapanlagi.com###v5-showcase1
kapanlagi.com###v5-showcase2
kapanlagi.com###v5-showcase3
kapanlagi.com###v7-marcommpromotion
kapanlagi.com###v7-marcommpromotion2
kapanlagi.com###v7-showcase1
kapanlagi.com###v7-showcase2
kapanlagi.com###v7-showcase3
clip.cewecewe.com##.ad
komikbaru.com##.ad.b300x250
m.kapanlagi.com##.ad2
gugling.com##.ad336x280atas
mangafox.com##.ad728x90.left + .right
indobokepz.com##.adBar-vertical.left
indobokepz.com##.adBar-vertical.right
loveindonesia.com##.ad_990_80
bharian.com.my##.adbtm
21sinema.com,dapurpacu.com,kompas.com##.ads
republika.co.id##.ads-160-600
republika.co.id##.ads-300-video
gudang.tv##.ads-content1
gudang.tv##.ads-content2
dapurpacu.com##.ads-home
kompas.com##.ads2
dapurpacu.com##.ads2-home
kompas.com##.adsMR1Lipsus1
antaranews.com##.ads_top_728
utusan.com.my##.adspace_300
m.iklanbaris.detik.com##.adtext01
teknoup.com##.advertisement_box1
teknoup.com##.advertisement_box2
palingseru.com##.alignnone.size-large.wp-image-458
kaskus.co.id##.banner-top-ads
oktavita.com##.banner-zone
kompas.com##.bannerAdB
kompas.com##.bannerCenter
kompas.com##.bannerCenter1SubRubrik
kompas.com##.bannerCenter2SubRubrik
kompas.com##.bannerCenterRubrik
kompas.com##.bannerR
indonesiasatu.kompas.com##.bannerR1
kompas.com##.bannerR2
kompas.com##.bannerR2A
kompas.com##.bannerR3
kompas.com##.bannerR3A
indonesiasatu.kompas.com##.bannerTop1
kompas.com##.bannerTopOut
lapar.com,loveindonesia.com##.banner_box
detik.com##.banner_inside_article
lapar.com##.banner_main
detik.com##.banner_reg
zonamuda.com##.bannertengah
bharian.com.my##.bh-ad
kaskus.co.id##.bottom-frame
kabar24.com##.bottom-frame-banner-close-btn
kabar24.com##.bottom-leaderboard-cont
gopego.com##.box
kompas.com##.boxBanner1
kompas.com##.boxBanner3
kompas.com##.boxBannerR1akt
kompas.com##.boxSkinAd
mforum.cari.com.my##.cari-ads
modifikasi.com##.cell_banner_inside
okezone.com##.center-ban
sindonews.com##.clear.size-wide-custom.dummy
tempo.co##.closebanner1
tempo.co##.closebanner2
tribunnews.com##.content [style="width:160px; height:600px;"]
lensaindonesia.com##.ctnitem.ctncom
dapurpacu.com##.fixed-ads-atas
teknoup.com##.footer_banner
catatankomputer.com##.forads
liputan6.com##.fr.box-ads-right
warungbebas.com##.gbtab
kompas.com##.hAds
kosmo.com.my##.iklan-puff
kosmo.com.my##.iklanBox
komikbaru.com##.iklan_kiri
detik.com##.iklan_tengah
gambarkeren.info##.iklankotak1
krucil.net##.krucil_ads
krucil.net##.krucil_floating_banner_top
kaskus.co.id##.l-link
lapar.com##.leftcontent[style="padding:0px; margin:0px auto; height:250px; width:720px; border:0px; background:none; "]
tribunnews.com##.mb20.ac.bsh3.ads
dapurpacu.com##.mid-banner
detik.com##.otp_banner_close
tribunnews.com##.ovh[style="width:468px;height:60px"]
lintas.me##.popup
kaskus.co.id##.r-link
okezone.com##.rc-ad-300x250
filmindonesia.or.id##.row.block.ad-unit-medium-retangle.center
semprot.com##.semprot_ads
republika.co.id##.set-ads-468
okezone.com##.skyscrapper
bokepgratiz.info##.textwidget
bioskop21.us##.textwidget img[width="160"][height="600"]
lapar.com##.top-banner
galaxymaya.com##.widget-content
movie76.com##.widget-content img[alt="ads"]
lintas.me##.xad-160x600
lintas.me##.xad-300x250
kaskus.co.id##a[href^="http://kad.kaskus."]
m.inilah.com##a[href^="http://mkhoj.com"]
downloadfilem.com##a[href^="http://promosipraktis.com/"]
republika.co.id##a[style="width: 100%; height: 100%; display: block; position: fixed; z-index: 1"]
situshp.com##div[style="height:260px;"]
forums.mangafox.me##div[style="margin:10px 0;width:186px;height:90px;background:#fff;border:1px solid #dadada;overflow:hidden;padding:2px;text-align:center;float:right"]
forums.mangafox.me##div[style="margin:10px 0;width:728px;height:90px;background:#fff;border:1px solid #dadada;overflow:hidden;padding:2px;text-align:center;float:left"]
tabloidbintang.com##div[style="position:absolute; top:20px; left:45px; width:70px; background:#000; text-align:center;"]
bokepgratiz.info##div[style="width:100%;text-align:center;"]
widih.modifikasi.com##img[alt="Pasang iklan di widih.com"]
komikbaru.com##img[alt="Pemasangan Iklan"]
zonamuda.com##img[alt="iklan"]
bokepgratiz.info##img[alt="smart-forex-system.com"]
movie76.com##img[src="http://2.bp.blogspot.com/-2afHigsbpYY/UguQyTqs5SI/AAAAAAAAAcg/8E4df8rMZMU/s1600/Download+noww.jpg'"]
tribunnews.com##img[src="http://www.tribunnews.com/stylesheets/close.gif"]
kompas.com##img[src^="http://img.ads."]
ic31linkpage.com,icinema3satu.com##img[style="height: 125px; width: 125px;"]
icinema3satu.com##img[style="height:125x;width:125px;"]
isdaryanto.com##img[style="width: 125px; height: 125px;"]
unduhfilm21.net##img[style="width: 728px; height: 60px;"]
bioskop21.us##img[title="pasang iklan"]
movie76.com##img[title="pasang-iklan"]
downloadfilem.com##img[width="125"][height="125"]
bioskop21.us##img[width="640"][height="90"]
21sinema.com,ceriwis.com##img[width="728"][height="90"]
stafaband.info##table[width="100%"] + #bottom
zonamuda.com##td[valign="top"][height="55px"][align="center"]
zonamuda.com##td[valign="top"][height="56px"][align="center"]
! *** abpindo_computer_prank.txt ***
||1227.com^
||1priest1nun.com^
||2girls1finger.com^
||2guys1hole.com^
||2guys1horse.com^
||4girlsfingerpaint.com^
||asianthumbx.com^
||bangun3.com/admin
||bluewaffle.com^
||bmepainolympics2.com^
||boi.netai.net^
||bottleguy.com^
||bouncecup.com^
||bowlgirl.com^
||charonboat.com^
||cherrycake.org^
||clownsong.com^
||coryna.com^
||cupchicks.com^
||d1gdo.com/admin/
||d1gdo.com/images
||dadparty.com^
||denial.be^
||drewpickles.com^
||eatingcream.com^
||eelsoup.net^
||fanbangho.com^
||festered.com^
||fishermen.ytmnd.com^
||fragskin.com^
||fruitlauncher.com^
||funnelchair.com^
||ghostboy.co.uk^
||ginedis.com^
||gncr.org^
||goatse.cz^
||goatsegirl.org^
||goatsemarathon.com^
||googlehammer.com^
||gooork.com^
||goplaysee.com^
||goregasm.com^
||grubbychicks.com^
||gurochan.net^
||hai2u.com^
||hdvideoforums.org^
||hihanin.com^
||homewares.org^
||homo.com^
||hurr-durr.com^
||infoslash.net^
||japscat.org^
||joyangeles.com^
||k-k-k.com^
||kids-in-sandbox.com^
||killerijo.net^
||kingfamilyphotoalbum.com^
||landslide.nu^
||lemonparty.org^
||likaraoke.com^
||lolhello.com^
||lolshock.com^
||loltrain.com^
||macory.com^
||magic4you.nu^
||mangems.com^
||martectx.de^
||meatrolled.com^
||melondude.com^
||milkfountain.com^
||moldymen.com^
||mrshands.com^
||mudfall.com^
||mudmonster.org^
||niggers.on.nimp.org^
||nobrain.dk^
||nutabuse.com^
||nutsindaass.com^
||octopusgirl.com^
||ogrish.com^
||phonejapan.com^
||phonetrace.org^
||podrido.com^
||poobutton.com^
||porkspin.com^
||pressurespot.com^
||prolapseman.com^
||purplehoodie.com^
||qsng.cn^
||rumdesign.com/wrong/
||sajjadali.com^
||seksburada.net^
||shitpassion.com^
||sinthaistudio.com/thehouse2/
||sportsmansclub.net^
||stock888.cn^
||subang.co.tv^
||subangtv.co.tv^
||suckdude.com^
||sukatoro.com^
||sweety.biz^
||swollentip.com^
||teamclouds.com^
||texaswhitetailfever.com^
||thatsnotsexy.com^
||themacuser.org^
||themobiletracker.com^
||thepounder.com^
||theshithole.com^
||thewillpower.org^
||turdgasm.com^
||vomitgirl.org^
||walkthedinosaur.com^
||whoomp.org^
||winterrowd.com^
||wormgush.com^
||xnescat.info^
||yellaface.com^
! *** abpindo_whitelist.txt ***
@@.png#$domain=animeindo.tv|oploverz.net|wardhanime.net
@@||animeindo.tv^$elemhide
@@||oploverz.net^$elemhide
@@||wardhanime.net^$elemhide
@@||www2.melon.co.id/js/libs/angulartics-google-analytics.js

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,659 @@
[Adblock Plus 2.0]
! Title: Adblock Plus Lithuania
! Contributors: Mantas Malcius, Algimantas Margevičius
! About not blocked ad or any issues report to algimantas@margevicius.lt
! Apie neužblokuotas reklamas ar kitas bėdas praneškite el. paštu algimantas@margevicius.lt
! Homepage: http://margevicius.lt
! Last update: 2014-06-06
! Expires: 7 days (update frequency)
###delfi-front-right-column
##.blockMain.partners
##.reklamos_nuorodos
##.reklamos_tarpas
##.top_reklama
##A[href="http://igrovieavtomationline.net"]
##A[href="http://www.moteris.lt/didieji-grozio-pokyciai/"]
##A[href="http://www.netcredit.lt/"]
##A[href^="/lt/component/banners/click/"] > IMG
##IMG[alt="Dedikuoti.lt serveriai"]
##IMG[alt="Hostingas Serveriai.lt"]
##IMG[alt="Reklaminis skydelis"]
##a[href="http://igrovoi-klub.org/fair-land"]
##a[href^="http://adsplius.lt/trackers?id="] > IMG
-baneris-
/PopBox.js
/baneriai/*
/baneris.
/baneris_
/baneriukai/*
/baneriukas/*
/reklama/*
/skydeliai/*
1000receptu.lt###gp-block
15min.lt###plius_container_0
15min.lt##.ads-cnt
15min.lt##.ap_mm_15min
15min.lt##.ar-item.bg-border-greywhite.ar-row-29
15min.lt##.df-auto-container
15min.lt##.footer_note
15min.lt##.kainos_box
15min.lt##.most_read_ads
15min.lt##.outer-links
15min.lt##.pi_base_box.pi_base_box_
15min.lt##.pi_base_box.pi_base_box_auto
15min.lt##.pi_base_box.pi_base_box_domo
15min.lt##.pi_base_box.pi_base_box_plius
15min.lt##A[href="http://www.vistienakitaip.lt/fiesta"] > IMG
15min.lt##pi_one_ad
7min.lt##A[href="http://1920x1080wallpapers.eu/"]
7min.lt##A[href="http://www.tvlietuviskai.eu/"]
@@||banners.adnet.lt/i/euro_1_490x270_3.swf
@@||banners.adnet.lt/i/euro_game_1.js
@@||eurovaistine.lt/uploads/banners/
@@||grozionamai.lt/images/sobipro/adv/
@@||jaunatvesnamai.lt/wp-content/uploads/2013/01/baneriukas-20-proc-kuno-pirminiems.jpg
@@||kvt.lt/ebilet.cup.static/img/header/
@@||localhost^$document
@@||mega.lt/uploads/img/banners/
@@||olifeja.lt/baneriai/
@@||perlas.lt/baneriai/
@@||perlas.lt/files/banners/
@@||pildyk.lt/uploads/files/BANERIS_pildyk.jpg
@@||post.lt/bin/banners/
@@||post.lt/files/resized/*x*/banners/
@@||teatras.lt/uploads/img/banners/
@@||technologijos.lt/iframe_komentarai
aciu.lt###adrotate_2
aciu.lt##.parama
aciu.lt,gydomasismasazas.lt###adrotate_1
aeropolis.lt##IMG[title="SAABdalys.lt"]
akmensmagija.lt###top
alfa.lt##.block_text_links
alfa.lt##.cosite_block
alio.lt###adv_view_top
alio.lt###advert_right
alio.lt###main-content-right
alio.lt###rssReader_b
alio.lt##.context_b.margint10
alio.lt##.fl.marginb10.vipadvertise
alio.proxy.dlf.lt###infoblock
alio.proxy.dlf.lt###inner_b
alio.proxy.dlf.lt###zaveReader_b
alio.proxy.dlf.lt##DIV[style="width: 210px; padding: 5px 19px 0px; height: 503px;"]
aruodas.lt##.ad-980-200
aruodas.lt##.banner-top
asvyras.lt##.ad1
asvyras.lt##.ad2
atvfanai.lt###banner-placeholder-1.banner-placeholder
balsas.lt##A[href="http://aroma24.lt"]
balsas.lt##A[href="http://www.eshops.lt/prekes-internetu/apranga-drabuziai-internetu"]
balsas.lt##A[href="http://www.kim.lt/svetainiu-kurimas.html"]
balsas.lt##A[href="http://www.nuolaidos.lt/nuolaida?cat%5B%5D=3&cat%5B%5D=38"]
balsas.lt##A[href="http://www.taupiems.lt/"]
balsas.lt##A[href="http://www.zaidimuklubas.lt/"]
balsas.lt##A[href="https://brokeriai.eu"]
baltoslankos.lt###parneriai
baltracker.net##IMG[title="PicMik free image hosting"]
banga.balsas.lt##SPAN.bigger[style="color: #005C5B;"]
basketnews.lt##[style="margin-bottom: 10px; height: 100px; padding-left: 10px; padding-right: 10px; text-align: center;"]
beatosvirtuve.lt##.archive.tax-recipe-categories.term-velykos.term-82[style="overflow: hidden;"]:last-child
beatosvirtuve.lt##.dialogBg
beatosvirtuve.lt##.valdiklis_reklama.clearfix [alt="probiotic valikliai"]
bernardinai.lt###marquee
bernardinai.lt###paremk-panel
beta.lt##.hook.roof-placeholder
bilietupasaulis.lt##.concert_details_promoter.promoter_short_info
bimba.lt##.vert_banners > *
bioetika.sam.lt##DIV[style="margin: 10px 0px"]
blogas.lt###reklamos-juostele
burgis.lt###banners
bznstart.lt##[id^="google_ads_iframe_/"]
cargo.lt##A > IMG[src^="../banners/"]
cargonews.lt##.bottom-banner IMG[src^="http://www.cargonews.lt/wp-content/banners/"]
cdn.torrent.ai###google_ads_iframe_\/19228508\/www\.torrent\.ai-750x100-Virsutinis-PAGRINDINIS_0
cdn.torrent.ai##[id*="div-gpt-ad-*"]
chatas.lt##.content[style="text-align: center;"]:first-child
chatas.lt##.row.bg1.global-announce + .content
chatas.lt##.thumbtitle
chatas.lt##[src^="http://draugaukime.lt/banner/db.js.php"] + * *
chatas.lt##a[href="http://www.100skelbimu.lt/"]
ciurlioniopaveldas.lt##.bx-viewport
cosmopolitan.lt##.cosmo-article-banner
cv.lt###smban_cv_border
cv.lt###smban_cv_wrap
dainos.lt##.standartinisSarasas.sriftas13
dainos.lt##A[href="http://egu.lt"]
danguje.lt##A[href^="/component/banners/click/"] > IMG
danielius.net##DIV[style="width: 80%; font-size: 12px; padding: 5px; border: 1px dashed #CCF5CC; background: #F0FCF0; margin: 0 auto;"]
day.lt##[style="line-height: 25px; margin: 15px 8px 2px auto;"]
degalines.orlenlietuva.lt##.addsBoxFirst
delfi.lt###alio-block-dk
delfi.lt###alio-block-nt
delfi.lt###alio-delfitv
delfi.lt###banner-box
delfi.lt###dwidget_6066.dwidget[style="width:250px;height:500px;display:block;overflow:hidden"]
delfi.lt###glmr
delfi.lt###recipes-section
delfi.lt###wallpaper
delfi.lt##.con-braskes
delfi.lt##.con-cosmo
delfi.lt##.con-manonamai
delfi.lt##.con-moteris
delfi.lt##.delfi-ads-block
delfi.lt##.delfi-ads-front-container
delfi.lt##.delfi-anonsai.category-header-line
delfi.lt##.delfi-article-banner.marked-banner
delfi.lt##.delfi-content-ads
delfi.lt##.delfi-content-container.delfi-category-anonsai-external
delfi.lt##.tavovaikas-infoblock
depiliacija.eu##A[href="http://depiliacija.eu/fotoepiliatorius-silkn-flashgo-luxx/"]
depiliacija.eu##A[href="http://depiliacija.eu/silkn-glide-naujas-kompaktiskas-fotoepiliatorius/"]
depiliacija.eu##A[href="http://depiliacija.eu/silkn-sensepil-xl-65-000-fotoepiliatorius/"]
depiliacija.eu##A[href^="http://"] > *
depresijosklubas.lt##IMG[src$="rozmarinas.gif"]
diena.lt##.big
diena.lt##.competitionBlock
diena.lt##.reklama-text
dimexpro.eu,press-report.lt##.ads
diskusijos.darnipora.lt##.post.bg3
donoryste.eu##[alt="Klipas Donorystė"]
drg.lt##.module-content A > IMG
elektronika.lt##.randomcontent.group1 + * + * + * > *
elektronika.lt##TD[bgcolor="#FFFFFF"][align="center"][style="border:1px solid #000000;"]
elektronika.lt##[style="border:1px solid #000000;padding:6px;"]
elta.lt##TD[style^="TEXT-ALIGN: "]
etaplius.lt###entryMeta
etaplius.lt###itro_opaco
etaplius.lt###itro_popup
etaplius.lt##.marqclosep
etaplius.lt##.marquee0
etaplius.lt##A[href="http://etaplius.lt/reklama"]
filosofija.info##A[href="http://www.filosofija.info/"]
forum.mintys.lt##.post.bg2
fotofabrikas.lt###popup-w
fotofaze.lt##.xoxo.blogroll A[href="/"] > IMG
fotofaze.lt##A[href="http://www.fotofaze.lt"] > IMG
fotoservisas.lt##DIV[style="text-align: center"]
g-taskas.lt##A[href="http://www.vilniausgidas.lt"]
galjuokauji.lt##.cosmo-infoblock
galjuokauji.lt##.panele-infoblock
gedulas.lt###ct_testimonials-4
gintarinesvajone.lt##.xoxo.blogroll IMG
glamourgeles.lt##[color="#0000ee"] > A > IMG[align="bottom"]
grokiskis.lt##.add-2
grozionamai.lt###sideRight.sidebarRigt
grozionamai.lt##.jspContainer[style="width: 550px; height: 299px;"]
grozionamai.lt##.menu.draugailinks
grozionamai.lt##.vp[style="height: 249px;"]
grozioperlas.lt##IMG[alt="JPEG baneris"][title="JPEG baneris"]
grumlinas.lt##IMG[alt="Citroen klubas “Citrina”"]
grumlinas.lt##IMG[alt="blogeriai.net"]
grumlinas.lt##IMG[alt="“Citrinos” forumas"]
grupinis.lt###product2
grupinis.lt##.block.villa
gyvenimoguru.lt###stulpelis1c IMG
gyvenimoguru.lt##.turinys A > IMG[src^="uploads/images/"]
gyvenimoguru.lt##.turinys IMG[style="float: left; margin: 1px 2px; border: 1px solid black;"]
gyvenimoguru.lt##IMG[alt="Viešo kalbėjimo ir bendravimo kursai"]
gyvenimoguru.lt##IMG[style="margin-left: 2px; margin-right: 2px; border: 2px solid black;"]
gyvenimoguru.lt##IMG[title="Silva metodas"]
gyviau.lt###linkcat-1293
gyviau.lt###text-12.widget.widget_text.clearfix
gyviau.lt###text-14.widget.widget_text.clearfix
hardas.lt###v1b13546c9f
hardas.lt##[alt^="baner"]
hdpaveiksliukai.lt##.partners_right *
imunitetas.lt##.ad IMG
infrost.lt##IMG[alt="inFROST - CS 1.6 Serveriai"]
infrost.lt##[title="ksi_120x60"]
interjeras.lt##.projects-container-home
juokauju.lt##.moduletable_ads
kabutes.kasvyksta.lt##.miestasreng *
kabutes.lt###reklama-desine
kamane.lt##.left_banner
kamane.lt##.right_banner
katiluturgus.lt##a[href^="/banners/"]
kaunas.lt##TD[style="PADDING-BOTTOM: 13px; PADDING-LEFT: 0px; BACKGROUND: url(/kaunas/m/m_images/wfiles/il4sk332.jpg) #faf6f5 no-repeat left top; PADDING-TOP: 13px"]
kitokiagrafika.lt###linkcat-30.widget_links.widget
klauskkunigo.lt,voruta.lt##A[rel="nofollow"] > IMG
klubas.lt###klubas-right-column
klubas.lt##.delfi-article-banner
klubas.lt##IMG[src*="http://delfilt.adocean.pl/files/*"]
ksi.lt##IMG.aligncenter
ktromuva.lt##.banners-125
kupi.lt##.greitasis_menu
kupi.lt##IMG[alt="OZO estetinės odontologijos ir implantologijos klinika"]
kupi.lt##SECTION#akcijos_wrapper.akcijos > IMG
kurjeris.lt##.infobox-banner
kursenuparapija.lt###sidebar-primary
kvitrina.com###slider
kvitrina.com##A[href="http://www.birstonosportas.lt"]
kvitrina.com##A[href^="http://kvitrina.com/?p="] > IMG
kvitrina.com##A[target="_blank"] > IMG
kvitrina.com##A[target="_blank"] STRONG
kvitrina.com##IMG[alt="1_akcija"]
kvitrina.com##IMG[alt="Ordo autoservisas_A4_2014 03 20"]
kvitrina.com##IMG[alt="breziniai"]
kvitrina.com##IMG[alt="girl eating a long loaf"]
kvitrina.com##IMG[alt="taures-medaliai-oranzine"]
kvitrina.com##STRONG > A[target="_blank"][href^="http://"] > *
kvitrina.com##[alt="doc01304120140423130921-3"]
labasiskelmes.lt###banners_container
laikrastisplunge.lt###slaidukas
laikrastisplunge.lt##.sam-container.sam-place > IMG[style="display: inline;"]
lbks.lt##.custom A[href^="http://"][target="_blank"]
legalus.net##IMG[alt="www.linda-seeds.com"]
lrprezidentas.lt###block-block-31.block.block-block
lrt.lt##.Scrolling_banner
lrt.lt##TD[height="118"]
lrvalstybe.lt##.left_banners
lrvalstybe.lt##.right_banners
lzinios.lt###treciaStop
lzskelbimai.com###banners_170
macpartija.lt##A[href^="http://www."][target="_blank"]
magic-shop.lt###container-ads
mamairvaikas.lt##IMG[alt="SVEIKATOS RADIJO LOGObaneris180 x90"]
mamyciuklubas.lt##.banners_mklt_side1.banner_cont
man.lt###text-86775731
manoekonamai.lt##.tb-content-block.tb-content-block-banners-sidebar
maps.lt##.title-right-banner
maps.lt##DIV[style="background: url('client/img/sep-1.gif') repeat-x center;"]
marijosradijas.lt##A > IMG[src^="/images/banners/"]
maxima.lt##.remas
megon.lt##IMG[alt="dpd"]
megon.lt##IMG[alt="lpexpress.jpg"]
megon.lt##IMG[title="brokeriai.eu"]
menoerdve.lt###flashcontent
menoerdve.lt##A[href^="/component/flexbanners/?task=click&id="]
miegantysdrambliai.lt##.partners *
miske.lt##.box_outer.widget_awpcp-latest-ads + * + * *
miskobirza.lt##.index_ads1
miskobirza.lt##IMG[width="160"][src^="/images/texts/"]
moteris.lt##.moteris-article-banner
musupaveldas.lt###categories-3 + * A[target="_blank"]
mūsųvestuvės.lt##.textwidget A[target="_blank"] > IMG
naujapradzia.lt##IMG[alt="DANA Aljansas „Už Smegenis“"]
naujapradzia.lt##IMG[longdesc="http://www.novavita.lt/"]
nemokamosknygos.lt##.banner1
nemokamosknygos.lt##.banner2
niekonaujo.lt##A[target="_blank"] > IMG
norbefilms.com###norbe_sponsors-2
norbefilms.com###norbe_sponsors-3
officeday.lt###leftBanners
officeday.lt###startBanners
one.lt##.column.right
one.lt##.section.vertical.mt20
orai.biz###AutoNumber1
orai.biz##A IMG[src^="pav/"]
pagamintarankomis.lt,pasidarykpats.eu###text-5.widget.widget_text
panele.lt##.article-banner
pasikeisk.lt##DIV[style="border: 1px solid black; text-align: center; margin-bottom: 10px; font-size: 12px; padding-top: 10px; padding-bottom: 10px; width: 628px; margin-left: 81px;"]
pazintys.draugas.lt##DIV[style="border: solid 3px #fcb617; width: 166px; padding: 8px 0px 8px 5px;"]
pegasusfoto.lt##A + * + A
pegasusfoto.lt##[style="font-family: georgia,palatino; font-size: 10pt;"] > A[href^="http://"]
perpasauli.lt##a[href="http://www.perpasauli.lt/naujienos/10-ispudingiausiu-austrijos-kampeliu.d?id=64743063&utm_source=external&utm_medium=newsexport&utm_campaign=250x500"] > IMG
pho.lt##.xoxo.blogroll A
piejuras.lv,piejuras.lt##.desine
pigu.lt##[id^="ox_ad_idAdbillboard"]
pirkanglijoje.lt##.ban
pirmas-kartas.com##A[href="http://prekes.suaugusiems.lt/naujienos/knyga-kaip-prailginti-seksa?id=3691"] > IMG
planuokatostogas.lt##.announcements_short
pokeris.lt###bfad178770
pokeris.lt###bfad240549
pokeris.lt##.headerhorizontalbanners
pokeris.lt##.headerverticalbanners
portas.lt,reksas.lt,vertimas.vlt.lt##A[target="_blank"] > *
priejuros.lt###banner-lastmin
priejuros.lt###floating
priejuros.lt###zydroji-liepsna
priejuros.lt##.draugai
priejuros.lt##.paveikslelis[style="background:url(/malunovilos/nt-lt.jpg) repeat-x bottom center"]
priejuros.lt##.tenerife
priejuros.lt##.tipsy
priejuros.lt##A[href="http://www.priejuros.lt/lt/apgyvendinimas/sventojoje-1-kambario-butas-renovuota-3396/"]
priejuros.lt##A[href="http://www.priejuros.lt/lt/pramogos/velykos-pajuryje/"]
priejuros.lt##A[rel="nofollow"][href="http://www.karkle.lt/page10.php"]
prokuraturos.lt###dnn_LeftPane
prokuraturos.lt###dnn_daugiauInfo
psichologas.info##IMG[alt="laisvoji banga tiesiogine laida"]
pulsas.lt###ja-col2
pzemaitis.lt##IMG[alt="banner"]
radiocool.lt##IMG[title="Free Delivery on all Books at the Book Depository"]
receptai.lt##DIV[style="background-color: rgb(0, 0, 0); z-index: 100000001; opacity: 0.85; position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px; display: block;"]
receptai.lt##DIV[style="position: fixed; z-index: 100000003; visibility: visible; display: block; left: 0px; right: 0px; top: 0px; bottom: 0px;"]
respublika.lt##a[href^="http://www.respublika.lt/,banner_id."]
rinkaplius.lt,pasikeisk.lt##.banner
rinkoje.blogspot.com###Slideshow2_slideshow
rkdragunas.lt##.infiniteCarousel LI
rokiskis.popo.lt##IMG[alt="FlyLAL logo"]
rokiskis.popo.lt##[title="Blogosferos Autorių Teisių Gynimo Asociacijos Agentūra"] > *
rrt.lt###block_49
rrt.lt###cinfo
rrt.lt##.blocks_right
rrt.lt##.title_blocks_page
satenai.lt##.attachment-sponsor-thumb-header.wp-post-image
savas.lt##.flexbannergroup
savas.lt##A[href="http://www.lefkada-hotels.com/"] > *
seimosvaistine.lt##.top
senukai.lt##[src*="http://www.senukai.lt/out/1/html/0/images/wysiwigpro/Baneris*"]
server2.beta.lt###for-product1
siloaidas.lt##A[target="_blank"][href*="http://"] > IMG
siloaidas.lt,mususavaite.lt,spainetosdraudimas.lt##IMG[src*="baneris"]
skelbiu.lt###offer-container
skelbiu.lt##DIV.content
skelbiu.lt##DIV.result
skelbiu.lt##DIV[style="padding: 1px; border-bottom: 1px solid #E3E3E3; margin-top: -10px;"]
skelbiu.lt##DIV[style="text-align: center; padding: 0px 0px; height: 200px; margin-bottom: 10px;"]
skelbiu.lt##DIV[style="width: 980px; height: 200px;"]
skrastas.lt##[src^="images/drawflash.php"] + * > *
skrastas.lt||A[href^="go.php?lt="]
skytech.lt###banner
skytech.lt###bannerlink[href^="http://www.skytech.lt/"]
skytech.lt##A[href^="http://www.skytech.lt/"] > *
sorimpeksas.com##DIV:last-child > P[align="center"]
spainetosdraudimas.lt###partners
spainetosdraudimas.lt##IMG[src*="uploads/images/*banner*"]
spauda.lt##IMG[alt="Poligrafijos įmonė 'Spauda': SPAUDA.COM"]
supermama.lt##DIV[style="width: 752px; padding-top: 7px;"]
sveikas.lt##.side-block.side-banner *
sveikatosabc.lt##A[href="http://www.bedantis.lt"] *
sveikatosabc.lt##DIV[style="width:250px; float:left"] > DIV[style^="height:"]
sveksnosnaujienos.lt##.blog-sidebar *
sveksnosnaujienos.lt##.wsite-image.wsite-image-border-none
technews.lt##.left_side
technologijos.lt##.visualPadding.lygiuoti_centras
techpill.lt##.cufon.cufon-canvas[alt="Reklama"] > *
||themusic.lt/images/geramada12x120.gif
tiketa.lt##OBJECT[codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"][classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"]
topwarez.lt###headerr > [href="http://topwarez.lt/buy_vip.php"] *
topzone.lt###ls7[src="http://www.topzone.lt/pav/esports.gif"]
topzone.lt##DIV[style="margin-top:3px; margin-bottom:3px; height:250px;"]
torrent.ai###top_banner_torrent_details
traders.lt##DIV[style="padding-top:4px;padding-bottom:4px;text-align:center;"]
trakai.lt##TD[style="PADDING-BOTTOM: 15px; PADDING-LEFT: 12px; PADDING-RIGHT: 10px; BACKGROUND: url(/trakai/m/m_images/wfiles/igxbdh5338.jpg) repeat-y left top; PADDING-TOP: 15px"]
trakai.lt##TD[style="PADDING-BOTTOM: 15px; PADDING-LEFT: 22px; BACKGROUND: url(/trakai/m/m_images/wfiles/ipxjgy5347.jpg) repeat-y left top; PADDING-TOP: 16px"]
trolinukitus.lt##IMG[alt="Lankytinos vietos Lietuvoje"]
tzz.lt##.banneritem
vaistai.lt###bannerright [data^="http://www.vaistai.lt/images/banners/"]
vaistai.lt###table-rightbanner1
vaistai.lt###table-rightbanner3.rightbanner_info
vaistai.lt##.module_right_content_col
vaistai.lt##.topbanner_info [data^="http://www.vaistai.lt/images/banners/"]
vaistai.lt##a[href^="http://www.vaistai.lt/index.php?option=com_artbanners&task=clk&id="] > *
vandensparkas.lt##.banner-1
vardai.org##.adsb
||veberis.com/foto/balionucentras/balionai.jpg
veidas.lt##.ad120_box
veidas.lt##.ad468_frame_bot
veidas.lt##.widget3
verslosavaite.lt##.moduletabledesinen
vilniaus-turtas.lt##A[target="_blank"] > IMG[src^="images/"]
visalietuva.lt###brandpageA
visalietuva.lt###brandpageB
visalietuva.lt###brandpageC
voruta.lt##A[rel="nofollow"] + * + * + * > IMG
vz.lt##.bannerbox
webaras.lt###content-sidebar.content-sidebar.widget-area[role="complementary"]
widgets.sportotv.lt##.outerContainer
zalgiris.lt###bottom-banners
zalgiris.lt##.remejulogo
zappy.lt###rightcol
zodynai.igloro.info##.margint10
zodynas.kriu.lt##.box1[style="background:none; text-align:center; padding:5px;"]
zodynas.kriu.lt##.box1[style="padding:10px 0;"]
zooplius.lt##A[alt="Prezi.lt"] + CENTER
zooplius.lt##CENTER > A > *
zoovet.lt##.banners *
|http://*.delfi.lt/c/ib/
|http://www.herba.lt/media/dynamic/banners/
||120x60.lt/banners/
||195.82.146.52/top-rq/Kozhedub.swf?
||adbox.lt^$third-party
||adclick.lt^$third-party
||adnet.lt^$third-party
||adsplius.lt^$third-party
||adverum.lt^$third-party
||aleja.lt^$third-party
||alkas.lt/wp-content/uploads/2010/09/remeju-logo.png
||alytausgidas.lt/media/_banners/
||am.lt/VI/images/Numeris2.jpg
||am.lt/VI/images/betos.jpg
||apieseksa.lt/swf/suzadink.swf
||apieseksa.lt/wp-content/uploads/2014/02/FASHION-STOCKINGS-BANNER-300x300.jpg
||apieseksa.lt/wp-content/uploads/2014/03/SEKS-KOMPLEKTUKAI.jpg
||apievestuves.lt/m/ads
||atsimink.lt/images/120_60.jpg
||atsimink.lt/images/serveriai.gif
||atsimink.lt/konteineriai/psichologija/asirpsicho.gif
||balsas.lt/Uploads/image/logo/1/baneris1.jpg
||baltracker.net/images/btt-face.png
||baltracker.net/images/im_88x31.gif
||banners.igloro.info/banners.igloro.info
||basketnews.lt/config/basketnews.lt/files/3/1753.swf
||basketnews.lt/config/basketnews.lt/files/7/1807.swf
||basketnews.lt/config/basketnews.lt/files/9/1809.swf
||basketnews.lt/config/basketnews.lt/themes/ads_unibet_20131105/bg01.jpg
||basketnews.lt/config/basketnews.lt/themes/ads_unibet_20140319/bg01.jpg
||beautyline.lt/images/banners/Kunoharmonija.jpg
||beautyline.lt/images/banners/perkuvaikui_120x92.gif
||biworldkompiuteriai.lt^$third-party
||buypcgame.eu/banner/180x300.gif
||cargo.lt/banners/
||ccg.lv/ads/
||darnipora.lt^$third-party
||dcdn.lt/b//250x120-schogetten-nestabdyk_v3.png
||dcdn.lt/pr/i/gruzija-top.jpg
||dcdn.lt/wd/x/4948/r/079d346cdd9c7d833a017b2bc1143d85.q88.trim.250x250.jpeg
||donoryste.eu/pictures/banner_
||e-sviestuvai.lt/images/gforma.png
||e-sviestuvai.lt/images/istudija.png
||e-sviestuvai.lt/images/kristint.png
||e-sviestuvai.lt/images/macGroup.png
||e-sviestuvai.lt/images/vt.png
||eads.lt^$third-party
||ekstremalas.lt/out_data/banners/
||email.man.lt/images/email.swf
||etaplius.lt/wp-content/plugins/shout-stream/pop-flash.png
||etaplius.lt/wp-content/uploads/2012/05/video-konferencijos.png
||etaplius.lt/wp-content/uploads/2013/03/Karalevicius_482x100.jpg
||etaplius.lt/wp-content/uploads/2013/05/175x175.gif
||etaplius.lt/wp-content/uploads/2013/10/neo2.swf?
||etaplius.lt/wp-content/uploads/2014/03/SPORTO-KODAS-BANERIS.jpg
||etaplius.lt/wp-content/uploads/2014/03/panele-300px.jpg
||etaplius.lt/wp-content/uploads/2014/03/versalis2.gif
||etaplius.lt/wp-content/uploads/2014/04/975x100.gif
||etaplius.lt/wp-content/uploads/2014/04/Sidabras_300x300.swf?
||etaplius.lt/wp-content/uploads/2014/04/Vasare_480x100.jpg
||etaplius.lt/wp-content/uploads/2014/04/balsuosiu21.jpg
||etaplius.lt/wp-content/uploads/2014/04/bodesa.jpg
||etaplius.lt/wp-content/uploads/2014/04/etaplius_tapetas
||etaplius.lt/wp-content/uploads/2014/04/grafas-zubovas.jpg
||etaplius.lt/wp-content/uploads/2014/04/pirmasbanerisnaujausias.gif
||etaplius.lt/wp-content/uploads/2014/04/vasare.jpg
||euro.lt/images/zaidimai_banner_195x80.swf
||europoszemelapis.lt/dedikuoti-nuolaida150.jpg
||europoszemelapis.lt/serveriai-nuolaida150.jpg
||evaistine.camelia.lt/site/ad/getimage/
||filosofija.info/wp-content/uploads/2013/11/praktine-filosofija.gif
||finmedia.lt/grape/$third-party
||fm99.lt/wp-content/banners/
||fm99.lt/wp-content/uploads/2014/03/slider_blues_konkurs_dlugi_logo_ang.jpg
||fotofaze.lt/img/dezavu.jpg
||fotofaze.lt/img/fotonaras.png
||fotofaze.lt/img/musu-vestuves.jpg
||fotofaze.lt/img/procentras.png
||fotofaze.lt/img/vestuveskitaip.jpg
||fotofaze.lt/img/zzet.jpg
||games.lt/i/banners/
||games4you.lt/img/game2.gif
||glamourgeles.lt/serveris/PAJURIO_FOTOsmall.jpg
||greitukas.lt/images/kupi.jpg
||greitukas.lt/images/papuosaliukas.JPG
||greitukas.lt/images/vestuves_baneris.jpg
||herba.lt/media/dynamic/banners/40/banner.swf
||hkomentaras.lt/wp-content/themes/kk/img/P9_baneris.jpg
||i41.tinypic.com/2yos7f7.png
||i60.tinypic.com/k4vxvm.gif
||igs.lt/images/saugumas/
||images.neobux.com/imagens/banner9/?uh=536B79425454&u3=15892148
||imones.lt/searchblocks/$third-party
||infoplius.lt/cimg/brandpage/
||interjeras.lt/tl_files/catalogs/banners/
||ipon.lt^$third-party
||itneta.lt/failai/CENTAS.jpg
||kaimai.lt/images/default/source/perku_vaikui.jpg
||kaunozemelapis.lt/z24.swf
||keliones.lt^$third-party
||kernel.lt/img/nf.swf
||kinopavasaris.lt/bnr/2014/
||komentaras.lt/wp-content/themes/kk/img/P1_baneris.jpg
||komi.lt^$third-party
||komiksai.com/img_rek/
||krepsininkas.net/pav/e-parduotuve.gif
||kupi.lt/LTLku_180x150.swf
||kursenuparapija.lt/wp-content/uploads/logo/logo_m-studija.gif
||kursenuparapija.lt/wp-content/uploads/logo/logo_marijos-r.gif
||kursenuparapija.lt/wp-content/uploads/logo/logo_pakuta.gif
||kursenuparapija.lt/wp-content/uploads/logo/logo_vatikano-r.gif
||laimos-sapnininkas.lt/banners/baneris-2.jpg
||laisvaslaikrastis.lt/laikrascio%20baneris.swf
||lapes.lt/banners/
||lh6.googleusercontent.com/-emSu6klAyOM/U00ckPNq4KI/AAAAAAAAAOk/Op4XYSWK7R4/w700-h112-no/go9000bannerisiforuma.jpg
||lrvalstybe.lt/images_new/gubele_960x100url2.swf
||lrvalstybe.lt/images_new/yukon_960x100url.swf
||lzinios.lt/lzinios/failai/video/
||macpartija.lt/images/banners/hosted.gif
||macpartija.lt/images/stories/ishop.png
||macpartija.lt/images/stories/telefix_175x80.png
||mama.lt/Uploads/UGallery/photos/ad/bb/8a/2f/adbb8a2f2310e49a3958169037e7d057.jpg
||mamairvaikas.lt/tvs/failai/2012/08/moteris-info2-e1345913451356.jpg
||mamosgidas.lt/uploads/images/ngc2.gif
||mamyciukas.lt/img/logo.jpg?
||man.lt/banner/300x230_Empire.jpg
||manonamai.lt/newsfeed/
||manosveikata.lt/resources/_banners/beganti-eilute-
||manosveikata.lt/resources/_banners/sebamed-akcija-eurovaistine.gif
||meileslegendos.lt/wp-content/uploads/2014/02/fotografas.png
||meileslegendos.lt/wp-content/uploads/2014/02/mergvakario-baneris_legendos.jpg
||meileslegendos.lt/wp-content/uploads/2014/03/vestuviu-fotografai.jpg
||meileslegendos.lt/wp-content/uploads/2014/04/Ivory.png
||menoerdve.lt/modules/mod_flexbanners/trans.gif
||miskobirza.lt/images/news/Baneris1_120x60[1].JPG
||miskobirza.lt/images/texts/ad
||miskobirza.lt/images/texts/miskui_lt_90x55_1[1].jpg
||miskobirza.lt/images/texts/sanit.jpg
||miskobirza.lt/images/users_ads/
||miskui.lt/images/news/sip-1.jpg
||mokslai.lt/kelionesa.mp3
||mususavaite.lt/wp-content/uploads/2014/05/aeroklubas.png
||mususavaite.lt/wp-content/uploads/2014/05/miesto_dienos.png
||mūsųvestuvės.lt/wp-content/uploads/2013/01/selavi-ban.swf
||nailbar.lt/images/stories/nuolaidos/
||nesijuok.lt/images/buliausgalia.gif
||niekonaujo.lt/wp-content/uploads/2010/12/serveriai_logo.png
||nk.lt/static/media/uploads/reitingai-banner.jpg
||on-line.lt^$third-party
||opti-myst.lt/wp-content/uploads/2014/05/linava_2.jpg
||pasidarykpats.eu/wp-content/uploads/2012/09/pasidaryk120.png
||passat-club.lt/auto_parts.jpg
||perkuvaikui.lt/media/upload/image/Beautyline%20ban%20180x180.jpg
||perkuvaikui.lt/media/upload/image/Zappy%20baneris%20180x120_frame_2.jpg
||perkuvaikui.lt/media/upload/image/kaimai_lt(2).jpg
||perkuvaikui.lt/media/upload/image/mamu%20unija-1.png
||perkuvaikui.lt/media/upload/image/mokinukas(1).gif
||perkuvaikui.lt/media/upload/image/perku%20vaikui1.jpg
||petworld.lt/images/uploader/ba/banner_
||pho.lt/wp-content/uploads/2009/10/logo.jpg
||pho.lt/wp-content/uploads/2009/10/musu_paveldas_150x300.gif
||pho.lt/wp-content/uploads/2009/11/ad-banner.gif
||pho.lt/wp-content/uploads/2010/11/300_250px_fotonuoma.gif
||pho.lt/wp-content/uploads/2012/06/idomiausios-knygos.jpg
||photobucket.com/albums/tt302/techpill/fiksuok-logo_svetcopy1.png
||photobucket.com/albums/tt302/techpill/itfan.gif
||photobucket.com/albums/tt302/techpill/radiocool_link.jpg
||photobucket.com/albums/tt302/techpill/zaidimubalsas140x60.jpg
||pigu.lt^$third-party
||pirkanglijoje.lt/wp-content/themes/pirkebay/images/regi.png
||pixwordsatsakymai.lt/Mondego.png
||plius.lt^$third-party
||pluralsight-training.net/microsoft/sponsorships/pluralsight-logo-for-sponsorships-small.png
||povilas.panavas.lt/blogas/wp-content/uploads/2012/05/Vieta-jūsų-reklamai.png
||povilas.panavas.lt/blogas/wp-content/uploads/2013/10/enternet-banner.jpg
||povilas.panavas.lt/blogas/wp-content/uploads/2014/02/www.draudimas.lt_.gif
||povilas.panavas.lt/blogas/wp-content/uploads/2014/02/www.medguru.lt_.jpg
||povilas.panavas.lt/blogas/wp-content/uploads/2014/04/ClasiffiedsRunner_blogas.jpg
||pramogu.lt/pramogult.png
||priejuros.lt/imgs/issinuomosiu.gif
||priejuros.lt/palangosvila/palangosvila.swf
||prokuraturos.lt/Portals/0/Skins/lrgp/images/Patarimai.gif
||prokuraturos.lt/Portals/0/Skins/lrgp/images/banner1.gif
||psichika.eu//grafika.iv.lt/serveriai/hosted.gif
||pulas.lt/htm/texas.gif
||pzemaitis.lt/wp-content/uploads/2013/06/VMI/150x150_VMI_v03.swf
||r.diena.lt/i/co-sites/
||r1.lt/paveiksliukai/*.png
||r1.lt/wp-content/uploads/2013/04/fontanas-v-195x168.jpg
||radiocool.lt/banners/square-button.gif
||rcmodelis.lt/styles/hestia/theme/images/propeleris.png
||redo.lt/galery/_redo/page/klaipedos_info20110506.png
||rimi.lt/assets/upload/userfiles/images/background/Frette%20fonas%201600x970-3.jpg
||rocknroll.blogas.lt/https://lh3.googleusercontent.com/-HlLkax1GggM/UGSYFJmOVpI/AAAAAAAAmCc/TZT-DJmpt4g/s125/aukok.png
||russianamerica.com/top/logo/index.php?id=5983
||s-microsoft.com/global/ImageStore/PublishingImages/logos/hp/logo-lg-1x.png
||s1.postimage.org/xh5bk9p2n/siuntos_200x200.jpg
||seksas.us/REK/*.jpg
||selonija.lt/selonija_draugai/
||senukai.lt/out/1/html/0/images/wysiwigpro/*.swf
||siena.kauko.lt/new/wp-content/uploads/2013/03/CV_Market.jpg
||siena.kauko.lt/new/wp-content/uploads/2013/06/siulome.jpg
||siena.kauko.lt/new/wp-content/uploads/2013/12/cvkaunas_sm1.jpg
||siloaidas.lt/wp-content/uploads/2012/12/Logotipas1.jpg
||skrastas.lt/galery/_skrastas/banners/
||skydiniunamustatyba.lt/flash/180x150.swf
||skydiniunamustatyba.lt/flash/banner.swf
||smartseo.lt/*.png
||spainetosdraudimas.lt/uploads/images/Vart-ban-220x100(1)b.jpg
||spainetosdraudimas.lt/uploads/images/banner
||spainetosdraudimas.lt/uploads/images/sadomaksa_ct_cs.gif
||spausdink-ilgiau.lt/image/cache/data/img/mokilizingas-182x182-182x182.png
||sport24.lt/uploads/NET4.png
||suru.lt/srwrd/wp-content/themes/scarlett/images/sponsors/LELO_PLEASURE_OBJECTS.png
||sveikata.info/files/autoportalas.lt-reklama1.jpg
||sveikata.info/files/zaidimai-protui.jpg
||sveikatosabc.lt/templates/main/images/skradio.jpg
||sveikatosabc.lt/vidpadziai200x229.swf
||tekstai.lt/images/stories/draugai/
||themusic.lt/images/thesport.png
||themusic.lt/images/vienisi.png
||tiketa.lt/files/2014.04/id_18953.swf?
||tiketa.lt/files/2014.04/id_18980.jpg
||top100.lt^$third-party
||torrent.lt/*/advise/
||transplantacija.lt/images/15min.png
||transplantacija.lt/images/novartis.png
||trevors.lt/lt/catalog/details/455$popup
||ultrashop.lt/images/160x160xasus_160.jpg
||vairuokime.lt/img/lyoness.png
||veberis.com/banner/
||veberis.com/lasivesaleja/KA_173x183_fotopro.swf
||veberis.com/veberis.com/banner/
||veberis.com/veberis.com/images/virselis_26.jpg
||vestuves.eu/img/banners/42.swf
||videomuzika.lt/ads/120x60VM.gif
||vienaturis.lt/detales2.gif
||viktorijosvestuves.lt/blog/wp-content/uploads/2011/10/fotoperlas.jpg
||viktorijosvestuves.lt/blog/wp-content/uploads/2013/07/idw.png
||vilniaus-turtas.lt/images/isikelk.gif
||vilniaus-turtas.lt/images/kitokia_energija.swf
||vilniausgidas.lt/wp-content/uploads/2013/05/vorutos-logo.jpg
||vilniausgidas.lt/wp-content/uploads/2013/06/G.clips_.png
||viskasvestuvems.eu/images/Paslaugos/patalpos/alauso/alausoslenis.gif
||viskasvestuvems.eu/images/banners/
||vmi.lt/Images/Vmi/img/VMI%20220x110.swf
||vmt.lt/uploads/banners/
||wad.ojooo.com/bs_b_en.php?u=226712
||wildcat.lt/Images/Wildcat_180.gif
||ziezdriusodyba.lt/images/logo200.gif
||zigzag.lt/Laiskai/img/zigzag_stovyklos_280x169.jpg
||ziurimtv.eu/images/hostingas.png
||ziurimtv.eu/images/iv.png

View file

@ -0,0 +1,3 @@
<http://www.malwaredomains.com/?page_id=1508>:
"This malware block lists provided here are for free for noncommercial use as part of the fight against malware."

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
<http://pgl.yoyo.org/as/index.php>:
Site does encourage use of the list, and nowhere could I find terms and
conditions to use the list. Assuming it can be used freely.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,778 @@
[Adblock Plus 2.0]
! Checksum: atrrPDkYyBKB7ljBDBcHGg
! Title: EasyList Hebrew
! Last modified: 19/06/14 15:05 Jerusalem Daylight Time
! Expires: 4 days (update frequency)
! Homepage: https://github.com/AdBlockPlusIsrael/EasyListHebrew/
! Forums: https://github.com/AdBlockPlusIsrael/EasyListHebrew/issues
!
!
! Fork of: IsraelList http://code.google.com/p/israellist/
! Fork of: Fanboy IsraelList https://secure.fanboy.co.nz/israelilist/IsraelList.txt
! License:
! CC-BY-SA 3.0 - http://creativecommons.org/licenses/by-sa/3.0/
! GFDL 1.3 or later - http://www.gnu.org/licenses/fdl.html
! GPL 2.0 or later - http://www.gnu.org/licenses/gpl-2.0.html
! (at your option)
!
!---------------------------Generic Blocking Rules----------------------------!
!
.co.il/adv/$~object-subrequest
/pirsum/*$script,object
|http://ad.$domain=co.il
!
!--------------------------3rd party blocking rules---------------------------!
!
||213.8.137.51^
||3dots.co.il^$third-party,domain=~maple-team.com
||ad-sys.com^$third-party
||adland.co.il^$third-party
||adtv.me^$popup
||amazing-offers.co.il^$popup
||asafnewcalc.mataniphone.tempurl.co.il/calculator3/$popup
||best-offers.co.il^$popup
||clickcenter.net^$third-party
||clickon.co.il^$third-party
||descreti.co.il^$popup
||expert-offers.com^$popup
||akamaihd.net^$image,third-party,domain=fxp.co.il
||great-offers.co.il^$popup
||greenlead.co.il^$popup
||ha-deal.co.il^$popup
||infomed.co.il^$third-party
||internet-bee.com^$third-party
||jdate.co.il^$third-party
||mako.buy2.co.il^$third-party
||media.foxweb.co.il^$third-party
||merlin.co.il^$third-party
||movies-club.com/$popup
||multidown.co.il/affiliates.php$third-party
||mvertex.co.il^$third-party
||oceanmedia.co.il/landingpages/$popup
||onclickads.net^$popup
||osef.co.il^$third-party
||pera.co.il^$third-party
||s.tool-site.com^$third-party
||sekindo.com^$popup
||streamin.to^$popup
||talkahead.com^$third-party
||tbuy.co.il^$popup
||unbouncepages.com^$popup
||wesell.co.il^$popup
||wesell.co.il^$third-party
||ws.walla.co.il^$third-party
||yeppyepp.co.il^$popup
||zxxds.net^$popup
!
!-----------------------Site specific ad blocking rules-----------------------!
!
!-Walla!-!
||a.walla.co.il^
||fus.walla.co.il/vast/
||live.sekindo.com/uploads/users/$domain=walla.co.il
||xwne.wcdn.co.il^$domain=walla.co.il
!chrome
||fus.walla.co.il/script.js?
!-ynet-!
/CdaMarketingLink/*
/CdaMarketTextlinks_
||alljobs.co.il/Partners/Ynet/Engine.aspx
||go.ynet.co.il/short/commerce/
||go.ynet.co.il/short/content/2010/Career/banner/
||images1.ynet.co.il/PicServer3/2013/10/17/4920698/150_200.jpg
||mediadownload.ynet.co.il/static/FXG_V14_FULL/images/vertical_header.png
||ynet.co.il/images/headline_video_header_samsung.png
||ynet.co.il/WinWinCooperation/
||ynet.co.il^*/ynetbanneradmin/
||ynetshops.co.il/article/showbanner2/
!-nrg-!
||nrg.co.il/cache/banners
||nrg.co.il/images/banners
||nrg.co.il^*/maavaron.$script
!-nana10-!
||common.nana10.co.il/JScript/GeneralModules/Banner/
||nana10.co.il/SiteServicePromotion/
!-Haaretz/TheMarker/Mouse.co.il-!
/neto_search.$domain=haaretz.co.il|themarker.com|mouse.co.il
|http://dclk.$domain=haaretz.co.il|themarker.com|mouse.co.il
||haaretz.co.il/htz/images/bg/Ad_bg.gif
||haaretz.co.il^*/Banners/
||themarker.com/dclk/
!-Tapuz/Flix-!
/albums/intro5.flv$domain=flix.co.il|tapuz.co.il
=adv1.tapuz.co.il/
||biz.tapuz.co.il/iframes/ForumMessageBanner.aspx
||rm.tapuz.co.il^
||tapuz.co.il/Forums2008/JS/replaceLinks.js
||tapuz.co.il/communa/merlin_
||tapuz.co.il/forums2008/googleInTreeFrame.html
||tapuz.co.il/vilonBanner/
||tapuz.co.il^*CloseBanner.gif
||tapuz.co.il^*ClosePopup.gif
!-inn-!
||dwnmedia.a7.org/inntv/media/
||info.a7.org^$domain=inn.co.il
||inn.co.il/info_en/
||media-ios.a7.org^$third-party
!-Globes-!
||download.cast-tv.com/*_flv/prerole$object-subrequest
||globes.co.il/data/js/gtv_ads.js
||globes.co.il/news/frames/topbannerflash$subdocument
!-zvz-!
||bannerwebservice.zvz.co.il^
||zvz.co.il/BannerCommunication.
!-d-group-!
||ban.d-group.co.il/banners/$third-party
||madas-ads.securest.org^$third-party
!-mako-!
||1host.co.il/$object-subrequest,domain=mako.co.il
||adserv.mako.co.il^
||api.conduit.com^$domain=mako.co.il
||apps.mako.co.il/minicampaigns/
||bz-vd-se02.se.c04dl.vds-is.castup.net/$object-subrequest,media
||castup.net/server12/468/127/12740581-115.mp4$object-subrequest,media
||cdn.mdigital.co.il^$third-party
||ds.keshet-i.com/jserver/
||img.mako.co.il/*/*/*/*apet*.jpg
||jwtdigital-media.co.il/$third-party
||kz-vd-se01.se.c04dl.vds-is.castup.net/$object-subrequest,media
||makostorepdl-a.akamaihd.net^$third-party
||pas-rahav.com^$third-party
||rcs.mako.co.il/rss/yad2.
||sdc.mako.co.il^
!
!--------------------------1st party blocking rules---------------------------!
!
||2eat.co.il/banner/
||ads.one.co.il^
||ashdodnet.com/dyncontent/t_ad/
||auto.co.il/Banner/
||auto.co.il/BannersIfarme/
||banners*.bizportal.co.il^
||banners.bizportal.co.il^$popup
||banners.news1.co.il^
||banners.news1.co.il^$popup
||beaverscripts.com/openwindow.js
||beok.co.il/banners/
||besttv1.cdn.it.best-tv.com/reshet/components/BCPCLilyTrackBarCompanion/BCPCLilyTrackBarCompanion.swf
||bgu4u.co.il/download/banners/
||bizportal.co.il/Scripts/maavaron.js?v=
||cdn.mdigital.co.il/video/*.flv$domain=globes.co.il
||cdn.shorte.st/link-converter.min.js
||chabad.info/images/pirsomot/
||cinema-city.co.il/media/nlc2013/flash/*banner
||d.co.il/Hebrew/images/Premium/
||date.dacho.co.il^
||ddlil.com/banners/
||dimpact.co.il/Live/Banner/
||fcdn.co.il/*.swf$domain=fxp.co.il
||fcdn.co.il/*/*/*.php$domain=fxp.co.il
||gear.co.il/Content/MediaItems/Campaigns/
||gozlan.co/st_j.js
//gozlan.co/st_j.js|
||haflla.com/download/banners/
||holesinthenet.co.il/uploads/*/res/*.swf
||hometheater.co.il/opx/
||hometheater.co.il/pir/
||hwzone.co.il/jobs/
||images.fxp.co.il/*/*/*.php
||images.fxp.co.il/skinfxp
||images.fxp.co.il/skins/
||israelpost.co.il/content.nsf/0/D4413A7599E19E34C2257B2300467D0D/$FILE/*.swf
||jobmaster.co.il/code/kot/$object
||jobmaster.co.il/images/banners/
||kikarhashabat.co.il/data/auto/images/landing_pages_
||kipa.co.il/banner/
||kipasruga.com/banner/
||lametayel.co.il/landing/market.html$popup
||lev.co.il/download/HomeBackground/$image
||local.co.il/banners/
||moreshet.co.il/banners/
||my.yad2.co.il/Banner/
||nanafiles.co.il//Upload/92011/File/File_*swf
||news-israel.net/images/topAd
||pc.co.il/ajaxfilemanager/uploaded/$object
||pc.co.il/wp-content/uploads/$object
||pitro.net/Banners/
||raddar.co.il/bannersa.php
||rol.co.il/files/banners/
||rotter.net/edit/text/
||scity.co.il/scity_728_sdarot.swf
||sdarot.*/banner
||seret.co.il/images/banners/pagehasut/PageHasut
||seretil.me/cdn-cgi/nexp/dok9
||sport5.co.il/banners2/
||static.vgames.co.il/cdn/css/global.bg_comm.css?v=
||tgspot.co.il/wp-content/cache/minify/000000/yygpKbDS18_JzMtMzs_VS87Xy8wB8bKL9ZPz88pSi0riTS31sooB.js
||view-movies.co.il/980Banner.jpg
||view-movies.co.il/allencar.jpg
||view-movies.co.il/images/sideSticky.png
||view-movies.co.il/malabi/
||view-movies.co.il/winner.jpg
||view-movies.co.il^$popup
||vodmovies.co.il/images/connect.jpg
||vodmovies.co.il/tasia.jpg
||wcdn.co.il/banners/
!
!----------------------------------Whitelists---------------------------------!
!
@@||ad.doubleclick.net/$object-subrequest,domain=mako.co.il
@@||ads.doctors.co.il/banners/$~third-party,image
@@||dclk.themarker.com/js.ng/$script
@@||forbes.co.il/download/banners/
@@||go.ynet.co.il/short/commerce/2012/weathernew/
@@||i.total-media.net/yc/dc.$script,domain=winwin.co.il
@@||info.a7.org/info/$script,domain=inn.co.il
@@||info.a7.org/info/delivery/
@@||internet-bee.com/Feats/
@@||net-games.co.il/flvPlayer/dist/flowplayer-$script
@@||themarker.com/css/advertisement_article.css
@@||themarker.com/dclk/dclk_ads.js
@@||themarker.com/dclk/dclk_ads_init_tm_pol.js
@@||themarker.com/dclk/dfp/dfp_init_base.js
@@||themarker.com/dclk/dfp/dfp_init_tm.js$script
@@||y.net-games.co.il/adimages/
!
!--------------Whitelists Rules (caused by EasyList / EasyPrivacy )-----------!
!
@@||ads.one.co.il/images/Ads/2014/05/22/1500/51x20.gif
@@||ads.one.co.il/images/MSites/2014/05/22/1530/cremahadash.png
@@||ads.one.co.il/images/ads/2014/01/21/1400/home.png
@@||ads.one.co.il/images/ads/2014/06/02/1430/444.png
@@||adserver.adtech.de/?advideo/$object-subrequest,domain=mako.co.il
@@||adserver.adtech.de/rmevent/$object-subrequest,domain=mako.co.il,media
@@||advertising.themarker.com^$~third-party
@@||adworks.co.il^$~third-party
@@||agenda.nana10.co.il/counter.asp
@@||amazonaws.com/static.madlan.co.il/
@@||banners.e-dologic.co.il^$domain=bamba.co.il
@@||banners.hosting-il.com^$domain=cinema-city.co.il
@@||bhol.co.il/imagebank/400x250
@@||bipbip.co.il/Images/Ads/$~third-party
@@||bs.serving-sys.com/BurstingPipe/adServer.bs?cn=is&c=*VAST$object-subrequest
@@||bs.serving-sys.com/crossdomain.xml$object-subrequest
@@||c04dl.vds-is.castup.net/crossdomain.net
@@||cbci16.b1.cdn.co.il^
@@||ds.serving-sys.com/BurstingRes/$object-subrequest,domain=one.co.il
@@||gplanet.co.il/js/adx.js
@@||ifat.com/VideoControl/makoinformation$object-subrequest,domain=mako.co.il,media
@@||ilgde.adocean.pl/$object-subrequest,domain=mako.co.il
@@||kamaze.co.il/Advertisement/Image/callme/$~third-party,image
@@||kamaze.co.il/Advertisement/Logos/$~third-party,image
@@||lips.co.il/ads/$image,~third-party
@@||mako.checkm8.com/adam/em/$object-subrequest
@@||mako.checkm8.com/adam/inline?*=HEAVY_PIC_$object-subrequest
@@||mako.checkm8.com/adam/inline?*=STANDARD_TV_$object-subrequest
@@||mako.checkm8.com/adam/inline?*cat=mako.*VIDEOSPOT_$object-subrequest
@@||mako.checkm8.com/adam/inline?cat=mako.*=MIDROLL_$object-subrequest
@@||mako.checkm8.com/adam/inline?cat=mako.*=OVERLAY$object-subrequest
@@||mako.checkm8.com/adam/inline?cat=mako.*=SAGIR_$object-subrequest
@@||mako.checkm8.com/crossdomain.xml$object-subrequest
@@||mouse.co.il/images/ad_mouse_cafe.jpg
@@||nrg.co.il/online/*_468.htm$~third-party,xmlhttprequest
@@||one.co.il/ads/*.mp4$object-subrequest
@@||one.co.il/images/Ads/2011/12/26/1015/logo_51x20.gif
@@||one.co.il/images/Ads/2013/10/20/2230/racer_51x20hp.png
@@||one.co.il/images/ads/2014/06/02/1415/MNDL2.swf
@@||players.edgesuite.net/flash/analytics/qos$domain=mako.co.il
@@||pubads.g.doubleclick.net/gampad/ads?sz=$object-subrequest,domain=globes.co.il
@@||se.c04dl.vds-is.castup.net/server12/468/208/20816834-115.mp4$domain=mako.co.il
@@||sexadir.co.il/ads/$image,~third-party
@@||sexadir.co.il/banners/$image,~third-party
@@||seximo.co.il/ads/$image,~third-party
@@||sfx-images.mozilla.org^$image
@@||streambb.one.co.il/ads/$media
@@||xads.zedo.com^$popup,domain=one.co.il
@@||yad2.co.il/ajax/click_stat.php?BannerID=$xmlhttprequest
@@||zvz.co.il/AdImages/$~third-party,image
!
!------Whitelists Element Hiding Rules (caused by EasyList / EasyPrivacy )----!
!
ad.co.il#@#.ad-link
bipbip.co.il#@#.adlist
bipbip.co.il#@#.adpic
blms.co.il#@#.addtitle
homeless.co.il#@#.postad
inn.co.il#@##divTopAd
junkyard.co.il#@#.ad-body
kml.co.il#@#div[id^="div-gpt-ad-"]
one.co.il#@#a[href^="http://xads.zedo.com/"]
!
!---------------------------------Mobile Ads----------------------------------!
!
||admin.applicaster.com/v12//7047/Channel0_Android_Banners
||apps.mako.co.il/mobile/config/android/sport5/ad_config.xml
||apps.mako.co.il/mobile/config/android/sport5/banner_config.xml
||fus.walla.co.il/json/5804468/mint.walla_android.homepage/spons
||images.yad2.co.il/Pic/yad2new/homepage_promotions/prom
||live.sekindo.com/uploads/users/*/ads/
||sport5.co.il/cm8ads/
!
!------------------------General element hiding rules-------------------------!
!
bhol-forums.co.il,bhol.co.il,hydepark.co.il,pic.co.il###Plasma_1
getit.co.il,nana10.co.il,tapuz.co.il###TopBanner
ilimudim.co.il,rest.co.il###ads\.strip\.1
calcalist.co.il,frogi.co.il,mynet.co.il,ynet.co.il###ads\.top
feeder.co.il,rest.co.il###banner
bhol-forums.co.il,bhol.co.il###divBanner_Plazma
ladaat.info,tapuz.co.il###divTopBanner
sdarot.pl,sdarot.tv,sdarot.wf,sdarot.ws###extra
bhol-forums.co.il,bhol.co.il###sdera.width100pc
nana10.co.il,nrg.co.il,wallashops.co.il###topBanner
bizportal.co.il,bursagraph.co.il,saloona.co.il###top_banner
bhol-forums.co.il,bhol.co.il###top_banner_ph
beok.co.il,winwin.co.il##.TopBanners
mako.co.il,rest.co.il##.ad
globes.co.il,onlife.co.il,sport5.co.il##.banner
haaretz.co.il,themarker.com##.border-box.bottomStripBanners
bhol-forums.co.il,bhol.co.il##.centered.padt10 > .clear
globes.co.il,nrg.co.il##.sekindo
sdarot.pl,sdarot.tv,sdarot.wf,sdarot.ws##.side
haaretz.co.il,themarker.com##.topBanners
haaretz.co.il,themarker.com##.topSectionBanners
sdarot.pl,sdarot.tv,sdarot.wf,sdarot.ws##A[href^="http://cellebrate.mobi/il/heb"]
gamex.co.il,linicom.co.il##A[target="_blank"]
sdarot.pl,sdarot.tv,sdarot.wf,sdarot.ws##DIV[style="position: fixed; z-index: 999; top: 0px; left: 0px; display: block;"]
sdarot.pl,sdarot.tv,sdarot.wf,sdarot.ws##DIV[style="position: relative; height: 0; right: 450px; top: 155px; z-index: 99;"]
doctors.co.il,globes.co.il##[id^="ads."]
!
!----------------------------Element hiding rules-----------------------------!
!
2all.co.il##.DivFlowBannerRight
ashdodnet.com##.Banner
ashdodnet.com##DIV[style="height: 78px; overflow: hidden; width: 510px;"]
ashdodnet.com##DIV[style="height: 78px; padding-right: 10px; margin-bottom: 20px;"]
auto.co.il###PlazmaOnOff
auto.co.il###ctl00_MainContent_divBannerHasut
auto.co.il##.content.awLng[style="text-align: center;"]
auto.co.il##div[style="width:300px;height:250px;margin-left:auto;margin-right:auto;"]
bari-p2.co.il##TD[style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:4px"]
bbls.co.il###phonepopup
bbls.co.il###opacity_curtain
beok.co.il##.BannerMid
bhol.co.il###AdvertisementSystemTakeOver
bhol.co.il###divPlazma
bhol.co.il###flashBtnX
bhol.co.il###test.f-right
bhol.co.il##.banner.clear
bhol.co.il##.response[style="background-color:#F4F2F0"]
bhol.co.il##.title14pxblue
bhol.co.il##TABLE[style="border-top:1px solid #EAEAEA;border-bottom:1px solid #EAEAEA"]
bhol.co.il##[style="position: relative; display: inline-block; vertical-align: text-bottom; text-align: justify; height: 20px; width: 111px;"]
bhol.co.il##iframe[src^="http://ads.bhol.co.il/"]
bhol.co.il##td[style="padding-bottom:4px; padding-top:7px"]
bipbip.co.il###LeftBanner
bipbip.co.il##.HotBannerDiv
bipbip.co.il##.TopBannerDiv
bizportal.co.il###additional_article_adv
bizportal.co.il###additional_article_adv_NEW
bizportal.co.il###articleBannerMadadimLeft
bizportal.co.il###hpBannerMadadimLeft
bizportal.co.il###shdira
bizportal.co.il###shdira_homepage
bizportal.co.il###tapet_superpremium_container
bizportal.co.il##.adv_breatdcrumbs
bizportal.co.il##.baner1
bizportal.co.il##.baner2
bizportal.co.il##.kubia_banner
bizportal.co.il##.single_section_world_short
bul.co.il##BODY
cafe.themarker.com##.banner-wrapper
cafe.themarker.com##.hp_left_ad
calcalist.co.il###ArticleBanner
calcalist.co.il##[height="7"] + [valign="top"] + TR[height="7"]
calcalist.co.il##[valign="top"] + [valign="top"] + TR[height="7"]
calcalist.co.il##div[style="width: 315px; overflow-x: hidden;"]
calcalist.co.il##table[width="150"]
calcalist.co.il##table[width="478"]
carsforum.co.il###bannerwrap
carsforum.co.il##.box2
carsforum.co.il##DIV[style="float:left;padding-left:3px;"]
carsforum.co.il##table.tborder[style="margin-top:6px;"]
cellebrate.mobi###flow
chabad.info###rodefet_left
chabad.info###rodefet_right
chabad.info###text_pirsomet
chabad.info###top2_ad_container
chabad.info##.bet_ads
chabad.info##.left_pirsomot
cinema-city.co.il##[style="position:absolute;width:258px;height:256px;left:33px;top:13px;"]
cinema-city.co.il##[style="position:absolute;width:258px;height:256px;left:33px;top:852px;"]
cinema-city.co.il##[style="position:absolute;width:275px;height:155px;left:24px;top:1140px;"]
d.co.il##.header_banner
d.co.il##.premium-d-strip-banner-container
dacho.co.il##.fixed_position1
doctors.co.il###big_banner
doctors.co.il##div[id^="dgBan"]
dossinet.me###bg_banner_header_top
flix.mako.co.il###topBannerTable
flix.tapuz.co.il##.headerMiddle
flix.tapuz.co.il##DIV[style="background-color: #FFFFFF; margin-left: auto; margin-right: auto; min-height: 94px;\a padding-bottom: 10px; padding-top: 65px; text-align: center; width: 960px;"]
forbes.co.il##EMBED[src^="/download/banners/"]
forbes.co.il##TABLE[style="background-color:#e8e8e8"]
frogi.co.il##.adbox
fun-city.co.il###videoImage1_login
fxp.co.il###adfxp
fxp.co.il###vc_widget
fxp.co.il###web_3_tool
fxp.co.il##A[href^="http://fcdn.co.il"]
fxp.co.il##[style="width: 160px; height: 600px; top: 50px; position: fixed; right: 286.5px;"]
fxp.co.il##[style="width: 160px; height: 600px; top: 50px; position: fixed; right: 9.5px;"]
fxp.co.il##[style^="opacity:"]
games.nana10.co.il###tmp1632_46
games.nana10.co.il##.BannerMiddle
gamex.co.il###skyscraper
gear.co.il###peelback
gear.co.il##.ad_A1
gear.co.il##.ad_B1
gear.co.il##.ad_B2
gear.co.il##.ad_B3
gear.co.il##.ad_B4
gear.co.il##.ad_C2
gear.co.il##.tab-logos
geektime.co.il##.widget.sponsors-widget
globes.co.il###addNadlan
globes.co.il###banner870x75
globes.co.il##.G_BoxTH
globes.co.il##.G_divTopSpace20
globes.co.il##.banner_box_300x250.NoTopBorder
globes.co.il##.banner_box_550x90
globes.co.il##.banners
globes.co.il##div[style="border:0px solid #cacaca; padding:0px 25px; direction:rtl;"]
google.co.il###mbEnd
google.co.il###tads
haaretz.co.il###comments_banner_wrapper
haaretz.co.il##DIV[style="font-size:19px; font-weight:bold;margin-bottom:10px;"]
haaretz.co.il##div[id^="dclk_objects_"]
haaretz.co.il##div[style="background: url(/htz/images/bg/Ad_bg.gif) repeat; padding:10px 0; text-align:center;"]
hashekel.co.il###block-13
hashekel.co.il###block-14
homeless.co.il###board_middle_advert
homeless.co.il###plasma_container
homeless.co.il##.boardfooter_tr
homeless.co.il##.plasma
homeless.co.il##DIV[style="clear:both; float:none; height:40px;"]
homeless.co.il##DIV[style="width:641px; height:129px; clear:both; float:none;"]
homeless.co.il##TD[style="width:200px; text-align:left; vertical-align:top;"]
homeless.co.il##TH[colspan="20"]
hwzone.co.il###cubicbigarticlesbannertable
hwzone.co.il##.box2.alljobBox
hwzone.co.il##.wideBanner
hwzone.co.il##[class^="banner"]
i.start.co.il###boxes
ice.co.il##.top_pirsomet
ilimudim.co.il##.mp-hd-banner
infomed.co.il##.ad_01
inn.co.il###MadLargeInf
inn.co.il###div160Info
inn.co.il###div180Info
inn.co.il###div300
inn.co.il###div300ILPict
inn.co.il###divContentRightInf
inn.co.il##[class^="divMAD"]
inn.co.il##[id^="LeftColInf"]
inn.co.il##[id^="LeftInfo"]
inn.co.il##[id^="divBottomAd"]
inn.co.il##[id^="divHr"]
inn.co.il##[id^="divLeftInf"]
iphones.co.il###mainBannerSponsers2
iphones.co.il##div[style="padding-top:10px;width:250px;height:250px"]
israelhayom.co.il###mini-panel-top_banner
israelhayom.co.il##.panel-pane.pane-panels-mini.pane-banners-art-op-bottom
israelweather.co.il###weekFlashes
junkyard.co.il##.plasma_banner
junkyard.co.il##DIV[id^="banner"]
jobmaster.co.il##TABLE[width="100%"][style="border-top:1px solid #EEEEEE;"]
kikarhashabat.co.il###exposeMask
kikarhashabat.co.il###jumbo
kikarhashabat.co.il###maavaron_overlay
kikarhashabat.co.il###takeover_wrapper
kikarhashabat.co.il##.ads_category_box
kikarhashabat.co.il##.ads_category_header.subcat_cap
kikarhashabat.co.il##.comments_inner_banner
kikarhashabat.co.il##.frontal_ad430x60
kikarhashabat.co.il##.kikar_trade_links
kikarhashabat.co.il##DIV[style="margin: 16px 0;width:990px;overflow: hidden;position: relative;left: 1px;height: 100px;"]
kipa.co.il##.PirsumList
kipa.co.il##.bannerJambo
kipa.co.il##.homeCol3.PirsumList.col
kipa.co.il##.pirsum110
kipa.co.il##.textualy
kipa.co.il##A[href="http://www.babetov.co.il"]
kipa.co.il##DIV[style=" float:right; width:300px; margin:-2px ; height:160px; padding:0px;"]
kipa.co.il##[id^="pir-"]
kml.co.il###div-gpt-ad-1389452292530-0
ladaat.info###divBranzaRightBanner
ladaat.info###divMainBanner
ladaat.info###divMekomiRightBanner
ladaat.info###divMivzakimAd
ladaat.info###divRightButtonsAds
ladaat.info###divRightVideoAd
lib.cet.ac.il##td[background^="/images/commercials"]
likudnik.co.il##DIV[style="text-align: center;"]
link4u.co.il###link_banner
link4u.co.il##.banner_300x224
link4u.co.il##.banner_main
madas.co.il##.AdsContainer
madas.co.il##.LeftColumn_container.Floater
madas.co.il##.TextLinkBanner
maka.co.il##.leftBanner
maka.co.il##.midBanner
maka.co.il##.rightBanner
mako.co.il###googleLinkUnits
mako.co.il###mysupermarketcontainer
mako.co.il###neoTopStrip
mako.co.il###rAdContainer
mako.co.il###topPageStrip.not_for_print
mako.co.il##.header_level2_container
mako.co.il##.mako_banner_coast
mako.co.il##.sidebar_pic
mako.co.il##[href^="http://apps.mako.co.il/common/Advert"]
mako.co.il##[href^="http://styleriver.mako.co.il/"]
mako.co.il##[href^="http://www.mysupermarket.co.il/?banner"]
mapa.co.il###headerContenetBanner
mapa.co.il##.bannerPlace
mapa.co.il##.cls_bannerRight_sideCubeInner
mapa.co.il##.cls_banner_468X60
mapa.co.il##DIV[style^="text-align:center;width:374px;height:260px;*height:270px;_height:270px;*display:inline-block;background-color:#e3e3e3;padding-top:10px;"]
mapa.co.il##DIV[style^="text-align:center;width:385px;height:260px;*height:270px;_height:270px;*display:inline-block;background-color:#e3e3e3;padding-top:10px;"]
mapa.co.il##TD[bgcolor="#e3e3e3"][height="110"]
mekusharim.walla.co.il##.center.footer-banner
mekusharim.walla.co.il##.main-lower-corners.clearfix
mishlohim.co.il###TopMenu1_bannerDiv
mishlohim.co.il##.Banners
moreshet.co.il###superJamboBanner
morfix.co.il##.adv_ph
mouse.co.il###floatingbannerdiv
mouse.co.il##.ads
mouse.co.il##.noprint + .inline-box-text_new.noprint
mouse.co.il##div.inline-box-text
mynet.co.il##DIV[style="padding-top:10px;padding-bottom:10px;padding-right:10px"]
myvod.me###colourButton99[width="1002"][height="612"]
nadlan.com##.middlebannerFlash
nadlan.com##.wrapBoxSmall
nadlan.com##.wrapshedbox
nadlan.com##table[width="192"][bgcolor="#dcdcdc"]
nadlan.com##table[width="980"][bgcolor="#dcdcdc"]
nana10.co.il###ArticleBanner2x2
nana10.co.il###CM8ShowAd_Ozen_160x600
nana10.co.il###GoogleAds400x223
nana10.co.il###IndexPromotions
nana10.co.il###bottomBannerBlock
nana10.co.il###tmp1362_903810
nana10.co.il###tmp1639_1012341
nana10.co.il###topBannerBlock
nana10.co.il##.AdvLine
nana10.co.il##.ArticleInlineBanHolder
nana10.co.il##.HomePageCommercialsBg
nana10.co.il##.TowColsAdvertisementMenuBg
nana10.co.il##.rightTower.Banner
nana10.co.il##div[style=";margin:20px 10px 0px 10px;width:298px;height:298px;"]
nana10.co.il##div[style="top:1600px; right:800px; width:320px; height:320px;"]
nana10.co.il##div[style="top:320px; left:640px; width:160px; height:640px;"]
netex.mako.co.il###b2Wrapper
newmail.walla.co.il###toolbarLink
newmail.walla.co.il##.daily_container
newmail.walla.co.il##.walTopBannerInside
news-israel.net##TABLE[style="height: 60px; margin-top:10px; width: 468px;"]
news-israel.net##TABLE[style="height: 60px;margin-top:10px; width: 468px;float:right;"]
news-israel.net##TABLE[style="width: 300px; height: 251px; margin-bottom: 10px;"]
news-israel.net##TABLE[style="width: 931px; height: 136px; margin-top: 8px; margin-bottom: 8px;"]
news-israel.net##TABLE[style="width: 931px; height: 136px; margin-top: 8px;"]
news1.co.il###UcInsideRight_1_1_tblWidth
news1.co.il##TABLE[bgcolor="#eeeeee"][height="150"]
news1.co.il##TABLE[height="160"]
news1.co.il##TD[width="237"][style="background-color: #EEEEEE;"]
nrg.co.il###CM8ShowAd
nrg.co.il###FrmTguvut + #nadlanBox
nrg.co.il###adArt
nrg.co.il###bLColumnText
nrg.co.il###bRColumnText
nrg.co.il###ban2013_300x225
nrg.co.il###bottomBanners
nrg.co.il###left_google_ban
nrg.co.il###sekindo
nrg.co.il##.bannerWrapper
nrg.co.il##.tallBanner
nrg.co.il##IFRAME[style="height:250px;width:300px;"]
one.co.il###Adv2
one.co.il###adBomba
one.co.il###divAdChance
one.co.il###divYnetNews
one.co.il###tblAdBlock
one.co.il##.adBg
one.co.il##.adBg1
one.co.il##.divZedoAd
one.co.il##DIV[style="width:100%;height:25px;text-align:left;direction:rtl;"]
one.co.il##DIV[style="width:300px;height:250px;padding:10px 12px 10px 12px;text-align:center;background:#ebebeb;"]
one.co.il##div[style="height:43px;padding-bottom:18px"]
one.co.il##div[style="text-align:right;border:solid 1px #d5d5d5;"]
one.co.il##div[style="width: 636px; height: 32px; margin: 5px 0px 5px -340px;"]
one.co.il##div[style="width:100%;text-align:center;background:#ebebeb;padding:10px auto 10px auto;"]
one.co.il##table[width="100%"] + table[width="100%"]
onlife.co.il###block-freelancer-0
onlife.co.il###block-freelancer-1
onlife.co.il###top_article_ads_wrapper
onlife.co.il##.commercial
ori-diamonds.co.il###hoverConnect
ori-diamonds.co.il##A[href^="http://www.view-movies.co.il/"]
ori-diamonds.co.il##IMG[style="cursor: default; width: 100%;"]
pitro.net###p_lt_WebPartZone3_zoneTopBanner_PitronetBannerRotator_nolinkPanel
popcorate.co.il###hoverConnect
popcorate.co.il###videoImage1_login
reshet.tv###DivContent[rel="5498"]
reshet.tv###prArea
rest.co.il###divLeftBanner
rest.co.il##.adBox2
rest.co.il##.ad_box_1
rest.co.il##.ad_box_3
rest.co.il##.left_box_1
rotter.net##TD[style="width:120px;border:0px solid red;"]
s-maof.com###backgroundPopup
s-maof.com###popupContact
s-maof.com##DIV[style="position: absolute; left: 40px; top: 200px; z-index: 0;"]
s-maof.com##DIV[style="position: absolute; right: 40px; top: 200px; z-index: 0; width:154px;"]
saloona.co.il###footer_banner
seret.co.il##.RightColWhiteBox312x262
seret.co.il##.cbthfds
seret.co.il##DIV[style="width:100%;text-align:center;"]
seret.co.il##SPAN[style="line-height:192px;height:192px;clear:both;display:block;"]
seretil.me###ads516516as
solitaire.co.il##.viv
sport5.co.il###ucHeader_rptLinks_lnkAnchor_3
sport5.co.il###ucHeader_rptLinks_lnkAnchor_4
sport5.co.il##.article-holder > .alt
sport5.co.il##.banner-list
sport5.co.il##.inner_adv
sport5.co.il##.iphone
sport5.co.il##.post.post-alt
srugim.co.il###front_rcol_ad
srugim.co.il##.margin_10
srugim.co.il##.srugim_top_slider
starmed.co.il##.banner_forums_160x600_right
starmed.co.il##.banner_forums_tree_300x250
starmed.co.il##div[style="width:990px;height:150px;margin:2px auto 4px auto"]
start.co.il###topbanner
start.co.il##.advCont
start.co.il##.banner_105x79
start.co.il##.banner_container
start.co.il##section[zone="117"]
start.co.il##section[zone="119"]
subscenter.cinemast.com###advert
subscenter.cinemast.com###bgLeft
subscenter.cinemast.com##CENTER
tapuz.co.il###AsyncMlinkBanner
tapuz.co.il###BannerRightBotDiv
tapuz.co.il###BannerRightDiv
tapuz.co.il###divTopBanner1
tapuz.co.il###divTopBanner2
tapuz.co.il###divTopBanner3
tapuz.co.il###frm_1
tapuz.co.il###ftrBnrDiv
tapuz.co.il###googleSide
tapuz.co.il###googleTop
tapuz.co.il###monsterMain
tapuz.co.il###popDiv
tapuz.co.il##.Partners_Ctrl
tapuz.co.il##.advContainer
tapuz.co.il##.areaBanner
tapuz.co.il##.areaLeftBnr
tapuz.co.il##.areaSideBanner
tapuz.co.il##.forumContentFooterBox
tapuz.co.il##.partnersBox
tapuz.co.il##.right.subsidiary
tapuz.co.il##.rightBar1
tapuz.co.il##.rightSideBanner
teamim.co.il###dnn_BottomPane
teamim.co.il###dnn_pageheaderpane
themarker.com###floatingBannerDepPage
themarker.com###floatingBannerHomePage
themarker.com##.CutTransperetLine + .border-box
themarker.com##.banner-area
themarker.com##.banner_92008
themarker.com##.border-box.noSourceList
themarker.com##.click-tracker-banner.tadmit_300x100
themarker.com##.sdera-banners
themarker.com##.slideShowBannerGroup
themarker.com##IFRAME[id^="google"]
themarker.com##[name="txtlnk"] + .border-box
upf.co.il##.bgbanner
view-movies.co.il###connect
view-movies.co.il##A[href="http://www.view-movies.co.il/minisite.php"]
view-movies.co.il##DIV[itemtype="http://data-vocabulary.org/Breadcrumb"]
vodmovies.co.il###wrapper6
vodmovies.co.il##A[href^="http://www.view-movies.co.il/"]
vodx.co.il##.top-banner
walla.co.il###ARKIA_CONTAINER
walla.co.il###navbar
walla.co.il###sec_jobcity_906
walla.co.il###sec_kama_910
walla.co.il###sec_shops_907
walla.co.il###sec_wallatours_916
walla.co.il##.banner-container
walla.co.il##.benfitsAd
walla.co.il##.btm_sep
walla.co.il##.greenLine.left
walla.co.il##.greenline
walla.co.il##.greenline_top
walla.co.il##.internetmore
walla.co.il##.jobsDiv
walla.co.il##.top_banner_outer.relative
walla.co.il##div[style="padding-left:2px;width:134;"]
walla.co.il##div[style="width:468px;height:70px;"]
walla.co.il##div[style="width:468px;margin:0 auto;"]
walla.co.il##iframe[src^="http://a.walla.co.il/adf.cgi?"]
wallashops.co.il###mainBanner
wallashops.co.il###megaBanner
wallashops.co.il###promotionBanner0
wallashops.co.il##[id^="textBanner"]
winwin.co.il###tvBannerContWinWin
winwin.co.il###tvBannerContWinWinDFP
winwin.co.il##.MiddleBanners
wisebuy.co.il##.LboxGrey[style="height:270px;text-align:center;"]
wisebuy.co.il##.LboxGrey[style="height:337px;text-align:center;"]
wisebuy.co.il##table[width="100%"][align="center"]
xnet.co.il###XnetAdSenceThinkAdAD-300
xnet.co.il###ads\.top\.1
yad2.co.il###left_banner
yad2.co.il###left_sekindo
yad2.co.il###td_banner
yad2.co.il###td_banner2_info
yad2.co.il###top_banners
yad2.co.il##.banner_strip
yad2.co.il##.plasma_banner.pie
yad2.co.il##.search_banners
yad2.co.il##.yad1_mergetitle
yad2.co.il##TD[style="background:#FFFFFF;"]
yad2.co.il##TH[style="background: #505D6A; font-size: 13px; font-family: arial; text-align: left; color: white; font-weight: bold; padding: 0px; margin: 0px; padding-right: 0px; padding-left: 10px; height: 31px; border-bottom: 1px solid white;"][colspan="9"]
yad2.co.il##div[style=" height: 90px; background-color: #DDDDDD; border-radius:6px; width:978px; padding-top:8px; padding-bottom:8px; margin-left: auto; margin-right: auto; margin-bottom: 8px; position: relative;"]
yeshanews.com###sideban
yesno.co.il###wrapper
ynet.co.il###ads\.300x600\.1
ynet.co.il###art_bottom_adsense-1
ynet.co.il###art_right_sponsored_links-1
ynet.co.il###googleAdsenseMivzakim
ynet.co.il###google_ads_iframe_\/ynt\.top\.central
ynet.co.il###ww6s_Main
ynet.co.il###ynet_lightbox_content_top
ynet.co.il##.CAATVcompAdvertiseTv
ynet.co.il##.HTcompData
ynet.co.il##.HTleshonitDiv[style="width:300px; background: #000066;"]
ynet.co.il##.MRec_main
ynet.co.il##.art_video_samsung_top
ynet.co.il##.bigdeal
ynet.co.il##.element.B3.ghcite.noBottomPadding + .element.B3.ghcite + .element.B3.ghcite + .element.B3.ghcite + .element.B3.ghcite
ynet.co.il##.ghciClickablePicture1
ynet.co.il##.ghciClickablePicture3
ynet.co.il##.ghciPromoLightbox1
ynet.co.il##.leshonitMain.leshonitBorderRectangle
ynet.co.il##DIV[style="width:256px;height:66px;background-color:#FFFFFF;"]
ynet.co.il##[style="DISPLAY: block; FLOAT: left"] > DIV[style="PADDING-BOTTOM: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px"]
ynet.co.il##iframe[style="width:770px;height:191px;"]
zap.co.il###dgBan_t12x1
zap.co.il##.BannerBox
zap.co.il##.Martef
zap.co.il##.headerBannerCenter
zap.co.il##.leftSideBanner
zone.walla.co.il##.w2.wp-0-b

View file

@ -0,0 +1,293 @@
[Adblock Plus 2.0]
! Title: Adblock Polska
! Homepage: http://fb.com/adblockpl
! Last modified: 06 June 2014
! Expires: 2 days (update frequency)
! List maintainers: adblockpl, tomasko126
! License: GNU GPL v3
! Report problems or unblocked ads to adblockpolska@gmail.com
! Thanks to Adblocklist.org and Niecko.pl for inspiration!
! Works best with EasyList - be sure to subscribe it as well!
! * - General Blocking Rules - * !
.info/images/banners/
.pl/*/adds/
.pl/*/ads/
.pl/data/banners
.pl/images/baner-
.pl/images/banners/reklama
.pl/images/stories/baner
.pl/images/stories/banner
.pl/img/ad/
.pl/files/bannery/
.pl/news/banery/
.pl/wp-content/banners/
/adexon_
/anty-adblock.js
/banery/*110x90
/banery/*750x100
/banery/*750x200
/banery/*980x90
/banery/*980x100
/banery-reklamowe/
/boxReklama
/emisje*.swf
/foto/banery/
/galeria/reklama
/gfx/bannery
/grafiki/bannery/
/Image/banery/baner_
/img/banery/
/img/banerki/
/img/vip-info.png?
/js/advert_reklama.js
/media/banner/*.gif
/miejsce-na-reklame
/pagead/ads?
/partners/onet/*
/pixad/img/*
/photos/adv_
/player/VASTLoader.swf
/popupredir/*$popup
/rek/ifr/*
/reklamy/*
/storiesflash*.swf
/storiesflash/baner
/upload/banery_pl/*
/vardata/banery/*
_750x200_
_banner.png
_reklama.jpg
_res/banner/glowna/
-lokazje.
-reklama.gif
! * - General Element Hiding Rules - * !
###adv_bottom
###baner300x250
###baner635x85
###baner750x100
###banner970x90
###baner-top
###block_info_wrap
###boxy
###contener_billboard
###divStayTopLeft
###dont-use-adblock-goddammit
###main-baner
###my-main-right
###page-peel-banner
###page_top_reklama
###prv-billboard
###rekGora
###slideshow_minibanner
###sponsoring
###top_banners
###top-lead
##.abwarn
##.adSrodek
##.advert
##.adv_info
##.BanerHPBig
##.baner_reklama
##.banneritem
##.banner-block
##.box.player.special
##.bxTBaner
##.billboardWrapper
##.bnMiddle
##.flexbanneritem
##.google_468x60
##.index_banner
##.main-tbaner
##.moduletable_reklama
##.moduletable_reklama_banner
##.peeloverlay
##.pnbbaner
##.popup-fadeOverlay
##.reklama_title
##.reklamy_banner
##.results__entry--ads
##.rrestbaner
##.sky_layer
##.teaser_cnt
##[id^="ad_gora"]
##[id^="ad-rectangle"]
##[id^="aswift_"]
##[id^="billboard"]
##[id^="CSPNONK"]
##[id^="flash_banner_"]
##[id^="FLOAT_frame"]
##[id^="header-banner"]
##[id^="id_reklama_"]
##[id^="p_p_id_advert"]
##[id^="prv_main"]
##[id^="prvAdd-"]
##[id^="prvCommercial"]
##[id^="prvFrame"]
##[id^="reklama"]
##[id^="Reklamy-"]
##[id^="rlband."]
##[id^="sponsors-"]
##[class^="a_box"]
##[class^="adocean"]
##[class^="ads ads"]
##[class^="adv-home"]
##[class^="adv-ph-"]
##[class^="amalker_"]
##[class^="ban-top"]
##[class^="banera1"]
##[class^="banner b"]
##[class^="banner-content-"]
##[class^="banner_top_ad"]
##[class^="bannergroup"]
##[class^="centrujban"]
##[class^="div_reklama"]
##[class^="iAdserver"]
##[class^="middleB"]
##[class^="onet-ad"]
##[class^="rek_sr"]
##[class^="rekalama"]
##[class^="reklama"]
##[class^="row bigbaner"]
##[class^="topBarContainer"]
##[class$="_750_banner"]
##[class$="content_ad"]
##[src^="reklama"]
! * - Whitelist - * !
@@/player/vidAS=pre_roll
@@/vod/reklamy/WIZERUNEK.mp4
@@||adv.wp.pl/RM/Box/$domain=wp.pl|wp.tv
@@||iap.pl/ads/
@@||informacjelokalne.pl/images/storiesflash/czolowka
@@||ipla.$domain=ipla.tv
@@||iplex.pl*/ads.js
@@||ocdn.eu/files/pulscms/*.png
@@||pah.org.pl
@@||legnica.eu/uploads/pub/ads_files/
@@||rek.www.wp.pl/pliki/$script,domain=wp.pl|wp.tv
@@||rek.www.wp.pl/vad.xml?$domain=wp.pl|wp.tv
@@||reklama.onet.pl*logo*png
@@||smartadserver.com$domain=get.x-link.pl
@@||tvn.adocean.pl/files/js/ado.js$domain=ekstraklasa.tv
@@||wp.tv/adv.js$domain=tosiewytnie.pl
! * - 1st Party Blocking Rules & Ad-servers - * !
||ad.filmweb.pl
||ad.gazeta.pl
||ad.prv.pl
||ad.sterta.pl
||adblockdetector.com^$script
||adkontekst.pl
||ads.trojmiasto.pl
||adsearch.pl
||adtaily.pl
||adv.wp.pl
||adview.pl
||atmcdn.pl/*Adserver/
||banery.bai.pl
||bankier.pl/gfx/ad
||bochnianin.pl/foto/pasek/
||boksy.onet.pl
||brwinow.com/images/banners
||cdn.sterta.pl
||comperialead.pl/widget/
||csr.onet.pl
||debica24.eu/system/45/assets/000/00*baner
||dot.wp.pl
||ec.bankier.pl/file/
||ecache*.cdn.onet.pl/suso/?host=rtvnmw52e.mm.onet.pl
||fwcdn.pl/adv/*
||filmweb.pl/welcomeScreenJS?*
||gry-online.pl/im/zmieniarka/
||hub.com.pl
||img.wiocha.pl/img/gry
||j.o2.pl
||kryptokursy.pl/bnrs/
||lokalna24.pl/banery/
||lubartow24.pl/f*_bok.
||napisy24.pl/files/*
||napisy24.pl/images/190x260x_
||pclab.pl/img/extra/*_top.png
||pclab.pl/img/extra/*_left.jpg
||pclab.pl/img/extra/*_right.jpg
||pclab.pl/img/extra/*_back.jpg
||pila.pl/images/banners/
||pino.pl/static/empire/
||pocketads.pl
||portalprzemyski.pl/wp-content/re/
||rek.www.wp.pl
||reklama.osemka.pl
||static.clickonometrics.pl
||static-chomikuj.pl/serve/
||static-kinoman.tv/n*php
||video.vid4u.org
||wrzuta.pl/ads
||x.interia.pl/*.ad.
||x.o2.pl
||xxxxxxx.pl
||zycie-pleszewa.pl/images/banners
! * - 3rd Party Blocking Rules - * !
||18hd.pl^$third-party
||admailtiser.com^$third-party,popup
||adprize.pl^$third-party
||afilo.pl^$third-party
||clangames.pl^$third-party
||contextad.pl^$third-party
||dobryinteres.pl^&$third-party
||glossymedia.pl^$third-party
||incontext.pl^$third-party
||intextad.net^$third-party
||leadsign.pl/router/^$third-party
||netsales.pl^$third-party
||novem.pl^$third-party
||panel.adtify.pl^$third-party
||spot.o2.pl$third-party
||stat24.com$third-party
! * - Site-specific Element Hiding Rules - * !
24.pl###oglmetka
4lomza.pl##.bxbanner
7dni.pila.pl###content-left
alemiasto.pl##[class^="ad"]
autocentrum.pl##[style="float: right; width: 300px; height: 250px; margin-left: 5px; display: block;"]
autocentrum.pl##[style="float:right;width:300px;height:250px;margin-left:5px;"]
benchmark.pl###adblock-info
bochnianin.pl###slideText
filmweb.pl###flashcontent3
filmweb.pl###homeBar1-pl_PL
filmweb.pl##[id^="homeBox"]
filmweb.pl##.relative.iplaParent
formentorplus.pl##form
fotosik.pl##.adv
fronda.pl##.small-info
gazeta-wiesci.pl##.widget.widget_text
gry-online.pl##[id^="teaser_cnt"]
gry-online.poszkole.pl##FOOTER
informacjelokalne.pl##[src^="http://www.informacjelokalne.pl/images/reklama"]
kartuzy.info##[id^="baner"]
koscian.net##[class^="banery"]
koscian.net##[style="background: rgba(35,88,142,.9); position: fixed; z-index: 1000; top:0; left:0; width: 100%; height: 100%;"]
kryptokursy.pl##[style="width: 200px; height: 200px; margin: 2px 0px 2px -7px; display: block;"]
lubin.pl###banner
miedzyrzec.info##[id^="baner"]
moszczenica.info##.bannergroup
napisy24.pl###baner_300_250
napisy24.pl##.header_210
narodowcy.net##.custom
naszamlawa.pl##[id^="fancybox-"]
newsweek.pl##[class^="Block-Banner"]
orneta.net##.lof-container
pclab.pl##[href^="http://kropka.onet.pl/redir/redir.rd?banner"]
proline.pl###layer_top
purepc.pl##[class$="reklama"]
sadistic.pl/pics/c57d81558fed.jpg
serwislokalny.com##.banner
telepolis.pl##.b_750
telepolis.pl##.wiadomosci_lista_div
telepolis.pl##[style="text-align:center; width:369px; height:285px;"]
wp.pl##[id^="adv"]
wp.tv##.infoAB
xn--portalmawa-g0b.pl##[id^="xc-98-primary"]

View file

@ -0,0 +1,60 @@
# Blacklist maintained by HTTP Switchboard
# For those domain names which are not found in other blacklists
2mdn.net # "2mdn.net is a domain used by Doubleclick which is an advertising company..."
aad73c550c.se # Related to adrotator.se which is itself blacklisted
acxiom-online.com # Wikipedia: "Acxiom Corporation is a marketing technology and services company".
adextent.com # "We are an advertising technology company - we build technologies that improve ads performance"
adgear.com # "AdGear is an online advertising technologies company based in Montreal, Canada"
adnxs.com # "Adnxs.com is run by AppNexus, a company that provides technology, data and analytics to help companies buy and sell online display advertising" (Ref.: http://www.theguardian.com/technology/2012/apr/23/adnxs-tracking-trackers-cookies-web-monitoring)
adobetag.com # "Adobe Announces Adobe Tag Manager for the Online Marketing Suite"
aimatch.com # "Ad Server, SAS® Intelligent Advertising for Publishers"
analytics.edgesuite.net
atedra.com # "Atedra est un réseau de publicité Internet francophone au Canada"
axf8.net # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
betrad.com # "Evidon: Home | Online Marketing Intelligence, Web Analytics, Privacy" (which also publishes "Ghostery" add-on..)
bizographics.com # "Business Audience Marketing"
bkrtx.com
# "Imagine Having The Power To Turn Abandoning Visitors Into Customers"
# "The BounceX software is tracking all the cursor movements of every visitor in real-time" (yikes!)
bounceexchange.com
clicktale.com # "See absolutely everything your visitors do on your webpage ... See their every mouse move, click and keystroke"
clicktale.net # Redirect to `clicktale.com`
crosspixel.net # (cookies, localStorage) "leading provider of high performance audience data and information for the real-time advertising industry"
crsspxl.com # Related to crosspixel.net
datarating.com # see https://github.com/gorhill/httpswitchboard/issues/343
displaymarketplace.com
erovinmo.com # No info whatsoever from site itself can be found = naughty corner. Ironically spotted at "http://www.technologyreview.com/news/519336/bruce-schneier-nsa-spying-is-making-us-less-safe/" (also: http://www.mywot.com/en/scorecard/erovinmo.com)
exelator.com # "domain used by eXelate Media which is an advertising company that is part of a network of sites, cookies, and other technologies used to track you" (Ref.: http://www.donottrackplus.com/trackers/exelator.com.php)
everestjs.net # related to `everesttech.net`
everesttech.net # "search engine marketing (SEM) solutions", pixel image on the page, looks like tracking to me. Spotted @ `http://www.homedepot.ca/` (search worked fine when blocking this hostname)
eyereturn.com # "eyeReturn Marketing is the only end-to-end digital advertising platform in the market"
gigya.com # "The tools you need to connect with consumers, harness rich data, and make marketing relevant"
inmuiads.info #
janrainbackplane.com # "Easily visualize, segment and update customer profiles to enable true personalized marketing"
krxd.net # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
lijit.com # "We provide online advertising services, audience analytics"
llnwd.net # http://en.wikipedia.org/wiki/Limelight_Networks
lduhtrp.net
mathtag.com # "domain used by MediaMath to place cookies, on behalf of its customers, on the computers of visitors to our selected customer's websites and who may view our customer's display advertisements"
mxpnl.com #
moatads.com # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
mookie1.com # "Specializing in online digital advertising, search marketing"
msads.net # Sounds like ads, and no home web page...
omtrdc.net # Redirect to Omniture
outbrain.com # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
panoramtech.net # As seen in a screenshot at http://arstechnica.com/security/2014/01/malware-vendors-buy-chrome-extensions-to-send-adware-filled-updates/
parsely.com # http://en.wikipedia.org/wiki/Parse.ly
peer39.net # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
pub2srv.com # "This url is used by ad network Propeller Ads Media for ad serving"
servebom.com # no home page, seen as 'tracking.servebom.com': good enough for this list
# These have "tracking" in domain name...
tracking.tomsguide.com
tracking.tomshardware.com
tracking.tomshardware.co.uk
wunderloop.net # https://www.eff.org/deeplinks/2013/06/third-party-resources-nsa-leaks
yceml.net

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,995 @@
[Adblock Plus 1.1]
! Checksum: D52D8IRspTHiANHmKpc55w
! This is bulgarian list hosted at http://stanev.org/abp
! Contact me at alex at stanev dot org
!
!Expires after 1 days
!
!--- General rules ---!
/728x90.swf
AdsClick.php?AdsID=
BannerClick.aspx?ID=
/bannerscstm/*
/banners/*.jpg$~background
b.*/ban/*
/catalog/images/baner*.gif
/cgi-bin/banner.cgi
com.nxtras.banner.ImageRotator
/design/images/banner/*
?go=_common&p=banner&bannerId=
/images/banner.gif
/mambo/images/banners*
/tpbanners/*
/xgemius.js
!
!--- General element hiding rules ---!
###ea_intext_div
##td[id="freenet_table_ads"]
!
!--- Specific rules ---!
||18-sexshop.com/avantura234x234.swf
||18-sexshop.com/parfumibg.com.swf
||1evro.com/show_i.php?b=
||1-gsm.com/images/banners/
217.174.155.35/b*.swf
||24chasa.bg/media/banners/
||24online.bg/data/banners/
||30dumi.eu/wp-content/uploads/2012/05/baner*
||360.bg/baner*
||4coolpics.com/banner/
89.215.175.32/banners/
91.196.126.51:666/save/?u=
91.196.126.51:8080/share/banners/
91.196.126.51:8080/var/assets/banners/
91.196.126.51:8081/banners/
91.196.126.51:8081/var/assets/banners/
91.196.126.51/ads
||absurdi.com/files/banner/
ac.all.bg/i/
||account-bg.info/e107/e107_images/banners/
a.cdnx.eu/nps/swf/banner*
||activ.bg/img/baner*
||actualno.com/actualno-arena-baner*
adds.svetu.com/banners/
ad.investor.bg/
||adpower.bg^$third-party
||ads*.fixar.org
ads.garga.biz/ad/
ads.ibox.bg/banners/*.swf
adv.abv.bg
||advbg.do.am/banners/
adv.gepime.com
||adwise.bg/search/
||afera.bg/280x190*
||afera.bg/banner*
||afera.bg/benim.jpg
||afera.bg/cashterminal-banner.swf
||afera.bg/gool.swf
||afera.bg/images/banners/
||afera.bg/wp-content/uploads/2012/05/yurt-banner.swf
aha.aukro.bg/banners.php
||alabala.bg/media/banners/
||alein.org/images/aimg_280x150.jpg
||alein.org/images/bgtop4.gif
||alein.org/images/doggydoggy2.jpg
||alfa.kachi-snimka.info/images/viu1326708098u.jpg
||amam.bg/a-d-s/
||amam.bg/bans/
||androidbg.com/banner*
||animes-bg.com/reklama/
||apteka-optima.com/frontend/files/banners/
||apteka-optima.com/frontend/files/static_pages/*Banner*
||ardanews.info/banners/
||ardanews.info/wp-content/uploads/2011/04/obredendom.png
||ardanews.info/wp-content/uploads/2013/04/baner_dps.jpg
||arenabg.com/var/assets/banners/
||arena.filmi-wb.info/wp-content/uploads/2012/10/oferti_anigif.gif
||argumenti-bg.com/imgs/banners/
||aromatite.com/120x240.swf
as.adwise.bg/j/context3rd.jsp
||astrohoroscope.info/reklama/
||auto-press.net/img/top_banner/
||autopress.tv/banners/
||avatar-bg.org/images/logoparket.gif
||avtocatalog.org/banerss/
||azcheta.com/images/banners
||bacchus.bg/img/baner_*.jpg
||balkantourist.bg/rent_a_car_EN_balkanT.swf
||bana-bg.org/images/banners/
||banerss.hit.bg/banners/
||banner1.eu/images/advert.jpg
||banners.friendfinder.com/
||bansko24.com/files/banner/
||bansko.net/files/banner/
||barometar.net/wp-content/uploads/2011/03/
||barterbg.net/images/barterbg_300_250.gif
b.dnevnik.bg/getban.php?
||bdz.bg/ban/
||befsa.com/banners/
beis.bia-bg.com/images/baner*
||beroe.eu/images/reklama/
||bet.bg/images/banners/
||bezvazelin.net/e107_images/banners/
||bgbaner.com/getads.php
||bgbazar.com/_files/banner/
||bgcert.com/banner/
||bgfanfootball.com/images/banners
||bghelp.co.uk/banners/
||bghelp.co.uk/G-Temp/
||bghelp.net/banners/
||bgkooperativ.com/banner/
||bglady.net/wp-content/uploads/2012/09/ad-dreshnik.net_.png
||bgled.com/userfiles/editor/image/racoms%20v1.2.gif
||bg-mamma.com/site/images/banners
||bgmaps.com/images/Billboard
||bgmaps.com/images/staticfield/200x40.JPG
||bgmaps.com/images/staticfield/634x20.jpg
bgmenu.postaffiliatepro.com/accounts/default1/banners/
||bgnes.com/img/bann/
||bgnes.com/rekl/
||bgonair.bg/public/files/banners/
b.grabo.bg
||bgrabotodatel.com/images/Banner*
||bgreferendum.bg/*/content/banners/
||bg.search.etargetnet.com/generic/
||bgtelevizia.com/adds/
||bgtop100.com/imgs/*ad
||bg-voice.com/public/files/banners/
||bgvolleyball.com/banner/
||bgwebchart.com/mitko/baners/
||bgweb.tv/images/Banner*
||bgzona.info/bitbucket-upload/used280x110.gif
||bgzona.info/pic/neww/
||biblio.bg/images/banner/
||binitrip.data.bg/media/kolektiva.jpg
||bioprogramme.net/banner/
||bipartia.com/images/banners/
||bivol.bg/images/banners/
||bmwpower-bg.net/banners
||booksbg.org/booksbg/images/banners/
||borbabg.com/reklama/
||bourgas.org/banners/
||bsms.bg/images/upload/banner/
||bspnews.net/e107_images/banners/
||b.superdns.info/banners/
||bueno.bg/affiliates/
||bukvi.bg/icon/nashite_planove.png
||bulborsa.com/images/120X90*
||bulborsa.com/images/banners/
||bulgaria-info.uni-web.net/banners/
||bulgarianbasket.com/banner/
||bulgariatrustandinvest.com/i_baner/
||bulphoto.com/banners/
||bumbum.gr/images/banners/
||burgasinfo.com/ajax/*
||burgasnews.com//images/banners/
||burgasnews.com/images/banners/
||business.bg/site_files/d-sitebanners/
||cars.bg/images/branding/
||cars.bg/images/px.gif
||catalog.bg/images/banner
cat.arenabg.com/assets/more/banner
cdn.aglconsult.co.uk/images/alexdevelopment.swf
cdn.plus500.com/Media/Banners/
||cenite.com/srennab/
||chambersz.com/im/nopic.swf
||choco.bg/prikachi/4sex.png
||ciela.net/FreeStateGazette/images/adv/
||cifronim.com/images/pages/image/System/Banner*
||clickbg.eblahfree.com/blahdocs/images/forum_banner
||climbingguidebg.com/adv/
||clip4e.net/img/264x60
||club9000.org/banners/
||club-bg.org/images/banner*
||computers.bg/120x460.
||conquiztador.bg/banner/
||conquiztador.bg/bgbanners/
||conquiztador.bg/getbannerframe.php
||conquiztador.bg/swf/tournament_webpromo.swf
||contract.bg/images/
||correctplus.com/images/baner*
||crimes.bg/img/bplay.gif
||crimes.bg/img/yourad.gif
||dalavera.com/banners/
||dalavera.com/reklama/
||dar.bg/images/*banner
||dariknews.bg/images/sg_bg__2.png
||data.bg/data*.swf
||data.bg/media/*banner
||data.bg/media/databg_*
||data.bg/media/Data_Zayo_Bayo.png
||data.bg/media/kolektiva.png
||data-bg.org/120x240*
||data-bg.org/*460x60.swf
||data-bg.org/banner*
data.msk.bg/delivery/afr.php
||deals.bg/branding.php
||dennews.bg/files/banners/
||dennews.bg/uploads/banners/
||desant.net/banners/
||devabroadcast.com/banner.php
||devastyle.com/deva/images/banners/
||digitalentropia.com/webprojects/ban569x50.swf
||diukian4e.gigerstudio.info/banners/
||djagi.com/banners
||dnesbg.com/evo*.swf
||dnevnik.mk/brend_desno.jpg
||dnevnik.mk/brend_levo.jpg
||dobrichonline.com/media/banners/
||dobrutro.com/i/portal/banner
||dobrutro.com/i/portal/top
||download.bg/adfiles/
||draftis.com/b/
||dreamwave-chan.hit.bg/bulsis.gif
||dtv-bg.com/banners/
||duma.bg/baneri/
||dzhebel.com/images/*adv.gif
||e-79.com/images/banners/
||easytrader.bg/banner.php
||e-bookbg.com/images/banners/
||ecenter-bg.com/images/banners/
||economy.bg/images/branding/
||economynews.bg/website_uploads/Image/theme/euro_atak/
||e-firmi.com/images/lasik.jpg
||e-firmi.com/images/smetkoplan.png
||energy-torrent.com/img/filement.jpg
||energy-torrent.com/img/obiavabg.jpg
||erotichno-belio.com/banner*
||eshop.bg/affiliate/advforumpuls_hor.php
||eshop.bg/affiliate/advforumpuls.php
||e-sim.home.pl/eworld/img/securaLogo.png
||etaj55.com/adv/banners
||etapgroup.com/images/interface/*branding*
||etapgroup.com/images/interface/dodo.png
||etapgroup.com/images/interface/etap_voucher.png
||etapgroup.com/images/interface/transparent_link_bg.png
||eventim.bg/root/upload/banner/
||e-vestnik.bg/img/banners/
||evowow.com/images/evowow_new_img.gif
||ex-traffic.com/show_ads.js
||fapturbo.com/banners/
||farmer.bg/*banners/
||fashion.bg/links/
||favorite-games.com/images/*/banners/
files.alein.org/images/800%D0%9Aosebose.com.jpg
||fishing-mania.com/img/*.swf
||flash4e.com/images/ban_
||flash-igri.com/banners/
||flexi-cms.com/images/banners/
flvplayer.viastream.viasat.tv/Commercials/
||forumat-bg.com/images/banners
||forum.bg-mamma.com/images/*.swf
||framar.bg/ads/wp/
||framar.bg/filestore/09122011.swf
||framar.bg/filestore/*729x90.jpg
||framar.bg/filestore/OrchidBronnley.swf
||freehost.homelinux.*/autoh/
||freehost.homelinux.*/fg/
||freehost.homelinux.*/zundert
||freepicsupload.com/pics/phprjRjAU-tic10.gif
||frognews.bg/files/banner
||frognews.bg/files/logo_slt.jpg
||frognews.bg/files/logo_zibo_courier_album_new2.jpg
||frognews.bg/files/*.swf
||frognews.bg/Frog/images/banners/
||frognews.bg/Frog/images/flash/
||frognews.bg/images/adv/
||ftech-bg.com/images/*banner*
||funbg.net/e107_images/banners/
||gbg.bg/resources/html/aukro_*
||get.bg/catalog/affiliate_show_banner.php?ref=
||gis-sofia.bg/uploads/image/gis_banner*
||globul.bg/images/*_banner_*.jpg
||gong.bg/inc/images/gilette*
||gorgonbg.org/images/banners/
||hala.bg/images_news/reklama*
||hardwarebg.com/ads/
||haskovo.net/adv/
||haskovo.net/banners
||haskovo.net/include/banners/
hb.hostbulgaria.com/hb-banner*
||hide-my-ip.com/promo/
||hitceni.bg/banners/
||hls-bg.com/hls186x56.gif
||homes.bg/images/branding
||host.click.bg/images/anim_banner*
||hotelsbg.net/banners/
||hotmail.bg/img/b*.gif
||hotspotbulgaria.com/wp-content/uploads/2011/09/Interbild_promo.jpg
||hrisimirpopov.com/images/banners
||hsmaritsa.com/images/banners/
i46.tinypic.com/efjal3.jpg
i55.tinypic.com/2zqat89.gif
i.adwise.bg/upload/
i.cars.bg/images/branding/
||ideo.bg/images/31829a4f382a008e.gif
i.dir.bg/ads20*
i.dir.bg/r20*
i.frognews.bg/images/adv/
i.frognews.bg/images/banners/
i.frognews.bg/images/stories/sunnybeachblue.gif
i.grabo.bg/banners/
i.grabo.bg/design/site_arenabg/bnr*
i.helikon.bg/design/banner*
i.id24.bg/bans/
i.imgur.com/RnuCI1h.png
||i-kat.org/images/banners
image.arukereso.hu/partner/
||imagesfrombulgaria.com/baners/
images.onbux.com/banner.gif
images.pop.bg/content/banner/
images.wambacdn.net/images/upload/adv/
images.webcafe.bg/2011/04/18/29.swf
||imenata.com/flash/
img26.imageshack.us/img26/6829/eurogas.gif
img2.grad.bg/m/300x600_BG_84-body-yellow_46d6939a.gif
img.abv.bg/AbvProductAds/
img.frognews.bg/bulgariatourism.png
||img.p2pbg.com/misc/bpoke.png
img.photo-forum.net/banner/
img.sedem.bg/banners/
img.zamunda.net/banners/
||imot.bg/html/hotimoti1.html
||imot.cc/images/banners
||imoti.bg/*125x125
||imoti.bg/baners/
||inbulgaria.info/ad*
||index.bg/ads/
||index.bg/banners/
||ineahost.com/banners/
||infobulgaria.info/baners/
||infodir.org/220x220.*
||infodir.org/baner/
||info.mitnica.com/images/*banner
||infovarna.com/advbanner
||ins-delivery.com&bannerId=
||interface-soft.com/BannerSitesFiles/
||intrastat-bg.com/intrastat/img/infoj.gif
||intrastat-bg.com/intrastat/img/yotov.gif
||intrigi.bg/upload/images/87233_6369a_viaeventis.jpg
||intrigi.bg/upload/images/*banner*
||intrigi.bg/upload/images/d2d81_%D0%91%D0%BB%D0%B0%D1%81%D1%82%D0%BC%D0%BE%D0%BD%D1%82%D0%B0%D0%B6_%D0%BB%D0%BE%D0%B3%D0%BE_2_%D0%91%D0%93%20(1).jpg
||investor.bg/brandings
||ipo.bg/bannercache
i.potv.bg/i/*728x90*
||iskamrabota.bg/images/banners/
i.wisdom.bg/adv/
||izbori.biz/add/
||jarcomputers.com/banners
||jennasblog.net/banner/
||jobs.bg/images/branding/
||journey.bg/ads/
||juen.bg/adv/
||kabinata.com/banners/
||kachi-snimka.info/ads/
||kakvo.org/baners
||kazanlak-bg.info/Baneri/
||kazanlak-bg.info/images/banners/
||kazanlak.com/img/banner/
||kidsarts.bg/js/dim.screen.js
||kjplus.net/wp-content/uploads/2013/02/hlyab2.jpg
||kjplus.net/wp-content/uploads/2013/02/Karti4ka-sibel-4-e1363008209680.jpg
||kjplus.net/wp-content/uploads/2013/02/Kj-e1368001903883.jpg
||kjplus.net/wp-content/uploads/2013/02/ocbn1.jpg
||kjplus.net/wp-content/uploads/2013/02/restorant2.jpg
||kjplus.net/wp-content/uploads/2013/02/Riva-e1369312912700.jpg
||kjplus.net/wp-content/uploads/2013/03/Hotel-Kardzhali-e1363781798501.jpg
||kjplus.net/wp-content/uploads/2013/04/radio-e1366887467823.jpg
||kjplus.net/wp-content/uploads/2013/05/avtomivka.jpg
||kjplus.net/wp-content/uploads/2013/06/brcheshma.jpg
||kjplus.net/wp-content/uploads/2013/06/rivacentrum.jpg
||klassa.bg/images/banners/
||knigi-igri.net/images/banners/
||kolegi.info/banner*
||komentari.com/images/banners
||kostelbg.net/home/images/ntechniks_banner_468x50.gif
||kostelbg.net/home/sites/default/files/images/Klimat77.png
krisfansait.ovo.bg/rtr
||kurier.bg/files/banners/
||kvasilev.com/images/srebro.swf
||learnfree.eu/wp-content/uploads/banners/
||lighting-bulgaria.com/images/background2013.jpg
||lighting-bulgaria.com/img/021213045350WAGO_266x60_CHRISTMAS.gif
||lighting-bulgaria.com/img/080813045154Beghelli_180x150.gif
||lighting-bulgaria.com/img/081013013425prisma_234x50-new.gif
||lighting-bulgaria.com/img/131113013442kovas.gif
||lighting-bulgaria.com/img/140113014907Amara_banner_234x50px.gif
||lighting-bulgaria.com/img/140613044302GoranoPic_234x50_LAST.gif
||lighting-bulgaria.com/img/180913043805Viva_4.gif
||lighting-bulgaria.com/img/18121302451858105_LB_Banner_Allg_165x60_GB.gif
||lighting-bulgaria.com/img/18121303473858105_LB_Banner_Allg_586x60_GB.gif
||lighting-bulgaria.com/img/220213041740LM-22-new2.gif
||lighting-bulgaria.com/img/260913084503anigif_234x100_bg_BBW.gif
||lik-bta.bg/images/banners/
||liternet.bg/image/baner/
||look-estates.com/userfiles/templates/default/static/images/banner
||lubamanolova.info/images/stories/food/baner*
||lucrat.net/*Banner*.swf
||lukovit-news.com/images/300x250adv*
||lukovit-news.com/images/reklama/
||lulinbay.hit.bg
||m4u-bg.com/banners/
||malki-obiavi.info/images1/banners
||malkiobyavi.com/banners/
||malkiobyavi.com/clients-5/avtosklad/block-avtosklad.jpg
||malkiobyavi.com/clients-5/spa-relax/block-spa-relax.jpg
||malkiobyavi.com/clients/lulchev-baner.jpg
||malkiobyavi.com/clients/nikoleni-block.jpg
||malkiobyavi.com/images/e-plovdiv.jpg
||mallbg.com/adds/
||mallbg.com/baneri
||managerteams.com/include/fan_mp3.swf
media.easyads.bg/ads/
media.easyonline.bg/ads/
media.exchange.bg/AdServer
media.exchange.bg/banners
media.karamel4e.com/media/banners/
||medicalbg.com/freenet
||megashop.bg/techno/images/banners
||megashop.bg/vaucher.swf
||mercedes-club-bg.com/images/banners/
||mikael7.com/files/banners/
||millionaire.bg/writeBanner.jsp
||mit.bg/baner*
||mit.bg/*banner
||mobile.bg/images/brands/
||mobile.bg/images/picturess/bazar_bazar.swf
||mobilebulgaria.com/uploads/banners/
||monitor.bg/ad/
||montana-dnes.com/baners/
||moreto.net/i/triumf330x72-1.png
||mostbg.com/most//Headers/..%5Cimages%5Cbanner_hp.gif
||mostbg.com/most/images/*banner.gif
||mostbg.com/most/images/mostadsl.gif
||mostbg.com/most/images/SPR_11_Animatd_Passthr_Family_420x130.swf
||mrejata.net/banner*
||mrejata.us/images/*468_60*
||music-bg.info/images/dodosphoto.gif
||music-bg.info/images/others/kozmu.gif
||music-bg.info/images/radio.gif
||muzi4ka.com/sponsor/
||muzichka.eu/baners
||muzichka.eu/style/banners/
||mvmads.com/admin/affiliate-banners/
||mvmads.com/publisher-show-ads.php
||mvmads.com/show-ads.php
my.affiliateforme.com/accounts/default1/banners/
||mymall.bg/products_action.php
||my-shop.biz/flash/
||nablyudatel.com/admin/banner/
||nani-na.biz/images/banners
||napravisam.bg/forum/neklama/
||napravisam.bg/neklama/
||narodnodelo.bg/*250x250*
||narodnodelo.bg/baners/
||naturalenergy.bg/banners/
||ndk.bg/ads/
||ndt1.com/bmw_prem_2012.swf
||ndt1.com/images/*
||ndt1.com/rk/*
||nenovinite.com/tpl/img/images/brand*
||nenovinite.com/tpl/img/images/gaming_sezon_nenovinite.gif
||neseriozno.com/wp-content/custom/Banners/
||nessebar-news.com/news/images/*baner
||newbusiness.bg/banners/
||news.idg.bg/images/blizoo/
||novini.bg/brand/
||obiavi-bg.com/img/BANNERS/
||obiavite.eu/banner/
||obiavite.eu/reklama/
||ok-booking.com/images/oklogo180.jpg
||online.bg/banners/
||online-televizia.net/images/banners/
||opencamp.talkweb.eu/468x60*
||opl.bg/images/banners/
||otzvuk.net/static/banners/
||ouim.org/upload/banners/
||pa-media.net/new/e107_images/banners/
||parfiumite.com/index.php?target=banner
||parfumibg.com/baner_left/
||parfumibg.eu/baner_left/
||pari.bg/bannercache
||parichka.com/banner*
||parlamentarniizbori.com/banners/
||pcmania.bg/banners/
||pcw.bg/main/images/banners/
p.energy-torrent.com/themes/Silver/images/bg.jpg
||perp.itforcebg.com/images/banners/
||petel.bg/js/jquery.colorbox-min.js
||petel.bg//media/banners/
||petel.bg/media/banners/
||photo-cult.com/pics/baneri/
||photo-forum.net/static/banner/
||picbg.net/center-banner.php
||picbg.net/up-banner.php
||pics.freeiz.com/baner
||pisnami.net/images/banners/
||pitam.info/baneri/
||plaza-mp3.info/images/bgtop2ke0.gif
||plovdiv24.com/banners.php
||plovdiv24.com/bans/
||plovdivnews.net/images/banners/
||plovdivnews.net/images/stories/mih*
||plovdiv-online.com/images/banners
||pluton1.123bg.com/images/banners/
||pmelon.com/res/aff/banners/
||podlupa.bg/UserFiles/Flash/baner/
||podtepeto.bg/uploaded/images/*240*
||podtepeto.bg/uploaded/images/*300*
||podtepeto.bg/uploaded/images/*728*
||podtepeto.com/reklama/
||pokerstars.com/*_bnrs/
||pokerstars.com/bnrs/
||pozvanete.bg/images/banners/
||pozvanete.bg/images/flashcontainers/b*
||praseta.com/files/banner
||praseta.com/img/prodavam.gif
||pr-bg.com/banners
||pr-bg.com/images/banners/
||predator-bg.com/smsrec/inc_hor_ad.php
||predpriemach.com/b/
||pressclub.bg/ads
||presstv.bg/images/listen.png
||presstv.bg/images/quiz/quiz-banner*
||presstv.bg/media/banners/
||preszona.com///img/BANNERS/
||prikachi.com/flash/files/
||prikachi.com/images/104/4069104F.jpg
||prikachi.com/images/174/2371174o.png
||prikachi.com/images/678/4003678R.gif
||prikachi.com/images/981/4285981a.jpg
||pro-dance.org/e107_images/banners/
||pro-dance.org/news/728x90banner.html
||proekti.bg/adv/
||programata.bg/img/zagorka*.jpg
||pro-rock.net/images/flashframes/
||psychocenter.hit.bg/banners/
||publikuvai.com/images/banners/
||qualityoils.eu/baner2
||radiotangra.com/media/banners/
||razdavalnik.bg/banners/
||razkritia.com/wp-content/uploads/2013/12/*960x90*
||razkritia.com/wp-content/uploads/banner*
r.dir.bg
r*.dir.bg/js_ext.php
r*.dir.bg/js_myads.php
||readbud.com/images/*banner
||recepty.bg/fbanners/
||recepty.bg/flashbanners/
||rechnik-bg.com/images/*.swf
||refreshbg.com/refreshbg*.swf
||reklamnamreja.com/click.php?id=
rem.rezonmedia.eu/images/
||renault-bg.com/smf/bn/
||renault-bg.com/smf/bnn
||reporterbg.com/Kiwi-banner360x184.swf
||reset.bg/images/banners/
||retv.bg/loader/loader.swf
||rezervaciq.com/img/banners
||rodopinews.com/images/banners/
||rp-mobil.com/images/b/
||ruseinfo.net/adv/
||samokov365.com/images/banners/
||samokov365.com/templates/shaper_news_iii/bg.jpg
||sandanski1.com/news/data/upimages/Ads/
||sasho.data.bg/
||search.data.bg/*banner
||sedmica.sliven.net/img/160x200*
||sedmica.sliven.net/img/170x120*
||sedmica.sliven.net/img/180x45*
||sedmica.sliven.net/img/anhialo.jpg
||sedmica.sliven.net/img/boliarka.jpg
||sedmica.sliven.net/img/creditlend.gif
||sedmica.sliven.net/img/encho_karakashev.jpg
||sedmica.sliven.net/img/evgeni.jpg
||segabg.com/a/
||senzacia.net/wp-content/uploads/2012/02/biokod4.jpg
||senzacia.net/wp-content/uploads/2012/02/estetika21.jpg
||setcom.bg/dv/
||sextv.kikosex.com/reklama/
||sexwell.bg/maneri/
||shops.bg/banners/
||shops.bg/newimage/zaigravka.gif
||shum.bg/ads/
||silabg.com/i/branding/
||silabg.com/i/iphone/
||silabg.com/i/left_natrol.jpg
||silabg.com/i/MRI_PROLAB_bg.jpg
||silabg.com/i/revita-wallpaper-FM-left_silabg.jpg
||silabg.com/i/Shenmin_Nuhair*
||silabg.com/i/SmartShake*
||simonovi-bgshop.com/banners/
||sinoptik.bg/i/*btc*.gif
||skandalno.net/wp-content/themes/WpAdvNewspaper/baneri/
||skandalno.net/wp-content/uploads/2011/03/*250x250*
||skandalno.net/wp-content/uploads/baneri/
||skandalno.net/wp-content/uploads/n/efekt%202.png
||skandalno.net/wp-content/uploads/n/estetika.png
||sliven.biz/baner*
||sliven.biz/source/reklama.jpg
||sliveninfo.com/files/demea.jpg
||sliveninfo.com/images/banners
||sliveninfo.com/imagesflash
||sliveninfo.com/images/novi%20baneri
||sliveninfo.com/images/snimki/banners/
||sliveninfo.com/images/snimki/img/anabel_klima.jpg
||sliveninfo.com/images/snimki/img/tam-new-last.gif
||sliveninfo.com/images/snimki/new/banner*
||sliven.net/adv/
||sliven-news.com/images/stories/slujebni/
||slivenpress.bg/images/banners/
||sliven.us/images/stories/baneri*
||snews.bg/img/banners/
||sofiadnes.com/banners/
||sofiadnes.com/user_files/1295601617_1295122946_1289545502_nikol.swf
||sofiadnes.com/user_files/1301551727_1269872813_movie1.swf
||sofiadnes.com/user_files/1312444469_legrano-300-250-3.swf
||sofiatraffic.info/banner*
||sofiatraffic.info/jazz_sofia.swf
||sofremonti.com/theme/banners/
||sofspravka.info/index.php?go=_common&p=banner
||southwest-business.com/images/banners/
||spearfish.org/pic/b/
||speshno.info/banners/
||spesti.bg/images/ban*
||spesti.bg/images/bnr*
||sportal.bg/brand_images/
||sport-vt.com/static/vtu-horizontalen2.swf
||starfm.bg/banners/
||stariyat-bryast.sliven.net/banners/
||startup-bg.com/images/baner
static01.podtepeto.bg/uploaded/images/myk.gif
static01.podtepeto.bg/uploaded/images/sinji.jpg
static01.podtepeto.bg/uploaded/images/xraydiobanner.swf
static.bgnes.com:8080/img/bann/
static.cs-bg.net/csbgnet/images/adcsbg/banners/
static.easytrader.bg/v2/banners/
static.sport-vt.com/dsk_cba_392x72nl.swf
static.sport-vt.com/hattrick/hattrick-logo.jpg
static.sport-vt.com/kick-sportvt.swf
static.sport-vt.com/obsht_sportvt.swf
static.vib.bg/promo/
||stilmont.com/images/670x90*
storage.netinfo.bg/Banners/
||store.bg/ads/
store.picbg.net/pubpic/8A/1A/94fba2ae89238a1a.gif
store.picbg.net/pubpic/CF/48/ef875e85639acf48.jpg
store.picbg.net/pubpic/D3/75/16a587896593d375.PNG
store.picbg.net/pubpic/F0/56/c0f0a9066decf056.gif
||studiolight-bg.com/_tmp/Banner.gif
||subsbay.com/banner*
subs.sab.bz/images/BANER.jpg
subs.sab.bz/images/lev_ok.gif
subs.sab.bz/images/reset.swf
||subsunacs.net/tvds*
||syndication.webwizguide.info/pagead/
t.alein.org/images/banners/
||technomarket.bg/userfiles/files/banner*
||technooptima.com/catalog/images/banners/
||techshop.bg/adds/
||temanews.com/img/banners/
||teniski.be/*468x60.
||teniski.be/images/shops*
||teniski.be/pix/
test.idg.bg/st/ads/
||therating.net/themes/kosmos/images/banners/
||the-street.hit.bg/banners
||timesbg.com/ban2/
||topbg.org/banners
||top-guns.info/images/banners/
torrent.alein.org/images/doggydoggy_633.jpg
torrent.alein.org/images/doggydoggy_634.jpg
torrent.alein.org/images/system/evowow_new_img.gif
torrent.alein.org/images/system/gorna_img.jpg
torrent.alein.org/images/system/help_ani.gif
torrent.alein.org/images/system/itnet_img_h.png
torrent.alein.org/images/system/moreimg_img_top.png
torrent.alein.org/images/system/place_for_you.png
torrent.alein.org/images/system/wotlk_new_img.png
||tribali.info/user_pic/flash/MegaSOD_3.swf
||trud.bg/BannerRotate.asp
||trud.bg/media/banners/
||tvevropa.com/public/images/site_images/*banner
||tvevropa.com/public/images/temp/banners/
||tw10.net/ban
||unisoft-bg.com/showimage.php
||uroci.net/images/export/baners
||vali.bg/images/flash/*165x300.swf
||varna-bulgaria.info/wp-content/uploads/2013/06/kayak_trip_Varna.jpg
||varna-sport.com/a-d-s/
||vbox7.com/adwise/
||vbox.bg/banners/
||vbox.bg/htdocs/images/default/728x90
||veliko-tarnovo.net/static/aleks-ok.jpg
||versia.bg/images/flash/
||vevesti.com/images/banners/
||vinpromtaskov.com/banner
||vipoferta.bg/aBans/
||vipoferta.bg/banners/
||vipoferta.bg/elitBGaff/
||visitbulgaria.net/rotbnr_visit/
||vivacom.bg/Content/flash/threeDLG/Right200x500.swf
||vivacom.bg/Content/flash/threeDLG/TransitionBigV2.swf
||vivacom.bg/Content/flash/VivaBooksFoterW2000px_115px_to450pxH.swf
||v-maps.com/banner.jpg
||vnews.bg/wp-content/themes/vnews/images/banner*
||vnews.bg/wp-content/themes/vnews/images/finalflat2.jpg
||vnews.bg/wp-content/themes/vnews/images/vik-varna-banner.jpg
||void.clip4e.com/banners/
||vps-hostingbg.com/images/banners/
||vratza.com/banners/
||vtv.bg/images/logos/stm.jpg
||vtv.bg/images/zok.swf
||webcambg.com/reklama/
||webdesign-bulgaria.com/images/banners
||web.dobg.net/banners/
||webground.bg/news/vlez.php
||web-hosting.bg/swf/
webmoney.borsa.bg/BannerFactory.php5
||websbg.net/images/banners/
||winner.bg/arena.php
||wisdom.bg/adv/
||wzemi.com/kemper-club/reklama/
||yambolnews.net/images/banners/
||yes.bg/ads/
||zadoma.com/res/standard/img/baneri
||zajenata.bg/img/brand/*
||zamunda-bg.org/banner/
||zamunda-bg.org/upleft.php
||zamunda-bg.org/upright.php
||zarta.org/banners/
||zavedenia.com/bannerapp/
||zavedenia.com/banners_box/
||zavedenia.com/_images/background*
||zdrave.net/document/banner/
||zepir.com/storage/banners/
||znam.li/ad/
!
!--- Specific element hiding rules ---!
18-sexshop.com##.banner728_90
24chasa.bg##A[href*="mediamall.bg"]
24chasa.bg###ArticleLinkMediaMall
24chasa.bg##SPAN[style="text-decoration: underline;"]
4bg.info##DIV[style^="width:728px; height:90px;"]
911.bg##.vip-firms
absurdi.com##div[style="padding: 0 0 5px 0;"]
absurdi.com##.right_banner
abv.bg###aukcion
abv.bg##iframe[src="/app/j/banner.jsp"]
advokatibg.eu##.mod_bannerslider
afera.bg##div[align="center"]
aha.bg##.adv-slide-block-wrapper.clearfix
alo.bg###adv_zone_24
alo.bg###adv_zone_26
alo.bg###adv_zone_top
animes-bg.com##.banneritem_text
antenneair.com###topbanner
apteka.framar.bg###adr_bot_240
apteka.framar.bg###wallpaper_half_l
apteka.framar.bg###wallpaper_half_r
apteka-optima.com##.phAddsText
arenabg.com##.ads
arenabg.com##.ads_left
arenabg.com###banner_11
arenabg.com###banner_2
arenabg.com###banner_4
arenabg.com###banner_5
arenabg.com###banner_7
arenabg.com##IFRAME[src*="/banner/"]
arenabg.com##IFRAME[src*="/banner/"]
arenabg.com##IFRAME[src*="banner.htm"]
as.adwise.bg###adwbanner300x250
as.adwise.bg##.adwiseBlock
avatar-bg.org##.aff_banner_728
avtoalarmi.produkti.sofia.point.bg###popupEmail-panel
balkanec.bg##.banner_new
bg69.com###lenta
bg-gledai.tv###kayan_reklam_sol
bg-gledai.tv##.widebanner
bg-mamma.com##.small-horoscopes2.clearfix
bgonair.bg###banner_a0_1
bgonair.bg###banner_a0_2
bgrabotodatel.com##.RAD
bgrabotodatel.com##td[style="padding-bottom: 6px;"]
bgrazpisanie.com##.sublineSearchBuffer-banner
bgsimsonimz.forumotion.net###login_popup
bg.static.etargetnet.com##.etarget
bg-tv.net###topbar
bg-zone.net##.adv_box_kv_left
bg-zone.net##.adv_box_kv_right
bivol.bg###sbox-overlay
bivol.bg###sbox-window
blitz.bg##.banner
bourgas.org###bannerTop
bukvi.bg##MARQUEE
bulforums.com##DIV[style="height:100px !important; overflow:hidden; background:#8cc051 url(http://www.bulforums.com/source/public_html/images/bforums.jpg) no-repeat top left;"]
bulgarianbasket.com##tr[id="top"]
burgasinfo.com##.right_banner.load-banner
business.bg##table[width="220"][bgcolor="#ffffff"]
cat.arenabg.com##iframe
ciela.net##.ads_big_block
ciela.net##.ads_small_block
cinemabg.net###topbar
cio.bg##.blockBanner
club-bg.org###topbar
conquiztador.bg###BANNER
conquiztador.bg##td[style="border:1px solid #555555; width:340px; height:280px;"]
conquiztador.bg##td[valign="middle"][align="center"][style="border: 1px solid rgb(85, 85, 85); width: 340px; height: 280px;"]
crimes.bg###bplay
crimes.bg##.custom-ad
crimes.bg###ips-ad
crimes.bg###setech
crimes.bg###single_ad
crimes.bg###your-ad
cross.bg##.bannerWraper
dariknews.bg###colorbox
data.bg###bannertop_72890
data-bg.org###aff-popup-banner
data-bg.org###topbar
data.bg###red
diukian4e.gigerstudio.info###topbar
dnesplus.bg##.bannerwrapper-200x200
dnesplus.bg##.bannerwrapper-250x250
dnesplus.bg##.bannerwrapper-728x90
dnevnik.bg##.paidAdvert
dnevnik.mk###kae_unique_id_0_parent_div
dnevnik.mk###kae_unique_id_1_parent_div
download.bg##.adv
econ.bg##.adv
etapgroup.com##.banner
etapgroup.com##.banners
etapgroup.com##DIV[style="margin: 0px auto; min-height: 450px; width: 100%; padding-top: 500px; background-image: url('images/interface/kom_branding.png'); background-repeat: no-repeat; background-position: top center;"]
expert.bg##iframe[style="border: medium none ; margin: 0pt; padding: 0pt; overflow: hidden; width: 300px; height: 250px; border-collapse: collapse;"]
film4eta.com###topbar
filmi-bg.eu###broadcastbox
flash-igri.com##.box-pink
forum.arenabg.com##.sp_block_padding.windowbg
forum.eshop.bg##.copyright
forums.data.bg###bannertop_new
framar.bg###facebox_games_mess
frognews.bg##div[style="padding-bottom:15px;"]
gbg.bg###hotOffBg
gledaigo.com###fanback
gong.bg##.adwise
gorgonbg.org##table[id="Table_06"]
hardwarebg.com##TABLE[style="border: 1px solid #000000; margin: 0; padding: 0;"]
hi7s.com###bgtp
homes.bg##DIV[style="position:absolute;width:120px;right:-120px;"]
homes.bg##DIV[style="position:absolute; width:130px;left:-130px;height:900px;"]
hyundai-bg.com###reclama
kaminata.net##.poop2
kartelito.com###topbar
kaspyr.com###topbar
kik-info.com###banner2
kjplus.net##.sidebar
krisfansait.ovo.bg###banner
krisfansait.ovo.bg###topbar
##.lapni-pop-over
lesno-fakturirane.com##td[class="left_fon"]
lex.bg##.banner468_60
lex.bg##DIV[style="margin: auto; background-color: transparent; border-width: 0px; width: 300px; height: 250px;"]
lifehacker.bg###header_banner
lifestyle.ibox.bg###divbh1.lfs-top-banner-holder
managerteams.com###footer_inner_wrapper
media.easyads.bg##.easy_ads_main
moreto.net##DIV[style="width: 462px; padding:3px; margin: 10px 0px 0px 0px; min-height: 60px; border: #dddddd solid 1px;"]
moreto.net##DIV[style="width: 466px; height:58px; overflow:hidden; border: #dddddd solid 1px;"]
mp3-muzika.eu###topbar
mtel.bg##div[id^="banner_"]
mtel.bg###splashFlash
music-bg.info##.menubrdreklama
music-bg.info###showimage
muzichka.eu###showimage
muzichka.eu##.smsbaner
myonvideo.com###topbar
nakino.eu###WPS_popup_message
nenovinite.com##.banner1
newshub.bg###banner-top
news.ibox.bg###GoogleAdSense
news.ibox.bg##.nws-commercial-column
novini.bg##.line_banner
obshtestveni-porachki.com##.animationbtns
opl.bg###top
pari.bg##.bannerbox
pari-ot-internet-bg.com###login_popup_content
pari-ot-internet-bg.com##.module.borderwrap
petel.bg###banner_right_bottom
petel.bg###banner_right_middle
petel.bg###banner_right_top
petel.bg###banner_top
photo-forum.net###banner_top
photo-forum.net###header_img_right
plaza-mp3.info###topbar
plovdiv24.bg###flygrabo
plovdiv24.bg###flyoffer_text
podtepeto.com##.adv-728-90.adv-block
podtepeto.com###advert_5
praseta.com##.right_banner
pressboard.info##.banner
prikachi.com###banner
prodavalnik.com##.banner.productpage-top
programata.bg###banner_right
programata.bg###banner_top
recepti.gotvach.bg###pop
recepty.bg###banner
recepty.bg##DIV[style="width:670px; height:120px; left:0px; right:0px; margin-bottom:20px"]
recepty.bg###flash_big
remix.bg###banner_show
rodopinews.com###wdBanners
samokov365.com###tcvn-banner-slider215
samokov365.com###topbar
sedmica.sliven.net###right
segabg.com###advert_id
sensebox.net##.bannerup
serialmaniq.com###\5f _dimScreen
serialmaniq.com###advm_preload
serialmaniq.com###advm_preload
serialmaniq.com##.banner1
serialmaniq.com###pop_up_s
serialmaniq.com###topbar
sfilmi.com##.popup
silabg.com###left_banner_img
silabg.com###right_banner
sinoptik.bg##.astralBlock
sinoptik.bg##.ecoHomeWeber
skandalno.net###navpages
sliveninfo.com###lefttopbanner
sliveninfo.com###righttopbanner
sliven-news.com###banner_wrap
sliven-news.com##.users_wrap
snews.bg##IFRAME[src^="http://promograd.bg/affiliate/"]
spesti.bg##.adv
stuntteamhazart.com##.clip
submatrixs.ovo.bg###banner
subsmania.info##.blogname
subs.sab.bz###adv
svejo.net###hot_offers
ticketpro.bg###baners_top
topsport.ibox.bg##.banner
topsport.ibox.bg##.sponsor-logo
topsport.ibox.bg##.ts-header-banner
trud.bg##A[href*="mediamall.bg"]
try.bg##.g300x600single
tv7.bg###NOTJ
tv.byalareka.com###topbar
vbox7.com###headerLineBgr
vesti.bg##.adwise-right
vesti.bg###banner1
vesti.bg##.hot-offers-block
vesti.bg###topBannerBlock
vnews.bg##.banner
vplay7.com###topbar
websbg.net###dinabar
zajenata.bg###brand
zajenata.bg###trendo_branding
zamunda-bg.org###topbar
zavedenia.com###bottomBanner
zavedenia.com##.zbranding_left2
zoomania.org###widget_A
zovnews.com##.banner_col
zovnews.com##.banner_top
!
!--- Whitelist rules ---!
@@||adnxs.com^$domain=bg-gledai.tv
@@://ads.$domain=bg-gledai.tv
@@ads.ibox.bg/all_ins.php
@@ads.ibox.bg/crossdomain.xml
@@||conquiztador.bg/client_pre_frame.php
@@||contextweb.com^$domain=bg-gledai.tv
@@||emediate.se/crossdomain.xml
@@||emediate.se/eas$match-case,domain=play.novatv.bg
@@||ndt1.com/images/articles/*
~noshtuvki.burkan.info###adbody
@@obiavi.data.bg/styles/ads.css
@@||olx.bg/ajax/ad/offer/
@@||olx.bg/ajax/ad/togglefollow/
~olx.bg###newAd
@@||pozvanete.bg/images/ads/
@@||prodavalnik.com/ajax/ad/offer/
@@||prodavalnik.com/ajax/ad/togglefollow/
~prodavalnik.com###newAd
~rbb.bg###Ads
@@||serialmaniq.com
@@||sportal.bg/uploads/video_advertising/
@@||subsmania.info

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,752 @@
[Adblock Plus 1.1]
! Checksum: ecWsM4gKewcyxyH2B9HQyw
! Title: Fanboy's Enhanced Tracking List
! Updated: 15 Jun 2014
! This list expires after 2 days
! License: http://creativecommons.org/licenses/by/3.0/
! Email: fanboyadblock@googlegroups.com
! Homepage: http://www.fanboy.co.nz/
! Forums: http://forums.fanboy.co.nz/
!
&referer=$script,image
-coremetrics-
-CoreMetrics.
-elqImg.
-omniture-
-omniture.js
-OmnitureSWF.
-s_code.
-sitecatalyst.
-webtrends-
-Webtrends.
-webtrends_
.cmdatatagutils.
.com/ga.js
.com/mt.js
.eluminate.
.hbx.js?
.omniture.
.omniture_
.php?referer=
.slimsurveys.
.s_code.js
.s_code_
.siteCatalyst.
.siteCatalystTL.
.Webtrends.js
/_omniture/*
/_tl_track.js
/abpTest/*
/akqa.tracking.
/analytics.sitecatalyst.
/analytics/mbox_
/at.js.php|
/atm_code.js
/audiencemeasurement.
/bidiqCookieDropper.
/boomerang-0*.js
/catalyst.js
/cllc.tracking.js
/cm_controldata.
/cmdatagutils.
/cmdatatagutils.
/cmdatatagutils_
/cmEluminate.
/cmtaggingservices.
/coremetrics-
/coremetrics.
/coremetrics/*
/CoreMetricsSupportLib/*
/CoreMetricsTracking.
/customOmnitureData.js
/dcs.gif?
/dcs_head.js
/dcs_tag.js
/dcs_tag1.js
/dcs_tag2.js
/dcs_tag_
/dcstag_
/ecomfw.min.js
/elq_tracking-
/elqCfg.
/elqCPers.
/elqFCS.
/elqImg.
/elqNow/*
/eluminate.
/eluminate?
/eluminate_
/foresee-
/foresee/*
/foreseeforesee-
/forsee-
/foxomniture.swf
/FoxOmnitureMonitor.
/gaManager.js
/gamepageomniture.
/gannettomniture.swf
/gapro-1.swf
/gatag_v2.
/global_analytics.
/global_tracking.js
/gs-analytics.
/cookie-id.js?
/h-code-
/h-code.js
/h_code.
/h_code_
/hbx-load.html
/hbx.js
/hbx/hbx_
/hbx2.js
/hbx_custom.
/hbx_page_code_
/hbxfunctions.js
/hbxmedia.
/hbxmodify.
/hbxscript.
/hbxvariables.
/hitbox/hbx_
/includes/s_code
/iv_nv_footer.
/iv_nv_header.
/javascript/hbx_
/javascript/tracking.js
/javascript/webtrends
/js/analytics/*
/js/catalyst_ru.js
/js/hbx-
/js/hbx_*.js
/js/mbox-
/js/mbox_
/js/omn/*
/js/omni_
/js/tracking.js
/kenshoo.js
/lib/boomerang/*$script
/llbmetrics.
/loadingpageomniture.
/logomnitureevent.js
/mbox-*.js$script
/mbox.01.
/mbox.20.
/mbox.js
/mbox.orig.js
/mbox39.
/mbox_09.
/mbox_rc.
/mbox_v1_
/metricspar_
/NBCUComScore.
/NBCUOmnitureTracking.
/omn_global_
/omni_config.
/omni_footer_
/omni_functions.js
/omni_mdt.js
/omni_mediatrack_
/omniHelper.
/omniSearch_
/omnitrack.js
/omnitracking.
/omniture-
/omniture.
/omniture/*
/omniture2.
/omniture?
/omniture_
/omnitureactionsource.
/omnitureAnalyticsImpl.
/OmnitureAppMeasurementExtension.
/omnitureBase.
/omniturebodyhcode.
/omnitureCode.
/omnitureCompat.
/omnitureConfig.
/omnitureconfig/*
/omniturecore.js
/omnitureEvents.
/omnitureEventSink.
/omnitureFix.
/OmnitureHandler.
/OmnitureHelper.
/OmnitureJavascriptHandler.
/OmnitureJS.
/omniturejs/*
/OmnitureLibrary.
/omnituremedia.swf
/OmniturePageCode.
/omniturePlugin.
/omniturePlugin_
/omniturerefresh.
/OmnitureScript.
/omnitureService.
/OmnitureSWF-
/OmnitureTrackerAS3.
/omnituretracking/*
/omnituretrackingjs/*
/omnitureZoneTracker.
/omniunih_
/OmniUserObjAndHelper.
/omtr_code.
/omtr_code_
/omtr_tc.js
/ote/ote.js
/ote/ste.js
/pageLevelOmniture.
/ParseOmniture.
/PluginEndPlayOmniture_
/pubsys.js
/reporting.do?
/s-code-
/s-code.js
/s2_code.
/s_am_code.
/s_code-
/s_code.
/s_code/*
/s_code1.
/s_code2.
/s_code3.
/s_code_
/s_codefullsol.
/s_codeFULLTTO.
/s_codeH.
/s_codeMaps.
/s_codeV2.
/s_config_
/s_crainsc.js
/s_dr_code_
/s_h_code.
/s_i_code.
/s_local_customization.
/s_nd_code.js
/s_nd_code_
/s_one_code.
/s_prod_code.
/s_remote_code.
/s_remote_code_
/s_site_catalyst.
/s_tan_code.
/s_wpn_code.
/sc_code_
/scode-
/scode.js
/scode_
/scripts/hbx_
/scripts/mbox.
/sctl.js?
/sdc.js
/sdc_include_
/sdcTrackingCode.
/shc_code.js
/sikomniture_
/site-catalyst.
/site_catalyst.
/site_catalyst/*
/site_catalyst_
/site_specific_code.
/sitebrand-$script
/sitecatalyst-http-
/sitecatalyst.
/sitecatalyst/*
/sitecatalyst_
/SiteCatalystAnalytics.
/SiteCatalystCode_
/SiteCatalystEventListener.
/sitecatalystfooter.
/sitecatalysth.js
/SiteCatalystH243.
/SiteCatalystInclude.
/sitecatalystlib.js
/siteClarity/*
/sitewise_cms.
/smart_source_*/dcs_$script
/somni.js
/sonyOmnitureTracker.
/tagging-akqa.
/tan_code.js
/thcn_code.js
/thcn_code_
/touch-clarity.
/TouchClarity.
/touchclarity/*
/tracking/hbx-
/urchin.js
/urchin_util.
/v60.js
/vs_code.js
/wa_code.
/wa_process.js
/wanalytics-
/web_trends_
/webtrack_tag_
/webtrends-
/webtrends.
/webtrends/*$script
/webtrends1.
/webtrends2.
/webtrends3.
/webtrends75_
/webtrends8_
/webtrends_
/webtrendsAP_
/webtrendsasync.
/webtrendsasyncloader.
/webtrendsdt.
/webtrendsExt.
/WebTrendsJS/*
/WebtrendsPlugin.
/WebTrendsRedirector.
/webtrendsTag.
/webtrendsTrack.
/webtrendsUS.
/WidgetOmniture.
/wmgbeaconcode.
/wmps_tracker.
/wt-tag.
/wt_capi.js
/wt_capi_
/wt_plugins.
/wt_tag.js
/wt_tracking.
/wtbase.
/wtbase.js
/wtbase2.js
/wtbrand.js
/wtcollect.
/wtCore.js
/WTdcsCollect.js
/WTFarmersSite.js
/wtfindingmethod.
/wtid.js
/wtrack/?
/wx-metrics.js
=s_code.js
=s_code_
=webtrends.
?referer*http=
?referrer*http=
_chl_code.
_CoreMetrics/
_hbx_ad_refresh
_hbx_proxy.
_hcode.js
_hightraffic_code.js
_omnireport.
_omniture.$~object-subrequest
_Omniture_
_omnitureVarsComm.
_s-code.
_s_code-
_s_code.
_s_code_
_s_remote_code.
_scode.js
_sdc.js
_sdcTrackingCode.
_SiteCatalyst.
_sitecatalyst_
_urchin.js
_WebTrends.js
_webtrends/
_webtrends_
_wtBase.js
_wtbaseV2.
_wtInit.js
!
! ---------- Cookie/Subscription Checking ------
!
||ppjol.net^$third-party
||newsmemory.com^$third-party
||tinypass.com^$third-party
jsonline.com##.blockPage
jsonline.com##.blockOverlay
!
! ---------- Personal Filters ------
!
arstechnica.com##a[href="/subscriptions/"]
fark.com##.top_right_container
drugs.com##div[style="left: 0px; position: fixed; top: auto; bottom: 48px;"]
wolframalpha.com###subpod_zoom
wolframalpha.com###headerad-pro
wolframalpha.com###sidebar
||thepiratebay.se^$script
@@||thepiratebay.se^*/tpb.js
@@||thepiratebay.se^*/details.js
@@||thepiratebay.se^*/effects.js
@@||thepiratebay.se^*/prototype.js
@@||thepiratebay.se^*/scriptaculous.js
!
! ---------- 1st party blocking rules ----------
!
||53.com/resources/js/wt.js
||aarp.net/etc/aarp/statics/global/js/mbox.
||akamai.net/*/includes/iv_footer.js
||akamai.net/*/includes/iv_header.js
||akamai.net/cache.lego.com/Stats/
||bankofamerica.com/www/global/js/tc_logging.js
||bjs.com^*_landing.js
||bosch.com/WTg/WTg.js
||bt.com/media/js/SiteCatalyst-
||burberry.com^*/webtrendsMC.js
||callawaygolf.com/Scripts/s_remote_code_
||carpartswholesale.com/includes/cpw_s_code*.js
||cbc.ca/g/stats/linktracker.js
||cbc.ca/includes/stats/hbx_
||ccom-cdn.com/assets/js/ga.js
||cdc.gov/JScript/metrics/
||chevron.com/js/chevron_ga.js
||cknw.com^*/s_cknwam_code.js
||cleartrip.com/javascripts/ga.*.js
||dialog.com/js/wt.js
||ehow.com/px.gif
||olark.com/nrpc/*=pollevents
||epson.com/2005redesign/ww_ga.js
||expedia.com^*/tracking.js?
||firstdirect.com/*/scripts/optimise.js
||foodandwine.com/javascripts/_fw_track.js
||force.com/resource/*/js_hitcount
||force.com/resource/*/js_omniture
||fujitsu.com/inc/wt.js
||goo.gl/*?a=$image,domain=9gag.com
||google.*/url?sa=T&source=web&cd=$image
||google.com/jsremotelog?
||google.com/sierralogout?
||govt.nz/ga.js
||hollywood.com/toolbar_reporting.js
||timeinc.net/shared/static/swf/ComScoreEWCom.swf
||images-amazon.com^*/js/mbox.
||lasikplus.com/scripts/s_code
||lendingclub.com^*/home_mbox_
||libertymutual.com^*/analytics/SC_Code.js
||mail.google.com/mail/rc/?$image
||mail.google.com/mail/u/0/images/c.gif
||gizmodo.com/api/*/annotations
||manta-r1.com^*/js::omniture_s_code
||msecnd.net^*/dcs-red-tag3-
||mtv.ca/scripts/globalpagetrackingalternate.js
||mulberry.com/includes/tracking.js
||nationaljournal.com/js/omniture
||nationwide.com/aq-static/scripts/js/nw_wt_fpc.js
||neopets.com/js/ga.js
||nissanusa.com/js/crm/page_tags/*.js
||nokia.co.in^*/nokia_popup_script_in.js
||nyc.gov/html/misc/scripts/nycwebtrends.js
||onlineshoes.com^*/s_ols_code.
||oodle.com/jaml/reporting/
||player.foxfdm.com^*/FoxComscorePlugIn.swf$domain=fox.com|fxnetworks.com
||randomhouse.com/js/resxclsa35.js
||reuters.com/pulse/2/trb.js
||rogersdigitalmedia.com/libs/analytics/RDMOmniture.swf
||schwab.com^*filename=hbx.js
||seatguru.com^*/sg-tracking.js
||servingyourtown.com/js/metrics.js
||shoes.com/scripts/bvreporting.js
||shoplocal.com/*/scripts/tracking.js
||slimg.com/js/AWD/Tracking.nano.js
||thomasnet.com/javascript/dcs_
||travelpn.com/js/WRc6.js
||treehousetv.com/Scripts/urloverride.js
||ukbride.co.uk/js/frontend/tracker.js
||webassetsb.scea.com/pscomauth/groups/*/ps_mbox_js.js$domain=playstation.com
||webroot.com/js/om_sc.js
||wsj.net/javascript/*/Tracking.js
!
! ---------- 3rd party blocking rules ----------
!
||cloudharmony.net^$third-party
||google-analytics.com^$third-party
||google.co.il/cse/$third-party,~stylesheet
||google.co.uk/cse/$third-party,~stylesheet
||ubertags.com^$third-party
||google.com/coop/cse/$third-party,~stylesheet
||google.com/cse/$third-party,~stylesheet
||adobedtm.com^$third-party
||consent-st.truste.com^$third-party
||privacy-policy.truste.com^$third-party
||preferences.truste.com^$third-party
||googletagmanager.com/gtm.js$third-party
||ooyala.com/3rdparty/visible_measures_
||salecycle.com^$third-party
||services.disqus.com/event.js?$third-party
||syncaccess.net^$third-party
!
!
!--------- Unsorted Rules --------
!
||bit.ly/stats?
||checkstat.nl^$third-party
||counter27.ch^$third-party
||freestat.hu^$third-party
||midphase.com^*/img.pl?$third-party
||mystats.nl^$third-party
||ohnorobot.com/verify.pl?$third-party
||ovnet.fr^$third-party
||pakranks.com^$third-party
||predicta.com.br^$third-party
||site-id.nl^$third-party
||statsbox.nl^$third-party
||statsector.hu^$third-party
||stealth.nl^$third-party
||tracknet.twyn.com^
||traffic4u.nl^$third-party
||webcount.finn.no^
!
!---------- French Trackers ----------
!
/hit.xiti?
||be2.com/tracker;
||beead.fr^$third-party
||clickintext.net^$third-party
||countus.fr^$third-party
||emailretargeting.com^
||geocompteur.com^
||ip-label.net/Data/coll.aspx?$third-party
||p.pagesjaunes.fr^
||performances.bestofmedia.com^
||stats.stats.fr^
||tracking.bestofmicro.com^
||tracking.infos-du-net.com^
||tracking.presence-pc.com^
||tracking.tomsguide.fr^
||veoxa.com^
||wysistat.com^
!
!---------- Dutch Trackers ------------
!
||letsstat.nl^$third-party
!
!---------- Taiwan Trackers ------------
!
||hotrank.com.tw^$third-party
!
!---------- German Trackers ------------
!
.de/log/?
.de/pstat/
.de/stat/
.de/track/
.tv/tracking?
||betarget.de^$third-party
||chart.dk^$third-party
||checkeffect.at^$third-party
||countercity.de^$third-party
||countercity.net^$third-party
||counterlevel.de^$third-party
||easyranking.de^$third-party
||econda-monitor.de^$third-party
||etracker.de^$third-party
||generaltracking.de^$third-party
||hitcount.de^$third-party
||hitmaster.de^$third-party
||hitpage.de^$third-party
||ipstats.de^$third-party
||met.vgwort.de/na/
||microcounter.de^$third-party
||perlentaucher.de/cgi-bin/blanky?
||ranking-hits.de^$third-party
||ranktraffic.de^$third-party
||rapidstats.de^$third-party
||sedotracker.de^$third-party
||serverkompetenz.net/cpx.php?$third-party
||trafficcenter.de^$third-party
||trk.newtention.net^
||yoochoose.net^$third-party
!
!---------- Danish Trackers ------------
!
||agillic.eu^$third-party
||netminers.dk^$third-party
!
! ---------- Whitelisting rules ----------
!
@@/coremetrics.js$domain=potterybarn.com|potterybarnkids.com|westelm.com|williams-sonoma.com|odcdn.com
@@/mbox.js$domain=dominos.com|aol.com|hrblock.com|live.com|movieweb.com|rd.com|skypeassets.com|superpages.com|wdpromedia.com
@@/omniture.js$domain=mlb.com|newyorker.com|ae.com|couponcabin.com|corbisimages.com|delvenetworks.com|shop.puma.com|gq.com|healthgrades.com|pogo.com|nfl.com|slacker.com|teenvogue.com|veer.com
@@/ots_omniture_code.js
@@/s_code.js$domain=bodybuilding.com|cbc.ca|simyo.de|nbc.com|abcnews.go.com|abc.go.com|aetv.com|afl.com.au|americanexpress.com|disneyinternational.com|anz.com|app.qz.com|blackberry.com|boostmobile.com|canon.com.au|caranddriver.com|nba.com|cfnews13.com|cinemax.com|countryliving.com|dhgate.com|diy.com|eonline.com|esquire.com|fandango.com|filemaker.com|filmmagic.com|goodhousekeeping.com|hasbro.com|homedepot.com|lg.com|landsend.com|laptopmag.com|shop.puma.com|beatsbydre.com|macworld.com|madcatz.com|marieclaire.com|msacademicverify.com|marthastewart.com|marthastewartweddings.com|nbcdfw.com|nbclosangeles.com|nbcmiami.com|networkworld.com|news12.com|nike.com|olivegarden.com|online.citibank.com|oreillyauto.com|pcworld.com|randomhouse.com|redbookmag.com|rolandgarros.com|samsung.com|stamfordadvocate.com|staples.com|starz.com|move.com|192.com|style.com|symantec.com|techhive.com|nflcdn.com|overstock.com|sho.com|teenvogue.com|telecom.co.nz|theglobeandmail.com|theweathernetwork.com|vendaria.com|verizonwireless.com|wdpromedia.com|wholeliving.com|wireimage.com|workingmother.com|yellow.co.nz|yellowpages.com.au
@@/s_code_$domain=adobe.com|apple.com|autodesk.com|deseretnews.com|beautyoftheweb.com|norton.com|eonline.com|eweek.com|frontdoor.com|kaspersky.co.uk|lego.com|lenovo.com|nflcdn.com|nvidia.com|optimum.net|pepperidgefarm.com|resources.ea.com|restaurant.com|samsung.com|kmart.com|style.com|walgreens.com|wiley.com
@@||aarp.net/etc/aarp/statics/global/js/omniture*.js
@@||abcnews.com/assets/flash/kdp/omniturePlugin.swf
@@||space.ca/jsHandler.aspx?src=*.omniture.js
@@||adobe.com/www.adobe.com/uber/js/pdc_s_code.js
@@||akamai.net/*/www-origin.walmart.com/webanalytics/$domain=walmart.com
@@||amd.com/*/scode_global.js
@@||amd.com/us/as/scode_$script
@@||apple.com/pages/omniture/js/omniture_tracking.js
@@||apple.com/pages/omniture/js/util.js?
@@||foxtel.com.au/shop/packages-and-deals/static/js/os-omniture.js
@@||player.qbrick.com^*/sitecatalyst.swf
@@||arctichome.com/flex-mod/js/tracking/webtrends-*.js
@@||simyo.de^*/simyo_s_code.js
@@||arstechnica.net/wp-content/themes/*/omniture/
@@||arvest.com/common/urchin/urchin.js
@@||assets.pinterest.com/js/pinit.js$domain=mandatory.com
@@||bankaholic.com/omniture/$script
@@||bankofamerica.com/pa/components/*/TouchClarity.js
@@||bbci.co.uk/bbcdotcom/*/omniture/siteCatalyst.js$domain=bbc.co.uk|bbc.com
@@||bigfishsites.com/*/global/javascript/webtrends_capi_$domain=bigfishgames.com
@@||bing.com/travel/scripts/sCode.js$~third-party
@@||bing.com^*/s_code.$script
@@||nytimes.com/bi/js/analytics/nyt4/controller.js
@@||bissell.com/min.axd?
@@||bose.com/assets/js/site_catalyst_functions.js
@@||bt.com/static/includes/homepage/touchclarity/*/omtr_tc.js
@@||canon.com/sys/js/webtrends.js
@@||cartoonnetwork.com.au/include/omniture/s_code.php
@@||cartoonnetworkasia.com/include/omniture/s_code.php
@@||cbsistatic.com/fly/bundles/flyjs/js/libs/omniture.s-code*.js$domain=cbsnews.com
@@||cbsistatic.com/fly/bundles/flyjs/js/managers/omniture-tracking*.js$domain=cbsnews.com
@@||cdn.turner.com/nba/nba/.element/*/global/omniTrack.js$domain=nba.com
@@||cdnbrm.com/images/*/TouchClarity/images/
@@||chron.com^*/omniture/$script
@@||cineworld.co.uk/assets/js/specialist/webtrends.
@@||consumerist.com/mt.js
@@||content.idine.com^*/cmdatatagutils.js$domain=rewardsnetwork.com
@@||converse.com/handler/OmnitureHandler.ashx
@@||cycletrader.com/lwmvcjs/$script
@@||delvenetworks.com/player/common/scripts/delve-omniture-callback.js
@@||dicksmith.co.nz^*/site-tracker.js
@@||disney.go.com/globalelements/footer/comscore.txt
@@||ebaystatic.com^*_Omniture_$script
@@||eircomphonebook.ie/js/wt_capi.js
@@||eloqua.com^*/svrGP.aspx?$subdocument,domain=itworld.com
@@||encyclopedia.com/encyclopedia.axd/omniturejs/$script
@@||eonline.com/includes/js/sitecatalyst/s_all.jsp
@@||espncdn.com/combiner/c?$script
@@||espncdn.com/prod/scripts/mbox.20.r2.js
@@||expedia.com/static/default/default/scripts/siteAnalytics.js?
@@||filmmagic.com/scripts/tracking/omniture-communicator-basic.js
@@||filmmagic.com/scripts/tracking/omniture-page-communicator.js
@@||focus.ti.com^*/hbx.js
@@||icbdr.com/common/js/SiteCatalystH243.js$domain=careerbuilder.com
@@||focus.ti.com^*/hbx_page_code.js
@@||subscription-assets.ew.com/prod/assets/*/omniture/
@@||foodnetwork.ca/UserControls/*/omnitureMedia.swf
@@||foxnews.com/js/omtr_code.js$domain=foxbusiness.com|foxnews.com
@@||google-analytics.com/ga.js$domain=newyorker.com|dailyfreegames.com|opendns.com|aebn.net|intellicast.com|fossil.com|techbargains.com|search.diy.com|donanimhaber.com|boostmobile.com|filmweb.pl|break.com|mevio.com|mommyish.com|thegrindstone.com|sundance.org|justjared.com|kleinanzeigen.ebay.de|timberland.com|billboard.com|google.com|priceme.co.nz|games.latimes.com|banshee.fm|eonline.com|yellow.co.nz|logitech.com|lucasarts.com|tomshardware.com|maxcdn.com|tweetgrid.com|frequency.com|aftonbladet.se|seekingalpha.com|threatfire.com|bolha.com|jetbrains.com|fora.tv|thevine.com.au|americanapparel.net|mashable.com|brobible.com|oyster.com|photobucket.com|nuts.co.uk|meetme.com|alatest.com|apps.facebook.com|billabong.com|weeworld.com|youtube.com|philips.com|tvunetworks.com|g4tv.com|jobsite.co.uk|avast.com|ehow.com|gasbuddy.com|globaltv.com|nme.com|imageshack.us|tube8.com|priestville.org|latimes.com|umbro.com|tempe12.com|account.hirezstudios.com|salon.com|juxtapoz.com|wonka.com|medonet.pl|asus.com|7digital.com|lemonfree.com|babylon.com|theweek.com|bookadumpster.com
@@||google-analytics.com/urchin.js$domain=expresspcparts.com.au|roblox.com
@@||google.com/coop/cse/brand?form=searchbox_$script,domain=wellness.com
@@||google.com/cse/*/sayt.js$domain=ebuyer.com
@@||google.com/cse/cse.js$domain=collegehumor.com|techspot.com|movie-list.com|howtogeek.com|toorgle.net|inman.com
@@||gq.com/js/ecomfw.min.js
@@||greenbaypressgazette.com/odygel/lib/vendor/omniture/sitecatalyst.js
@@||guardianapps.co.uk/jwplayer/omniture-H.25.2d.js
@@||guim.co.uk/static/*/scripts/omniture-
@@||healthgrades.com/Consumer/scripts/omniture_settings.js
@@||horizon-bcbsnj.com/pd_njh/ssi/webtrends.js
@@||hsbc.co.uk^*/html/hsbcukcommon/touchclarity/
@@||hsn.com/coremetrics/cmcustom.js
@@||hulu.com/site-player/*?referrer=
@@||hyundaiusa.com/js/home/classes/HN.Omniture.js
@@||i.imedia.cz/javascript?*&referer=
@@||imagesbn.com/resources?*/coremetrics-$script,domain=barnesandnoble.com
@@||img.timeinc.net/tii/omniture/h/config/life.js$domain=life.com
@@||nbcphiladelphia.com/includes/customOmnitureData.js
@@||interest.com/content/plugins/bankrate-global/javascript/bglf-s_code.js
@@||interflora.co.uk/kernel/coremetrics/cmdatatagutils.js
@@||interflora.co.uk/kernel/coremetrics/eluminate.js
@@||iocdn.coremetrics.com^$domain=boscovs.com
@@||itworld.com/elqNow/$script
@@||js.nyt.com/js/app/analytics/wtbase.js$domain=nytimes.com
@@||jsonline.com/templates/Proxy.api?
@@||juniper.net/elqNow/$script
@@||kavanga.ru/exp?$domain=overclockers.ru
@@||kentucky.com/mistats/products/pubsys_s_code.js
@@||libs.coremetrics.com^$domain=boscovs.com
@@||lloydstsb.com/it/xslt/touchclarity/omtr_tc.js
@@||logitech.com/javascript/*/webtrends.js
@@||marilyn.ca/jsHandler.aspx?*omniture
@@||microsoft.com/Areas/Global/Content/Omniture/
@@||microsoft.com/Combined.js?*/Omniture/
@@||miniusa.com/js/dcs_tag.js
@@||mlb.mlb.com/shared/flash/tracking/bamnet_omniture_as3.swf
@@||mnginteractive.com/live/js/omniture/OmnitureHelper.js
@@||mnginteractive.com/live/js/omniture/SiteCatalystCode_*.js
@@||mnginteractive.com/live/omniture/sccore.js
@@||msecnd.net/v-5/scripts/webtrends-$domain=cheapflights.co.uk|cheapflights.com
@@||msecnd.net^*/s_code.$script,domain=bing.com
@@||mycoke.com/js/tracking.js
@@||mycokerewards.com/flex-mod/js/tracking/webtrends-
@@||mycricket.com/js/hbx.js
@@||myrecipes.com/static/j/ext/omniture/
@@||n-tv.de/stat/videoplayer/
@@||nationalgeographic.com/stats/omniture_code.js
@@||nationalgeographic.com/wpf/sites/common/j/omniture_code.js
@@||nba.com/tvc/script/tvc_omniture_code.js
@@||nedvang.nl/sites/all/*/PageView.js
@@||newegg.com/WebResource/Scripts/*eluminate.en.js
@@||news.sky.com/sky-news/app/*/swf/OmniturePlugin.swf
@@||nfl.com/yui/min2/index.php?*nfl-omniture.js
@@||nflcdn.com/static/site/*-omniture.js
@@||nflcdn.com/yui/min2/index.php?*-omniture.js
@@||nintendo.com/js/omniture-prod.js
@@||ntc-affinity-api.web.aol.com/affinity/?$script,domain=games.com
@@||nytimes.com/js/app/analytics/wtbase.js$domain=nytimes.com
@@||nzherald.co.nz/themes/*/s_code.min.js
@@||wired.com/js/omniture/omniture_helpers.js
@@||hewitt.com^*/js/analytics/
@@||o.aolcdn.com^*&file=/aol/omniture.min.js
@@||omniture.com^$document,~third-party
@@||ooyala.com/3rdparty/omniture_other_$domain=thesun.co.uk|bloomberg.com|businessweek.com|nintendo.com|marthastewart.com
@@||ooyala.com/3rdparty/comscore_other_$domain=marthastewart.com
@@||optimum.net/js/omniture/external.js
@@||outbrain.com/nanoWidget/3rd/comScore/comScore.htm$domain=theinsider.com|telegraph.co.uk
@@||paypalobjects.com^*/js/site_catalyst/
@@||pcworld.com/script/omniture/video.js
@@||pepsico.com/scripts/urchin.js
@@||pioneercu.org/includes/lib/js/coremetrics/eluminate.js
@@||playserver1.com/SiteScript/Play/*/webtrends2.min.js
@@||pricegrabber.com/js/combine.js.php?*=s_code_h.
@@||pricegrabber.com/js/combine.js.php?*_js_code.
@@||quill.com/js/Omniture/quill_s_code.js?
@@||rentals.com/assets/*webtrends-
@@||rentals.com/javascripts/primedia-webtrends-
@@||rentals.com/javascripts/webtrends-bindings.js
@@||reseguiden.se^*.siteCatalyst.js
@@||ea.com/omniture/
@@||reuters.com/resources_v2/js/webtrends.js
@@||reutersmedia.net/resources_v2/js/webtrends.js$domain=reuters.com
@@||rightnow.com/javascript/omniture_variable_
@@||s.xe.com/*/js/webtrends.1.js
@@||screenname.aol.com/auth/getToken?*&referer$domain=reader.aol.com
@@||sears.com/etc/clientlibs/foundation/sitecatalyst/sitecatalyst.min.js
@@||seeingwithsound.com/ga.js
@@||shld.net^*/mbox_09.js$domain=sears.com
@@||sixflags.com/global/func/js/siteCatalyst.js
@@||sky.com/flash-video-player-*/OmniturePlugin.swf
@@||skypeassets.com/i/js/wanalytics/$domain=skype.com
@@||slkimg.com^*/slacker/util/adobe/s-code.js$domain=slacker.com
@@||startribune.com/includes/Omniture.H.24.js
@@||storage.ie6countdown.com/assets/*/ie6ct_s_code.js
@@||subscription-assets.timeinc.com/prod/assets/*/omniture/
@@||surfline.com/functions/page_tracker.cfm
@@||swfs.bimvid.com/omniture-*.swf
@@||symantec.com/script/omniture/om_code.js
@@||tampabay.com/universal/scripts/omniture/tb_code.js
@@||targetimg3.com^*/omniture/omniture_minified.js$domain=target.com
@@||telegraph.co.uk/template/*/webtrends/LIVE/WTID.js
@@||telegraph.co.uk/template/*/webtrends/Webtrends.js
@@||timeinc.net/tii/omniture/$script
@@||traderonline.com/javascript/master_s_code.js
@@||tvlistings.optimum.net/foresee/foresee-trigger.js
@@||thecomedynetwork.ca/jsHandler.ashx
@@||thepiratebay.se^*/jquery.min.js
@@||unionbank.com/coremetrics/*/eluminate.js
@@||unionbank.com/coremetrics/cmdatatagutils.js
@@||usairways.com/en-US/Resources/javascript/omniture*.js
@@||usps.com/ContentTemplates/common/scripts/webtrends.js
@@||verizon.com/content/contactus/includes/javascript/hbx.js
@@||victoriassecret.com/app/coremetrics/eluminate.js
@@||video.nbcuni.com/core/*/omniture_
@@||videos.mediaite.com/embed/*?referrer=http
@@||zillowstatic.com/static/*/foresee-trigger.js$domain=zillow.com
@@||washingtonpost.com/wpost/js/combo?token*/wp_omniture.js
@@||weather.com/clients/widgets/*?referrer=http
@@||whirlpool.com/foresee/foresee-trigger.js
@@||wireimage.com/scripts/tracking/omniture-communicator-basic.js
@@||wireimage.com/scripts/tracking/omniture-page-communicator.js
@@||yimg.com^*/js/omniture-$script
@@||yp.ca/js/utag.loader.js?$domain=yellowpages.ca
@@||ytv.com/scripts.axd?$script

View file

@ -0,0 +1,3 @@
<http://www.malwaredomainlist.com/>:
"Our list can be used for free by anyone. Feel free to use it."

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,876 @@
[Adblock Plus 1.1]
! Title: Greek AdBlock Filter
! Version: 2014010700
! Expires: 2 days
! Homepage: https://www.void.gr/kargig/blog/greek-adblock-plus-filter/
! License: http://creativecommons.org/licenses/by-sa/3.0/
!
! ad blocking filter for greek sites by kargig[at]void[dot]gr
! supplement for EasyList
!
! Please report unblocked ads or mistakenly blocked content
!
||parallaximag.gr/sites/default/files/pictures/20120919-emporiki_2.swf
||parallaximag.gr/sites/default/files/pictures/goethe_banner3.swf
||skai.gr/Themes/1/Default/Media/Skins/samsung*
||insomnia.gr/images/backgrounds/warcraft2.jpg
||in.gr/Themes/1/Default/Media/senso_pro*
||contra.gr/genika/article1938232.ece/Binary/original/header.png
||financial.kathimerini.gr/piraeus_banner.swf
||skai.gr/Themes/1/Default/Media/Skins/alpha_romeo_skin_2.png
||onlinedelivery.gr/banners/*
||scoreline.com.cy/images/euro2012/bg-wh.jpg
||sport-fm.gr/resrc/images/layout/videos/webTVBG-vodafone.png
||sport-fm.gr/resrc/banners/peiraiwsSkin*
||in.gr/Themes/1/Default/Media/slideshow-2.gif
||abimg.gr/files/listerine_skin_v2.jpg
||contra.gr/genika/article1805738.ece/BINARY/original/cbg.png
||in.gr/Themes/1/Default/Media/180x18_kid.jpg
||thestival.gr/images/stories/banners/australia_banner.gif
||skai.gr/files/1/banners/eko300x100_new.swf
||skai.gr/Themes/1/Default/Media/Skins/eurobank-skin.jpg
||in.gr/Themes/1/Default/Media/sensodyne-logo.png
||sport-fm.gr/resrc/campaigns/nike-chleague/*
||sport-fm.gr/resrc/campaigns/cocacola-euro2012/box_*.jpg
||contra.gr/Basketball/article1799945.ece/BINARY/ORIGINAL
||in.gr/Themes/1/Default/Media/havana180X18.jpg
||koutipandoras.gr/wp-content/uploads/2012/05/talesoftaste_510x210.gif
||koutipandoras.gr/wp-content/uploads/2012/04/GKFX2_250x250.swf
||sport-fm.gr/resrc/campaigns/final4-2012/bwin-skin.jpg
||makeleio.gr/images/Stefanos/novartis300-80.swf
||newsbeast.gr/files/1/2012/04/12/peiraiws.jpg
||newsbeast.gr/files/1/banners/axaTextAdImg.png
||skai.gr/Themes/1/Default/Media/Skins/sony_internet_tv.swf
||skroutz.gr/images/helmet/promo/*
scdn.gr/images/helmet/promo_material/*
||contra.gr/genika/article1698130.ece/BINARY/original/ts.jpg
||missbloom.gr/images/*skin*
||stinpraxi.gr/wp-content/uploads/2012/01/eko300x100_new.swf
||oneman.gr/antikeimena/article1635665.ece/BINARY/oneman.jpg
||oneman.gr/antikeimena/article1635795.ece/BINARY/original/oneman_fasa.png
||oneman.gr/keimena/style/article1659136.ece/BINARY/oneman.jpg
||24h.gr/sites/default/files/users/headerpiraeus.jpg
||24h.gr/sites/default/files/users/learnmorepiraeus2.png
||koutipandoras.gr/wp-content/uploads/2012/02/GKFX1_250x250.swf
||thepressproject.gr/ad/*
||dealin.gr/iframes/5/*
||sport24.gr/genika/article1951216.ece/BINARY/original/mc_tab.png
ant1online.gr/SiteCollectionImages/SiteImages/betonet.gif
zougla.gr/news/data/upimages/image.php?image=ororotot9018231.jpg
cosmopolitan.gr/images/vod_logo_100x70.jpg
contra.gr/grfx/lscores.gif
paokmania.gr/images/deko.jpg
adman.otenet.gr/*
in.gr/banners/*
banners.otenet.gr/banner/all_banners/*
zougla.gr/hyperads/*
forthnet.gr/media/Banners/driveme/*
meteo.gr/absolutebmxe/banners/*
imagehosting.gr/images/*
paokmania.gr/images/stories/*
paokmania.gr/images/banners/*
paokmania.gr/images/banner_*
livemovies.gr/files/u231/*
neo.gr/images/banners/*
neo.gr/website/ebuy-shops/*
avclub.gr/forum/images/banners/*
imageshack.gr/banners/*
asxetos.gr/ban/*
livikos.gr/adserver/*
resources.sport-fm.gr/sportfm/banners/*
resources.sport-fm.gr/supersportFM/images/layout/campaigns/*
sport-fm.gr/resrc/images/layout/campaigns/pao-connx/bgpage-1280x1050.jpg
greektube.org/images/banners/*
media2.feed.gr/pegasus/Multimedia/swf/*
ads.e-go.gr/gbanner/
||ebusiness-interactive.forthnet.gr/portalsites/livescores/*
imagine897.gr/dat/*
serve.ads.gr/
ads.24media.gr
static.adman.gr
wk.kathimerini.gr/webadmin/woman/gifsXor/*
furious.adman.gr
capital.gr/banners/StaticBanners/*
files.capital.gr/adserver/*
||ads.naftemporiki.gr
ioannina24.gr/images/banners/*
ioannina24.gr//images/banners/*
amo.gr/images/top-add-banner.gif
wk.kathimerini.gr/kath/adv/banners468/*
banners.kerdos.gr/banners/*
promos.pathfinder.gr
65.109.238.16/openx-2.4.6/www/delivery/*
zougla.gr/uploads/Banners/static/jeep*.swf
whitepages.gr/images/neestaxytites_banner550_195.swf
sport-fm.gr/specials/judascomp09/
whitepages.gr/gr/images/connect_ote.swf
sport-fm.gr/specials/twilightfootballcomp09/
maior.gr/images/stories/banners/
maior.gr/images/stories/myphotos/1.swf
athensnews.gr/sites/athensnews/files/banners/
news247.gr/js/detailAds.js
zougla.gr/uploads/Banners/realnews*.swf
sonytwilightwidget.com/*
dev.realize.gr/temp/away.swf?*
livescores.gr/grfx/b*
livescores.gr/grfx/logoGreece.gif
kathimerini.gr/webadmin/techno/connx/*
contra.gr/banners/betoto_news_header.gif
protothema.gr/hyperads/*
otenet.gr/portal/images/html/homepage/ecodrive_banner.swf
zougla.gr/uploads/Banners/static/xartopaixtra_zoogla_150x114.gif
bestprice.gr/promos/allshops/*
politicsonline.gr/wp-content/uploads/ntalara_ban.gif
imerisia.gr/swf/eurobank_privetbanking.swf
media2.feed.gr/filesystem/images/20090810/low/*
imerisia.gr/ImageBank/el_pet.swf
imerisia.gr/images/nontelecomsban.jpg
imerisia.gr/images/eurobank_topb.jpg
imerisia.gr/SLIDINGPEN/*
star-tv.gr/assets/media/SWF/*
contra.gr/grfx/bet_coop.jpg
plaisio.gr/BannerImages/0910/*
stercinemas.gr/SterCinemas/SterImagesLive/Banners/Right%20Banners/emporiki*
stercinemas.gr/SterCinemas/SterImagesLive/NESCAFE*
villagecinemas.gr/media/Banners/*
odeon.gr/movieportal/GR/flash/sponsors.swf
webtv.antenna.gr/webtv/images/banners/*
alfavita.gr/001.diafimisi.1.selidas/*
contra.gr/grfx/menuIcons/lartigiano.jpg
kathimerini.gr/webadmin/Glife/Chartis/*
||athinorama.gr/images/search_connxlogo_ros.gif
||athinorama.gr/adv/lmnts/*
media.adslgr.com/www/images/934adc119cb74c815df8b1697cae4c98.png
media.adslgr.com/www/images/1a31027deca376bfb2a140554a29a047.jpg
||media.adslgr.com/www/images/0a7c90d00978af65bd2089862535b7e6.jpg
e-shop.gr/banners/spamet.swf
sday.gr/uploads/SPONSORS/Karpetopoulos_Panoutsos/BackKarpetop2.jpg
obj.adman.gr
||interactive.forthnet.gr/banner*
wk.kathimerini.gr/kath/adv/textlinks/*
in.gr/googleAdsCode/*
zougla.gr/uploads/Banners/thisisit.swf
contra.gr/XML/sponsors/
zougla.gr/uploads/Banners/static/chryslerbanner.jpg
media.adslgr.com/www/images/8d9b102aab0f8990eeeef58b57ed2c49.gif
xe.gr/ProfessionalServices/banners/*
meteo.gr/AddsCust/*
sport-fm.gr/resrc/images/layout/campaigns/germanos-helakis/germanos-logo.png
sport-fm.gr/resrc/images/layout/campaigns/*/*-header.png
sport-fm.gr/resrc/images/layout/campaigns/*/*-footer.png
sport-fm.gr/resrc/images/layout/campaigns/*/header.png
sport-fm.gr/resrc/images/layout/campaigns/*/bg-*.jpg
sport-fm.gr/resrc/images/layout/campaigns/*/bg-*.png
sport-fm.gr/resrc/images/layout/campaigns/*/*-top.png
sport-fm.gr/resrc/images/layout/campaigns/afhs/afhs-tub.png
sport-fm.gr/resrc/images/layout/campaigns/pepsi-basket-09/tab-left*
sport-fm.gr/resrc/images/layout/campaigns/wrc/wrc-car.png
sport-fm.gr/resrc/images/layout/campaigns/*/*-bg.jpg
sport-fm.gr/resrc/images/layout/campaigns/*/*-shadow.png
sport-fm.gr/resrc/banners/campaigns/*
astrack.mediacdn.com/ipquery?siteorigin=sportfm
superbasket.gr/data/flash/kad.swf
superbasket.gr/data/flash/mysuperbasket.swf
sport-fm.gr/resrc/images/layout/campaigns/germanos-helakis/germanos-icon-*.png
sport-fm.gr/resrc/images/layout/campaigns/lartigiano/tab-left-lartigiano.png
cosmo.gr/XML/sponsors/wind/*
cosmo.gr/XML/sponsors/sonybraviaplaisio/*
kourdistoportocali.com/UsersFiles/admin/flash/lm_banner_300.swf
kourdistoportocali.com/UsersFiles/admin/images/banners/right/T3_ONLINE_White.gif
kourdistoportocali.com/UsersFiles/admin/flash/drive_hellas.swf
gato.gr/ads.css
insomnia.gr/templates/insomnia/images/battleleft.jpg
insomnia.gr/templates/insomnia/images/cartoonbattle.jpg
sport-fm.gr/resrc/banners/footballbet-99x22.png
sport-fm.gr/resrc/banners/england365-77x22.png
cacheserve.williamhill.com/*
static01.aek365.gr/ads/*
aek365.gr/banners/www/images/411d448b1989ad003c43c2934337e735.gif
sporarena.eu/banneraff/aek365/*
partypartners.com/images/marketing-materials/partycasino/greek/*
static01.aek365.gr/js/swfobject/swfobject.js
connextra.com/VistaBet/*
cacheserve.williamhillcasino.com/*
agronews.gr/images/banners/*
skai.gr/Themes/1/Default/Media/Layout_johnniewalker/player_bg_johnnie2.jpg
contra.gr/grfx/menuIcons/nokia_home_tab.jpg
avopolis.gr/images/OTE*.gif
avopolis.gr/images/backskin5.gif
avopolis.gr/banners/*.swf
michanikos.gr/images/banner/*
cosmo.gr/XML/sponsors/matiadis/*
naftemporiki.gr/banners/cyprusbank_logo.jpg
webtv.antenna.gr/webtv/images/starwars/pure/live/Site_BG__PURE.jpg
webtv.antenna.gr/webtv/images/starwars/pure/live/PureRushLive_300.swf
webtv.antenna.gr/webtv/images/starwars/pure/live/PureRushLive_728.swf
e-cannibals.gr/blog/wp-content/uploads/sm_kanivaloiAD.jpg
e-cannibals.gr/blog/wp-content/uploads/somafusion_adsb.jpg
e-cannibals.gr/blog/wp-content/uploads/kanivaloiAD.jpg
makthes.gr/filestore/banners/*
in.gr/images/dewarslogosm.gif
in.gr/images/logo_air_sm.gif
insomnia.gr/templates/insomnia/images/*ote.jpg
avgi.gr/images/photoarchive/banners/
milaraki.com/banner/madmacs.gif
bno.gr/images/stories/advhere.gif
bno.gr/images/stories/easyclicks.gif
njoytv.gr/flash/150x50.swf
adserver.linkwise.gr/*
affiliate.linkwise.gr/*
prasini.gr/images/stories/banners/*
derby.gr/images/autofinder.jpg
derby.gr/autofinder728.swf
derby.gr/images/85x20_logo_pos_el.png
derby.gr/images/banners/85x20_logo_pos_el.png
videos.stifora.gr/banners/*
stifora.gr/banners/11850banner300250.png
yupi.gr/banners/pepsi_max_fp.png
gr.partypoker.com/
foracamp.gr/files/MPU_alpha_STD_GR.jpg
laptopblog.gr/sites/default/files/MPU_alpha_STD_GR.jpg
axiabanners.exodus.gr
files.capital.gr/banners/
files.capital.gr/images/MarfinInvestmentGroupHome.gif
files.capital.gr/images/dowjones/dowjones_home_logo_small.jpg
assets.in.gr/webstatic/691D5C45FA5AE94D9B4D891285CBE08A.jpg
webtv.antenna.gr/webtv/images/talento_voting.jpg
webtv.antenna.gr/webtv/images/HBH/*
cdn1.telemetryverification.net/tv2n/presenter/deploys/inbanner/*
sport-fm.gr/resrc/images/layout/campaigns/europa/*
sport-fm.gr/resrc/images/layout/campaigns/stigmesmundial/lartigiano-418x100.jpg
sport-fm.gr/resrc/images/layout/campaigns/stigmesmundial/lartigiano.png
sport-fm.gr/resrc/images/layout/campaigns/wc2010/fp-block-header-vodafone.png
sport-fm.gr/specials/castroltables/resrc/castrol-420x28.jpg
sport-fm.gr/resrc/images/layout/campaigns/wrc/wrc-car__v2.png
scoreline.gr/Rugby/pizzacopy.jpg
scoreline.gr/Banner.jpg
mundobet.gr/images/kingbet.gif
mundobet.gr/images/diethnisenosi.gif
mundobet.gr/images/cavacanava.gif
mundobet.gr/images/ermisShelter.gif
tech.in.gr/Themes/1/Default/Media/Technology/Skin/htc_right.jpg
tech.in.gr/Themes/1/Default/Media/Technology/Skin/htc_left.jpg
tech.in.gr/themes/1/default/Media/Technology/htc-1280grey.jpg
in.gr/files/1/2010/ingr-oviNokia.gif
sport24.gr/ast/img/sport24_mudial_fasa_martad2.jpg
sport24.gr/ast/ads/fil/*
sport24.gr/ast/img/video_section_fasa.jpg
sport-fm.gr/resrc/images/layout/campaigns/germanos-helakis/germanos-banner-980x100__v90219.jpg
skai.gr/Themes/1/Default/Media/clock_eko.swf
zougla.gr/uploads/Banners/travel_city_banner*
zougla.gr/uploads/thomas/travel_city_banner*
basket.gr/adDream.swf
zougla.gr/uploads/Banners/static/banner-*
politis-news.com/banners/*
worxagency.com/laiki/140x200.js
amnizia.com/images/steelbanner.gif
amnizia.com/images/amniziaadds.swf
woop.gr/sites/all/themes/woop/images/promo-fiat-main.jpg
kathimerini.gr/webadmin/Ellada/BCA/
assets.ricardoaffiliate.gr/s/ads.js
zougla.gr/uploads/Banners/games-teliko.swf
sport-fm.gr/resrc/images/layout/campaigns/eshop/*
zougla.gr/Uploads/thomas/banner_games.jpg
real.gr/Files/AdvBanners/*
ora21.gr/images/banners/*
promo.gpoint.com.gr
ax-easy.com/banners/
flights.gr/tromaktikos/
in.gr/files/1/sponsors/
webtv.antenna.gr/webtv/images/pepsi/
geoloc12.geovisite.com:82/private/geocounter.js
r2d2.adman.gr/gbanner/
hbnews.gr/files/banners/
hbnews.gr/themes/default/img/greenads.png
capital.gr/oa300x250_capital.swf
theinsider.gr/images/stories/millennium-new.jpg
theinsider.gr/images/stories/logo%20hatsios.jpg
theinsider.gr/images/stories/anax%20logo-side.jpg
content-mcdn.feed.gr/pegasus/Multimedia/swf/
sentragoal.gr/images/sportingbet_adv2.jpg
epiruspost.gr/banner-market2.swf
epiruspost.gr/images/banners/
sportsioannina.gr/banner-market.swf
sportsioannina.gr/images/stories/Ads/
sportsioannina.gr/olympic.swf
boukouvalas.org/*.gif
myshopper.gr/ads/
alogos.gr/images/banners/*
greeklug.gr/images/banners/
gpoint.com.gr/*.swf
vrisko.gr/Logos/public/tromaktiko/3-300x250.swf
greekddl.com/images/insport.swf
wagershare.com/affiliate_media/flashbanners/
moneybookers.com/images/banners/gr/
anendotos.gr/ads/*
lifo.gr/adsimg/*
||static.fsport.gr/grfx/lscores.gif
||cosmo.gr/XML/sponsors/
||zoomnews.gr/ads/550x68.swf
||zoomnews.gr/ads/casa.swf
||zoomnews.gr/wp-content/uploads/2010/12/hp.jpg
||greekza.de/thumb/kf_pea_125x125_all-char_GR.gif
||gazzetta.gr/images/banners/
||gazzetta.gr/templates/kmr_gazzetta_v2/images/backgrounds/headCorners2.png
||gazzetta.gr/templates/kmr_gazzetta_v2/images/backgrounds/bloggerTsakirisEshop3.jpg
||zougla.gr/Uploads/Banners/*
||static.fsport.gr/grfx/lscores.jpg
||seri.gr/sites/default/iframes/*
||in.gr/Themes/1/Default/Media/logo_vb_1.jpg
||static.24media.gr/interstitials/betoto/*
||sport24.gr/incoming/article778267.ece/BINARY/*
||real.gr/Files/Skins/*
||real.gr/img/xorhgos_kyprou.png
||real.gr/img/stockmarket_logo.jpg
||real.gr/files/Banners/*
||sport-fm.gr/resrc/campaigns/windone/*
||sport-fm.gr/resrc/images/layout/campaigns/euroleague/sportingbet-128x20.png
||news.in.gr/Themes/1/Default/Media/image-ads-sponsor.jpg
||newsit.gr/flash/categories/category_xorhgia_blank_pixel.gif
||newsit.gr/flash/banners/sponsors/*_top.png
||in.gr/Themes/1/Default/Media/vb-logo-in.gif
||cretalive.gr/img/frontend/banners/*
||cretalive.gr/flash/full_banner/*
||cretalive.gr/img/frontend/businesscatalog/*
||unibet-cdn.com^$domain=contra.gr
||thisisvolos.gr/images/stories/ads/*
||away.gr/wp-content/themes/Carrington_Away/images/footer_l.jpg
||adesmeytos.gr/*.swf
||banners.dol.gr/*
||adman.in.gr/gbanner/
||tvxs.gr/sites/all/themes/tvxs/images/kraxtes/tvxs_728_413_ipad2_F.gif
||kathimerini.com.cy/assets/modules/kat/banners/
||kathimerini.com.cy/layout/images/mini_banner.gif
||skai.gr/Themes/1/Default/Media/clock_wind.swf
||sport24.gr/incoming/article854008.ece/BINARY/ORIGINAL
||static.24media.gr/push_down/bwin/*
||apergia.gr/images/adds/*
||milaraki.com/banner/*
||switch.statman.gr^
||wigetmedia.com/tags/
||gazzetta.gr/sites/all/themes/basic/images/gazzetta_quiz_SKIN_3.png
||gazzetta.gr/sites/all/themes/basic/images/batallafuerte_n2.png
||gazzetta.gr/sites/all/themes/basic/images/headCorners3.png
||sportygossip.com/sites/all/themes/athensbars/images/bg/*
||protothema.gr/files/1/2011/05/10/p.jpg
||skai.gr/Themes/1/Default/Media/Layout/delta-skai-skin.jpg
||tuned.gr/images/stories/leo/vlas_toolbar.jpg
||kathimerini.gr/kath/adv/
||contra.gr/Soccer/article1188569.ece/BINARY/*
||contra.gr/Soccer/article1188575.ece/BINARY/*
||contra.gr/latest/article1196807.ece/BINARY/*
||forthnet.gr/media/Banners/geodata/*
||clickgr.gr/picture_library/*
||clickbanner.gr^
||contra.gr/Columns/Paparazzi/article1188372.ece/BINARY/ORIGINAL
||emea.gr/ftp_files/*
||emea.gr/banner.php
||emea.gr/uploads/3330_printer_link.swf
||contra.gr/test/article1315085.ece/BINARY/*
||parapolitika.gr/Portals/0/Banners/
||cosmo.gr/incoming/article1337227.ece/BINARY/*
||contra.gr/test/article1194453.ece/BINARY/ORIGINAL
||contra.gr/test/article1315517.ece/BINARY/original
||el.williamhillcasino.com/
||greeksubtitles.gr/scripts/williamhills.*
||greeksubtitles.gr/banners/william/*
||contra.gr/test/article1316979.ece/BINARY/ORIGINAL
||contra.gr/Columns/article1348068.ece/BINARY/ORIGINAL
||bourdela.com/images/banners/*
||bourdela.com/studiobanners/*
||elegeia.gr/images/stories/webbanner_fr1.gif
||skai.gr/Themes/1/Default/Media/Layout_Renault/*
||skroutz.gr/images/yogurt/dressings/forthnet.jpg
||skroutz.gr/images/yogurt/dressings/wind/*
||scdn.gr/images/yogurt/dressings/forthnet/*
||static.24media.gr/dealin/*
||gameover.gr/images/promotion/fifa12/*
||mydirect.gr/CalculatorBanner.aspx?*
||subs4free.com/js/wh4_s4f_p2.js
||sportsmedia.gr/banners/subs.php
||kathimerini.gr/webadmin/home/Xor/*
||real.gr/BannersExternal.aspx*
||newpost.gr/alphabank.swf
||newpost.gr/peiraios.swf
||digitallife.gr/wp-content/themes/zenko/images/harry_potter_skin1600x1600.jpg
||gpoint.gpoint.com.gr/ntou-widget/*
||gpoint.gpoint.com.gr^
||oneman.gr/incoming/article1517780.ece/BINARY/original/skin_onemanSONY.jpg
||in.gr/Themes/1/Default/Media/UB_180x18.gif
||xrimanews.gr/images/banners/eurobankminilogo.gif
||in.gr/files/1/2011/banner/ofi365_370x60.jpg
||in.gr/files/1/2012/01/09/office365_37060.jpg
||in.gr/Themes/1/Default/Media/chivas.gif
ad.gr.doubleclick.net
2mdn.net/2629844/*
||spriderstores.gr/UserFiles/760de98e-12f7-4329-af83-11e01408bec7/TRAVELPLANET24-240x480.swf
||capital.gr/bob_oa_final.swf
||ethnos.gr/images/btn_eurobank.gif
||defencenet.gr/defence/images/banners/*
||contra.gr/livematches/article1559168.ece/BINARY/original/contra_mc_opel_logo.png
||kathimerini.gr/webadmin/home/Xor/getitnow.jpg
||cosmo.gr/Lifestyle/article1568590.ece/BINARY/original/nivea_comso_bg.jpg
||in.gr/Themes/1/Default/Media/ADSL_in-gr_logo.jpg
||hiphop.gr/ads/*
||techteam.gr/techteameasygr.swf
||in.gr/Themes/1/Default/Media/logoTravelPlan_180x18.jpg
||in.gr/Themes/1/Default/Media/Woman/marie-claire-stamp.png
||ad2.linkwise.gr^
||contra.gr/vathmologies/article1589967.ece/BINARY/original/*
||media.adslgr.com/www/images/c1259c4e50e39b2fc908400addb29c96.jpg
||protothema.gr/files/1/bg-banners/*
||protothema.gr/files/1/2012/01/29/opap.jpg
||adman.kathimerini.gr/*
||f-1.gr/adv/CLIENT/*
||newsit.gr/templates/default/images/newsit-11888-search.png
||s3.amazonaws.com/bulkimages/2011/skins/newsit-11888-bg.jpg
||s3.amazonaws.com/bulkimages/2012/newsit/opap_skin_newsit.jpg
||tovima.gr/themes/1/Default/Media/home/pireos.jpg
||protagon.gr/resources/campaigns/*
||dealspro.gr/cart/random_ads/*
||sport103.gr/images/banners/*
||thestival.gr/images/stories/banners/*
||thestival.gr/images/stories/balatsinos.jpg
||newsbomb.gr/media/com_skins/skins/24/*
||skai.gr/Themes/1/Default/Media/Skins/kri-kri*
||iefimerida.gr/sites/all/themes/base/images/*CHIVAS*
||protothema.gr/files/1/2012/11/12/anytime*
||comedylab.gr/ad/*
||skai.gr/Themes/1/Default/Media/Skins/ethiniki-trapeza*
||bold.adman.gr/*
||focuswebtv.gr/banners/*
||iefimerida.gr/sites/all/themes/base/images/iefimerida_xmas_offer.jpg
||efsyn.gr/ads/*
||athinorama.gr/lmnts/skins/*
||protothema.gr/Themes/1/Default/Media/opap-news.png
||protothema.gr/files/1/2012/11/07/opap_live_150x425.jpg
||protothema.gr/files/1/2012/12/24/AYTAKIshell.jpg
||onsports.gr/media/com_skins/*
||newsbomb.gr/media/com_skins/*
||newsbomb.gr/ads/*
||media.adslgr.com/www/images/80ffb536c4617d7afe7c8be553b1c37d.jpg
||media.adslgr.com/www/images/727fbd95261492dbd269bccbc7fffbb3.jpg
||newsbeast.gr/files/1/banners/animal/animal.jpg
||prismanews.gr/images/banners/*
||prismanewsmedia.gr/ads/foto/*
||gazzetta.gr/sites/all/themes/basic/images/banners/PokerStar*.jpg
||zappit.gr/files/flash/banners/2012/02/laertis_banner.jpg
||enikos.gr/data/photos/94f9b972426971e8a322a305c9d6ffff.gif
||enikos.gr/data/photos/3ee2af82bde8163b23b1734cf6ebbed5.jpg
||gossip-tv.gr/images/banner*
||gossip-tv.gr/media/com_skins/skins/20/*
||ough.gr/uploads/skins/skin_ough_gapyear-01.jpg
||media.mybet.com^
||thestival.gr/images/stories/betnew.png
||static.scar.gr/ads/*
||athensvoice.gr/files/honda/*
||seleo.gr/images/stories/diafimisi/*
||seleo.gr/images/stories/mast/*
||in.gr/Themes/1/Default/Media/imommy.png
||gazzetta.gr/sites/default/files/Anytime*.jpg
||athensvoice.gr/files/tezenis/*
||athensvoice.gr/files/instagreece/cosmote_skin.jpg
||photo.kathimerini.gr/files/ul/kath22/webextras/2013/04-APR/carrefourskin1*
||medlook.net/banners/*
||medlook.net.cy/banners/*
||vidata.gr/files/plugins/longtailvideo/v5a/r6/vidads.swf
||koutipandoras.gr/img/adds/*
||cosmo.gr/latestArticles/article2315555.ece/BINARY/ORIGINAL
||athensvoice.gr/files/samsung/*
||enikos.gr/data/photos/e9c55223303e2a7a5555c07544aa7b05.gif
||paparazzigr.tv/diafimistika/*
||thestival.gr/images/banners/*
||commission.gr/on/*
||sport-fm.gr/resrc/campaigns_v2/*
||protothema.gr/files/1/2013/08/09/*
||techblog.gr/adpond/skins/sep-2013/nokia-1020-skin.jpg
||katimagiko.gr/sites/all/themes/thrileole/images/*skin*
||roumlouki.gr/images/roumlouki_banners/*
||roumlouki.gr/images/banners/*
||koutipandoras.gr/wp-content/uploads/2013/07/Mikel1.jpg
||yupiii.gr/banners/bg/3yupiii.jpg
||media.adslgr.com/www/images/e3026593eee92619a864ff0841906cd0.gif
||egob2.feed.gr/filesystem/images/20130927/low/*
||flix.gr/skins/*
||protothema.gr/files/1/*/Skin*
||ishow.gr/images/*Skin.jpg
||greek-movies.com/icon/banner*
||fvcreatives.s3.amazonaws.com/Perrier/20131115/banners/img/*
||entertv.gr/sites/default/files/entertv_skin*
||efsyn.gr/wp-content/uploads/2013/10/banner*
||sofokleousin.gr/files/banners/*.jpg
||queen.gr/media/com_skins/skins/*
||gossip-tv.gr/media/com_skins/skins/*
||tlife.gr/flash/banners/*
||imerisia.gr/images/top_stories_xorhgia2.gif
||missbloom.gr/media/vidspics/711891282-1990488458-miss.jpg
||missbloom.gr/media/vidspics/2141663261-OTEHOME.jpg
||missbloom.gr/media/vidspics/*-skin.jpg
||yupiii.gr/banners/bg/*
||skai.gr/wp-content/themes/vantage/images/*skin*
||postin.gr/images/banners/*
||egnatiapost.gr/images/banners/*
||enikos.gr/banners/bg/*
||thepressproject.gr/files/asi.jpg
||thepressproject.gr/files/ekloges-np-300.jpg
||thepressproject.gr/kalogritsas300.jpg
||contra.gr/genika/article2841960.ece/BINARY/original/contra-editors-skin.jpg
||contra.gr/genika/article2820167.ece/BINARY/original/bc_background_alt.jpg
||contra.gr/incoming/article2840343.ece/BINARY/original/adidas_new_players.js
!Element-Hiding Rules
antenna.gr###afdiv
sportdog.gr###block-views-promoted_companies-block_1
fimotro.blogspot.com##.widget-content
sport-fm.gr##A.banner
contra.gr##div[id="ctl00_Div1"]
contra.gr##div[class="bfairTxtPrem txtLink"]
contra.gr##div[class="betotoTxtPrem"]
contra.gr##div[class="intTxtPrem txtLink"]
contra.gr##div[class="txtLink"]
greeksubtitlesproject.com##td[class="message-box"]
greeksubtitlesproject.com##P[style="color: rgb(255, 0, 0);"]
williamhill.com##A#promoLink
sport-fm.gr##A.ga_track
sport-fm.gr##SPAN.icon.icon-latest-news-ad
sport.gr##DIV.text-link-container.marg-top-10
sport.gr##DIV[style="float: left; width: 70px; padding-top: 7px;"]
sfl.com.gr##DIV.banner-side
sfl.com.gr##DIV[style="width: 285px; float: right; overflow: hidden;"]
naftemporiki.gr##DIV.banner
e-go.gr##div[class="agores"]
ethnos.gr##div[class="agores300"]
contra.gr##div[class="ad728"]
contra.gr##div[class="ad468"]
gasprice.gr##div[align="left"]
contra.gr##div[id="s2c"]
kathimerini.gr##td[class="title"]
kathimerini.gr##tr[bgcolor="#999999"]
kathimerini.gr##td[bgcolor="#999999"]
kathimerini.gr##table[bgcolor="#999999"]
kathimerini.gr##td[class="testob"]
pathfinder.gr##div[id="ad-links"]
kerdos.gr##div[class="RightColumnBanners"]
kerdos.gr##div[class="bannerTables"]
news247.gr##div[class="banner"]
contra.gr##div[class="trailer"]
sport-fm.gr##A[style="padding: 3px; background-color: rgb(222, 135, 20); color: rgb(255, 255, 255); text-decoration: none;"][href="http://www.vistabet.com/?affiliate=sportfmVB&pname=Textlink"]
opensoft.gr##DIV[style="border: 1px solid rgb(224, 224, 224); padding: 2px; margin-left: 20px; background-color: rgb(244, 244, 252); width: 140px; font-size: 12px;"]
gato.gr##div[class^="ad"]
gato.gr##div[class=lad]
interesting.gr##div[class="wp125ad odd"]
livescores.gr##DIV.textLink
livescores.gr##DIV.textLink.right
contra.gr##A.cokeLink
contra.gr##A.cokeLink2
contra.gr##DIV[style="border-bottom: 5px solid rgb(0, 102, 204); clear: both;"]
news247.gr##DIV[class=dheadRightBoxBot]
bestprice.gr##DIV#shopping-normal
scores24live.com##IMG.imgLinks[src="images/betclick.gif"]
scores24live.com##IMG.imgLinks[src="images/bodd.gif"]
sport-fm.gr##A.footballbet
ethnos.gr##DIV.banner300250
new.e-go.gr##DIV#advsliding258
imerisia.gr##DIV.bannerhptop
start2click.com##DIV.c2sads
start2click.com##BODY.c2sbody
##TABLE.advright
contra.gr##A[href*="http://el.betclic.com/"]
contra.gr##A[href*="http://www.betclic.com/"]
contra.gr##IMG[alt="in association with betoto"]
in.gr##DIV[style="width: 150px; height: 100px; margin-top: 5px; margin-bottom: 5px;"]
sport-fm.gr##DIV.banner
gamato.info##IMG[src="images/728_generic_betnow.gif"]
oddbanner.bet-at-home.com##TABLE#bannerLandscape
alfavita.gr##SPAN.style5
contra.gr##DIV#bfair
cosmo.gr##A.sponsLink
ethnos.gr##DIV#promotext
ethnos.gr##DIV.underphoto
sentragoal.gr##IMG[src="images/betathome.jpg"]
##DIV.agores300
e-pnyka.gr##DIV[style="text-align: center; margin-top: 10px; margin-bottom: 10px;"]
sday.gr##DIV.banners
contra.gr##DIV.proan
sport-fm.gr##A[href*="/specials/williamhill?"]
sday.gr##IMG[src*="http://betsson.hs.llnwd.net/"]
enet.gr##DIV#b25
enet.gr##DIV#b42
enet.gr##DIV#b41
enet.gr##TD.content.first
enet.gr##DIV#b199
enet.gr##DIV#b178
!enet.gr##TABLE.fck-template.fck-t1
enet.gr##DIV#b177
enet.gr##IMG#BLOGGER_PHOTO_ID_5491192352761655986
aek365.gr##A[href*=spinpalace]
aek365.gr##A[href*=williamhill]
aek365.gr##A[href*=gamebookers]
aek365.gr##DIV[id="leo14102010e"]
aek365.gr##DIV[id="vavouralis"]
aek365.gr##IFRAME[src*=VistaBet]
i-live.gr##A[href*=stanjames]
skai.gr##DIV#kw_logo
skai.gr##SPAN#jwlogo
skai.gr##DIV#jw_wwg
sport-fm.gr##LI.blue.poker
sport-fm.gr##LI.blue.casino
webtv.antenna.gr##DIV.banner728
in.gr##A[href*="http://www.clickman.gr/"]
in.gr##DIV.admessage
in.gr##DIV#CenterRectangleBanner.adverticement
in.gr##DIV#RightVerticalBanner.adverticement
avgi.gr##A.fjmdiucexipcopnrmtke
bno.gr##IFRAME.blockrandom
bno.gr##A[href*=linkwise]
derby.gr##A[href*="http://www.bet-at-home.com/"]
##A[href*="adserver.itsfogo.com"]
##A[href*="http://axiabanners.exodus.gr/"]
capital.gr##A[href*="http://www.capital.gr/click.asp"]
##A[href*="http://interactive.forthnet.gr/click?"]
##A[href*="adman.otenet.gr/click?"]
sport-fm.gr##A[href*="http://www.plaisio.gr"]
##A[href*="serve.williamhill.com/"]
##A[href*="http://affiliates.stanjamesaffiliates.com/"]
gazzetta.gr##A.betAtHome
in.gr##div[class="textlink"]
contra.gr##A[href*="http://www.plaisio.gr"]
milaraki.com##A[href*="http://www.ez-smoke.net/"]
milaraki.com##A[href*="http://www.indolucky7.com/sbobet/sbobet.html"]
milaraki.com##A[href*=spinpalace]
sport24.gr##A[class="ad"]
sport24.gr##A[href*="http://www.plaisio.gr"]
sport24.gr##A[href*="http://www.menperfect.gr"]
sport24.gr##A[href*="http://www.allshops.gr"]
sport24.gr##A[href*="www.bwin.com"]
sport24.gr##A[href*="betclic.com"]
sport24.gr##A[href*="acidbet.gr"]
sport24.gr##A[href*="e-shop.gr"]
sport24.gr##A[href*="http://www.sport24.gr/html/ent/765/ent.371765.asp"]
sport24.gr##A[href*="http://www.sport24.gr/html/ent/042/ent.374042.asp"]
sport24.gr##A[href*="mens-x.gr"]
sport24.gr##A[href*="doubleclick.net"]
voria.gr##EMBED#mymovie
auto24.gr##EMBED#efirstPage
enet.gr##DIV#b39
tvxs.gr##DIV[class="subBanner"]
sport24.gr##DIV.code.currentArea-logo
enet.gr##DIV#b32
amnizia.com##A[href="http://www.text-link-ads.com/"]
amnizia.com##A[href="http://www.elcid.com/"]
amnizia.com##A[href="http://www.amnizia.com/advertisement"]
sport-fm.gr##DIV[id="seios-link"]
tro-ma-ktiko.blogspot.com##DIV#HTML15
tro-ma-ktiko.blogspot.com##DIV#HTML14
tvsubtitles.gr##DIV.box_main_ads
aek365.gr##DIV[id="MaxFooter"]
aek365.gr##DIV[id="MaxFooterBannerCon"]
shopping.pathfinder.gr###box-sponsors
capital.gr##TABLE[style="border: 1px solid rgb(194, 210, 216); background-color: rgb(240, 248, 255); font-size: 12px; padding: 2px;"]
e-go.gr###advsliding352
madata.gr###box_text_ads
zoomnews.gr##A[href*="ad-emea.doubleclick.net/click"]
zoomnews.gr##IMG[src*="ad-emea.doubleclick.net/"]
##.adsbox
toarkoudi.gr##.ADBox
toarkoudi.gr###MAINAD-box
supersyntages.gr###box-block-block-12
contra.gr##A[href*="http://adserver.itsfogo.com/click.aspx"]
sport-fm.gr##A[href*="http://www.e-germanos.gr"]
news.in.gr##DIV[style="background: url(\"Themes/1/Default/Media/image-ads-sponsor.jpg\") no-repeat scroll left center rgb(243, 243, 243); text-align: center; border-bottom: 1px solid rgb(230, 230, 230); padding: 4px 0px;"]
elektronikosanagnostis.blogspot.com###crosscol-overflow
cretalive.gr###sponsors-mainmodule
in.gr###RightBanner2
milaraki.com##A[href="http://www.mp4converter.net/dvd-ripper-mac.html"]
milaraki.com##A[href="http://www.verizoniphone4accessories.com/"]
e-go.gr##.deal
tvxs.gr##DIV[id="sb-container"]
sportena.com##A[href*="http://adserver.itsfogo.com"]
sportena.com##A[href*="http://www.bet365.com"]
sportena.com##A[href*="http://www.incasino.gr"]
sportena.com##A[href*="http://www.poker.gr"]
skroutz.gr###new_contract_online_overlay
skroutz.gr###banner_160_filters
skroutz.gr###banner_160_home
skroutz.gr###banner_728_home
in.gr##A[href*="http://partner.sbaffiliates.com/"]
tvsubtitles.gr##A[href*="http://www.kazinoinfo.com/"]
2810.gr##.bannergroup
newsbeast.gr###artFoot
milaraki.com###\5f widget-5
milaraki.com###text-202339834
gazzetta.gr##.linkLeftCntr
gazzetta.gr##.linkRightCntr
greekddl.com##DIV[id="floatit"]
contra.gr###adtxtlink
gr##A[href*="http://talos.adman.gr/"]
gr##A[href*="http://furious.adman.gr/"]
imerisia.gr##.deal
cosmo.gr##.rightClickable
cosmo.gr##.leftClickable
contra.gr##.rightClickable
contra.gr##.leftClickable
contra.gr##A[href="http://www.dealin.gr/?utm_source=contra.gr&utm_medium=fasa&utm_term=eurobasket&utm_content=xorigos&utm_campaign=contra_eurobasket"]
gr##DIV[id*="nimbleBuyWidget"]
techgear.gr###text-39
subs4free.com##A[href*="http://serve.williamhillcasino.com/"]
tanea.gr##.textlink
gazzetta.gr###block-views-promoted_companies-block_1
newsit.gr##DIV[style="margin: 10px 0 0 0; display: block;clear:both;"]
forthnet.gr##.superbanner
naftemporiki.gr###google_ads_container
tovima.gr##.textlink
skroutz.gr##DIV[id="afc"]
skroutz.gr##DIV[id="home_728x90"]
aek365.com##DIV[id="MaxFooterBannerCon"]
hiphop.gr##DIV[id="_atssh"]
hiphop.gr##iframe[src="*"]
techteam.gr##A[href*=spinpalace]
womenonly.gr##.connxtvscroll
oneman.gr##.topClickable
24h.gr###wsbanner
athinorama.gr###right-adv
athinorama.gr###left-adv
sport24.gr##div.ad
koutipandoras.gr##.alignleft.size-full.wp-image-16703
gazzetta.gr##A[href*="http://adfarm.mediaplex.com/"]
skroutz.gr##.s_call_to_action
skroutz.gr##.full
skai.gr##DIV[id="sony-internet-tv-holder"]
skai.gr##.banner
news.in.gr##DIV[style="background:url(Themes/1/Default/Media/image-ads-sponsor.jpg) no-repeat left; text-align:center;background-color: #F3F3F3;border-bottom:1px solid #E6E6E6;padding:4px 0px;"]
gazzetta.gr##A[href*="http://adserver.itsfogo.com/"]
gazzetta.gr##A[href*="http://partner.sbaffiliates.com/"]
gazzetta.gr##A[href*="http://www.bet-at-home.com/"]
skroutz.gr###sponsorship
newsbeast.gr###imgAd
newsbeast.gr###adFixFooter
gazzetta.gr###content-banner-korios
sport-fm.gr##A[href="#0.1_"]
sport-fm.gr##A[href*="http://adserver.itsfogo.com/"]
sport-fm.gr##A[href*="http://adfarm.mediaplex.com/"]
sport-fm.gr##A[href*="http://serve.williamhill.com/"]
aegeanews24.gr##.inlineads
aegeanews24.gr##.ads
aegeanews24.gr##.dockads.left
koutipandoras.gr##.wpbrbannerinside
adslgr.com##.adForumAdDiv
contra.gr##.mythos
newsbomb.gr##DIV[style="mergin:5px 0"]
homedelivery.gr##.homebannerright
homedelivery.gr##.bannerbottom
clickatlife.gr###adLinks
koutipandoras.gr###topfeatured
newsit.gr###sponsor-link
newsit.gr###right
newsit.gr###left
gazzetta.gr##A[href*="http://ff.connextra.com/"]
in.gr###HomePageRightBanner3
in.gr###RightBanner5
in.gr###HeaderBanner
in.gr###LeftBanner1
in.gr###RightBanner1
in.gr###middle_banner_1
in.gr###middle_banner_2
in.gr###LeftBanner3
in.gr###LeftBanner2
in.gr###RightBanner4
in.gr###in-home-rel-banners
in.gr###MiddleBanner1
sport24.gr###editor_link[style*="background:transparent url(http://www.contra.gr/Columns/article"]
contra.gr###editor_link[style*="background:transparent url(http://www.sport24.gr/incoming/article"]
gazzetta.gr##A[href*="http://adserving.unibet.com/"]
kathimerini.gr##A[href*="http://adman.kathimerini.gr/"]
gr##A[href*="http://bold.adman.gr/"]
focuswebtv.gr###leftskin
focuswebtv.gr###rightskin
iefimerida.gr###full-width-ad
iefimerida.gr###full-width-ad-inner
adslgr.com###mainBanner
koutipandoras.gr##.top_ad_big
imerisia.gr##.srs
imerisia.gr##.sls
in.gr###RightBanner6
koutipandoras.gr##.box_banner
gazzetta.gr##A[href*="http://www.novibet.com/Handlers/"]
gazzetta.gr##A[href*="https://www.playbet.com/portal/"]
newsbeast.gr##.topShare_textad
prismanews.gr##.banneritem
tovima.gr###Categheaderbanner728
tovima.gr###Homeheaderbanner728
tovima.gr###BannerCategArticle300Right1
tovima.gr###BannerCategArticle300Right2
tovima.gr###BannerCategArticle300Right3
tovima.gr###BannerCategArticle300Right4
gazzetta.gr##A[href*="http://www.sportingbet.gr/paradise-poker/"]
gossip-tv.gr##.bottom-popout.is-open
onsports.gr##.bottom-popout.is-open
gazzetta.gr##A[href*="http://ads.meridianbet.gr/"]
gazzetta.gr##A[href*="http://media.mybet.com/"]
gazzetta.gr##A[href*="http://Για"]
gazzetta.gr###block-wblocks-wblocks_promoted_companies
athinorama.gr##.disaronnobox
pitsirikos.net###text-19
newsbeast.gr##A[href*="http://bs.serving-sys.com/"]
newsit.gr##A[href*="http://194.219.47.98/link/"]
newsbeast.gr##.icon-popular.nespressoAdd
subs4free.com###ad-box-right
sport-fm.gr###backgroundlink
inthevip.gr##.left
inthevip.gr##.right
alterthess.gr###block-views-ads-sidebar-block-block
katimagiko.gr##.linkRightCntr
katimagiko.gr##.linkLeftCntr
livemovies.gr###block-block-32
adslgr.com##.LeftMenuAd
ethnos.gr##.srs
ethnos.gr##.sls
ethnos.gr##.deal
flix.gr##A[href*="http://ads.radial.gr/delivery/"]
flix.gr##.banner.medrect
flix.gr##.banner.minirect
newsbomb.gr##.skin-link
newsbomb.gr###textlinks
news247.gr###editor_link
entertv.gr##.linkRight
entertv.gr##.linkLeft
efsyn.gr##.attachment-full.aligncenter
vimaonline.gr###ad_13_left_1
nooz.gr###ctl00_articleLeftColumn_ctl04_adRotatorUpdatePanel
nooz.gr###ctl00_articleLeftColumn_ctl05_adRotatorUpdatePanel
nooz.gr###ctl00_articleLeftColumn_ctl06_adRotatorUpdatePanel
nooz.gr###ctl00_topBannersRight_ctl00_adRotatorUpdatePanel
nooz.gr##.top_banners_outer
meteo.gr##.newsbeast
gazzetta.gr##A[href*="http://sportingbet.gr/"]
newsbeast.gr##.menuAdd
newsbeast.gr##.txtLinks
oroskopos.gr###banners
oroskopos.gr##.banners_mid_2
news247.gr##.seatimage
thepressproject.gr###kalogritsas300
news247.gr###link-deliveras
! Exception Rules
@@sport-fm.gr/newspapers/$elemhide
@@resources.sport-fm.gr/sportfm/newspapers/
@@politis-news.com/banners/entheta/
@@contra.gr/XML/sponsors/pokergr/ilika/mundobasket.css
@@contra.gr/XML/sponsors/pokergr/ilika/*_image.png
@@contra.gr/XML/sponsors/pokergr/ilika/fasa_bg.jpg
@@sport-fm.gr/resrc/images/layout/campaigns/mb2010/bg-fp-block-mb2010.jpg
@@sport-fm.gr/resrc/images/layout/campaigns/mb2010/bg-bck-block.jpg
@@sport-fm.gr/resrc/images/layout/campaigns/mb2010/bg-fp-block__v3.jpg
@@||megatv.com/*/XML/jw/adverts.asp?*
@@||ads.patris.gr/_banners/onpaper.gif
@@|http://adman.in.gr/gbanner/?*|1195/300x250
@@||contra.gr/XML/sponsors/pokergr/ilika/
@@||athinorama.gr/adv/lmnts/stegi/*.swf
@@||athinorama.gr/adv/lmnts/earth/*.swf
@@||athinorama.gr/adv/lmnts/blank.gif
@@||athinorama.gr/adv/lmnts/disimata/*
@@||skaihd-f.akamaihd.net/z/advert/*
@@||xe.gr/property/recent_ads?*
@@||focuswebtv.gr/banners/ekpompes.swf?*
! Exceptions to element hiding
~agelioforos.gr##.side-ad
~athensmagazine.gr##.ad_wrapper
~aggeliestanea.gr##.adResult

View file

@ -0,0 +1,129 @@
{
"raw.githubusercontent.com/gorhill/httpswitchboard/master/assets/blacklist.txt": {
"title": "HTTP Switchboard"
},
"mirror1.malwaredomains.com/files/immortal_domains.txt": {
"title": "Long-lived malware domains"
},
"mirror1.malwaredomains.com/files/justdomains": {
"title": "Malware domains"
},
"pgl.yoyo.org/as/serverlist": {
"off": true,
"title": "Peter Lowes Ad server list"
},
"www.malwaredomainlist.com/hostslist/hosts.txt": {
"off": true,
"title": "Malware Domain List"
},
"hosts-file.net/ad-servers": {
"off": true,
"title": "hpHostss Ad and tracking servers (overzealous lately)"
},
"someonewhocares.org/hosts/hosts": {
"off": true,
"title": "Dan Pollocks hosts file"
},
"winhelp2002.mvps.org/hosts.txt": {
"off": true,
"title": "MVPS HOSTS"
},
"spam404bl.com/spam404scamlist.txt": {
"off": true,
"title": "Spam404"
},
"easylist-downloads.adblockplus.org/easylist.txt": {
"title": "EasyList"
},
"easylist-downloads.adblockplus.org/easylist_noelemhide.txt": {
"off": true,
"title": "EasyList without element hiding rules"
},
"easylist-downloads.adblockplus.org/easyprivacy.txt": {
"title": "EasyPrivacy"
},
"easylist-downloads.adblockplus.org/fanboy-annoyance.txt": {
"off": true,
"title": "Fanboys Annoyance List"
},
"www.fanboy.co.nz/enhancedstats.txt": {
"off": true,
"title": "Fanboys Enhanced Tracking List"
},
"easylist-downloads.adblockplus.org/easylistgermany.txt": {
"off": true,
"title": "EasyList Germany"
},
"easylist-downloads.adblockplus.org/easylistitaly.txt": {
"off": true,
"title": "EasyList Italy"
},
"easylist-downloads.adblockplus.org/easylistdutch.txt": {
"off": true,
"title": "EasyList Dutch"
},
"easylist-downloads.adblockplus.org/liste_fr.txt": {
"off": true,
"title": "EasyList Liste FR"
},
"easylist-downloads.adblockplus.org/advblock.txt": {
"off": true,
"title": "EasyList RU AdList (дополнение к EasyList)"
},
"easylist-downloads.adblockplus.org/easylistchina.txt": {
"off": true,
"title": "EasyList China (中文)"
},
"adblock-chinalist.googlecode.com/svn/trunk/adblock.txt": {
"off": true,
"title": "EasyList China (obsolete: to be removed)"
},
"adblock-plus-japanese-filter.googlecode.com/hg/abp_jp.txt": {
"off": true,
"title": "ABP Japanese filters (の日本用フィルタ)"
},
"margevicius.lt/AdBlockPlusLithuania.txt": {
"off": true,
"title": "Adblock Plus Lithuania"
},
"stanev.org/abp/adblock_bg.txt": {
"off": true,
"title": "Bulgarian Adblock list"
},
"indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt": {
"off": true,
"title": "ABPindo"
},
"liste-ar-adblock.googlecode.com/hg/Liste_AR.txt": {
"off": true,
"title": "Liste AR"
},
"adblock-czechoslovaklist.googlecode.com/svn/filters.txt": {
"off": true,
"title": "EasyList Czech and Slovak"
},
"raw.githubusercontent.com/adblockpolska/Adblock_PL_List/master/adblock_polska.txt": {
"off": true,
"title": "Adblock Polska"
},
"raw.githubusercontent.com/AdBlockPlusIsrael/EasyListHebrew/master/EasyListHebrew.txt": {
"off": true,
"title": "EasyList Hebrew"
},
"download.wiltteri.net/wiltteri.txt": {
"off": true,
"title": "Wiltteri"
},
"adblock.gardar.net/is.abp.txt": {
"off": true,
"title": "Icelandic ABP List"
},
"www.void.gr/kargig/void-gr-filters.txt": {
"off": true,
"title": "Greek AdBlock Filter"
},
"abp.mozilla-hispano.org/nauscopio/filtros.txt": {
"off": true,
"title": "Filtros Nauscopicos"
}
}

97
assets/update-3rdparties.sh Executable file
View file

@ -0,0 +1,97 @@
#!/bin/bash
#
# This script assumes a linux environment
TEMPFILE=/tmp/httpsb-asset
echo "*** HTTP Switchboard: updating remote assets..."
THIRDPARTY_REMOTEURLS=(
'http://mirror1.malwaredomains.com/files/immortal_domains.txt'
'http://mirror1.malwaredomains.com/files/justdomains'
'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=&mimetype=plaintext'
'http://www.malwaredomainlist.com/hostslist/hosts.txt'
'http://hosts-file.net/.%5Cad_servers.txt'
'http://someonewhocares.org/hosts/hosts'
'http://winhelp2002.mvps.org/hosts.txt'
'http://spam404bl.com/spam404scamlist.txt'
'http://publicsuffix.org/list/effective_tld_names.dat'
'https://easylist-downloads.adblockplus.org/easylist.txt'
'https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt'
'https://easylist-downloads.adblockplus.org/easyprivacy.txt'
'https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt'
'http://www.fanboy.co.nz/enhancedstats.txt'
'https://easylist-downloads.adblockplus.org/easylistgermany.txt'
'https://easylist-downloads.adblockplus.org/easylistitaly.txt'
'https://easylist-downloads.adblockplus.org/easylistdutch.txt'
'https://easylist-downloads.adblockplus.org/liste_fr.txt'
'https://easylist-downloads.adblockplus.org/advblock.txt'
'https://easylist-downloads.adblockplus.org/easylistchina.txt'
'http://adblock-chinalist.googlecode.com/svn/trunk/adblock.txt'
'https://adblock-plus-japanese-filter.googlecode.com/hg/abp_jp.txt'
'http://margevicius.lt/AdBlockPlusLithuania.txt'
'http://stanev.org/abp/adblock_bg.txt'
'http://indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt'
'http://liste-ar-adblock.googlecode.com/hg/Liste_AR.txt'
'http://adblock-czechoslovaklist.googlecode.com/svn/filters.txt'
'https://raw.githubusercontent.com/adblockpolska/Adblock_PL_List/master/adblock_polska.txt'
'https://raw.github.com/AdBlockPlusIsrael/EasyListHebrew/master/EasyListHebrew.txt'
'http://download.wiltteri.net/wiltteri.txt'
'http://adblock.gardar.net/is.abp.txt'
'http://www.void.gr/kargig/void-gr-filters.txt'
'http://abp.mozilla-hispano.org/nauscopio/filtros.txt'
)
THIRDPARTY_LOCALURLS=(
'thirdparties/mirror1.malwaredomains.com/files/immortal_domains.txt'
'thirdparties/mirror1.malwaredomains.com/files/justdomains'
'thirdparties/pgl.yoyo.org/as/serverlist'
'thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt'
'thirdparties/hosts-file.net/ad-servers'
'thirdparties/someonewhocares.org/hosts/hosts'
'thirdparties/winhelp2002.mvps.org/hosts.txt'
'thirdparties/spam404bl.com/spam404scamlist.txt'
'thirdparties/publicsuffix.org/list/effective_tld_names.dat'
'thirdparties/easylist-downloads.adblockplus.org/easylist.txt'
'thirdparties/easylist-downloads.adblockplus.org/easylist_noelemhide.txt'
'thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt'
'thirdparties/easylist-downloads.adblockplus.org/fanboy-annoyance.txt'
'thirdparties/www.fanboy.co.nz/enhancedstats.txt'
'thirdparties/easylist-downloads.adblockplus.org/easylistgermany.txt'
'thirdparties/easylist-downloads.adblockplus.org/easylistitaly.txt'
'thirdparties/easylist-downloads.adblockplus.org/easylistdutch.txt'
'thirdparties/easylist-downloads.adblockplus.org/liste_fr.txt'
'thirdparties/easylist-downloads.adblockplus.org/advblock.txt'
'thirdparties/easylist-downloads.adblockplus.org/easylistchina.txt'
'thirdparties/adblock-chinalist.googlecode.com/svn/trunk/adblock.txt'
'thirdparties/adblock-plus-japanese-filter.googlecode.com/hg/abp_jp.txt'
'thirdparties/margevicius.lt/AdBlockPlusLithuania.txt'
'thirdparties/stanev.org/abp/adblock_bg.txt'
'thirdparties/indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt'
'thirdparties/liste-ar-adblock.googlecode.com/hg/Liste_AR.txt'
'thirdparties/adblock-czechoslovaklist.googlecode.com/svn/filters.txt'
'thirdparties/raw.githubusercontent.com/adblockpolska/Adblock_PL_List/master/adblock_polska.txt'
'thirdparties/raw.github.com/AdBlockPlusIsrael/EasyListHebrew/master/EasyListHebrew.txt'
'thirdparties/download.wiltteri.net/wiltteri.txt'
'thirdparties/adblock.gardar.net/is.abp.txt'
'thirdparties/www.void.gr/kargig/void-gr-filters.txt'
'thirdparties/abp.mozilla-hispano.org/nauscopio/filtros.txt'
)
ENTRY_INDEX=0
for THIRDPARTY_REMOTEURL in ${THIRDPARTY_REMOTEURLS[@]}; do
THIRDPARTY_LOCALURL=${THIRDPARTY_LOCALURLS[ENTRY_INDEX]}
echo "*** Downloading" $THIRDPARTY_REMOTEURL
if wget -q -T 30 -O $TEMPFILE -- $THIRDPARTY_REMOTEURL; then
if [ -s $TEMPFILE ]; then
if ! cmp -s $TEMPFILE $THIRDPARTY_LOCALURL; then
echo " New version found: $THIRDPARTY_LOCALURL"
if [ "$1" != "dry" ]; then
mv $TEMPFILE $THIRDPARTY_LOCALURL
fi
fi
fi
fi
let ENTRY_INDEX+=1
done

15
assets/update-checksums.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/bash
#
# This script assumes a linux environment
echo "*** HTTP Switchboard: generating checksums.txt file..."
pushd ..
truncate -s 0 assets/checksums.txt
LIST="$(find assets/httpsb assets/thirdparties -type f)"
for ENTRY in $LIST; do
echo `md5sum $ENTRY` >> assets/checksums.txt
done
popd
echo "*** HTTP Switchboard: checksums updated."

13
assets/update-git.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
#
# This script assumes a linux environment
echo "*** HTTP Switchboard: git adding changed assets..."
git add --update --ignore-removal --ignore-errors ./*
echo "*** HTTP Switchboard: git committing assets..."
git commit -m 'update of third-party assets'
echo "*** HTTP Switchboard: git pushing assets to remote master..."
git push origin master
echo "*** HTTP Switchboard: git done."

0
assets/user/filters.txt Normal file
View file

29
background.html Normal file
View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html>
<head>
<title>µBlock</title>
</head>
<body>
<script src="lib/punycode.min.js"></script>
<script src="lib/publicsuffixlist.min.js"></script>
<script src="lib/yamd5.min.js"></script>
<script src="js/background.js"></script>
<script src="js/async.js"></script>
<script src="js/liquid-dict.js"></script>
<script src="js/utils.js"></script>
<script src="js/assets.js"></script>
<script src="js/asset-updater.js"></script>
<script src="js/abp-filters.js"></script>
<script src="js/abp-hide-filters.js"></script>
<script src="js/ublock.js"></script>
<script src="js/messaging.js"></script>
<script src="js/profiler.js"></script>
<script src="js/storage.js"></script>
<script src="js/pagestore.js"></script>
<script src="js/tab.js"></script>
<script src="js/traffic.js"></script>
<script src="js/uritools.js"></script>
<script src="js/messaging-handlers.js"></script>
<script src="js/start.js"></script>
</body>
</html>

14
css/common.css Normal file
View file

@ -0,0 +1,14 @@
@font-face {
font-family: 'FontAwesome';
src: url('fonts/fontawesome-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
.fa {
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
vertical-align: baseline;
display: inline-block;
}

67
css/dashboard-common.css Normal file
View file

@ -0,0 +1,67 @@
body {
margin: 0;
padding: 0 0.5em 5em 0.5em;
font: 15px sans-serif;
}
h2, h3 {
margin: 1em 0;
font-family: sans-serif;
}
h2 {
font-size: 18px;
}
h2:nth-of-type(1) {
margin-top: 0;
}
h3 {
font-size: 16px;
}
h2 + * {
margin: 0 0 0 1em;
padding: 0;
}
a {
text-decoration: none;
}
.para {
width: 40em;
}
.whatisthis {
margin: 0 0 0 8px;
border: 0;
padding: 0 0 4px 0;
width: 16px;
height: 16px;
background: url('/img/help16.png') no-repeat right bottom 1px;
cursor: pointer;
opacity: 0.5;
}
.whatisthis:hover {
opacity: 1.0;
}
.whatisthis-expandable {
margin: 0.5em 0 1em 1.25em;
padding: 0.5em;
display: none;
border: 1px dotted black;
background-color: #F8F8F8;
}
.whatisthis-expandable > p {
margin-top: 1em;
margin-bottom: 0;
}
.whatisthis-expandable > p:first-child {
margin-top: 0;
}
.whatisthis-expandable.whatisthis-expanded {
display: block;
}
.warn {
margin: 0;
padding: 5px;
background-color: #FEDAE0;
}

BIN
css/fonts/fontawesome-webfont.ttf Executable file

Binary file not shown.

91
dashboard.html Normal file
View file

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>µBlock — Dashboard</title>
<style>
body {
margin: 0;
border: 0;
padding: 0;
font: 15px httpsb,sans-serif;
position: relative;
width: 100vw;
height: 100vh;
overflow: hidden;
}
#dashboard-nav {
margin: 0;
border: 0;
padding: 0;
position: absolute;
top: 0;
width: 100vw;
height: 50px;
z-index: 10;
}
#dashboard-nav-widgets {
margin: 0;
border-bottom: 1px solid #ccc;
padding: 4px 0 3px 0;
white-space: nowrap;
background-color: white;
}
#dashboard-nav-widgets span {
padding: 0 0.5em;
font-size: larger;
}
.tabButton {
margin: 0;
border: 1px solid #ccc;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
padding: 4px;
color: black;
background-color: #eee;
font: inherit;
cursor: pointer;
text-decoration: none;
}
.tabButton:focus {
outline: 0;
}
.tabButton:active,.tabButton:visited {
color: inherited;
}
.tabButton.selected {
border-bottom: 1px solid white;
background-color: white;
}
iframe {
margin: 0;
border: 0;
padding: 0;
background-color: transparent;
overflow: auto;
position: absolute;
top: 50px;
width: 100%;
height: calc(100% - 50px);
}
</style>
<link href='css/common.css' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="dashboard-nav">
<div id="dashboard-nav-widgets">
<span>µBlock</span>
<a class="tabButton" id="thirdparty-filters" href="#thirdparty-filters" data-dashboard-panel-url="3p-filters.html" data-i18n="3pPageName"></a>
<a class="tabButton" id="firstparty-filters" href="#firstparty-filters" data-dashboard-panel-url="1p-filters.html" data-i18n="1pPageName"></a>
<a class="tabButton" id="about" href="#about" data-dashboard-panel-url="about.html" data-i18n="aboutPageName"></a>
</div>
</div>
<iframe src=""></iframe>
<script src="lib/jquery-2.min.js"></script>
<script src="js/i18n.js"></script>
<script src="js/dashboard.js"></script>
</body>
</html>

11
dist/README.md vendored Normal file
View file

@ -0,0 +1,11 @@
## INSTALL
- Download and unzip `ublock_{version}.zip` (latest version desirable).
- Go to chromium/chrome *Extensions*.
- Click to check *Developer mode*.
- Click *Load unpacked extension...*.
- In the file selector dialog:
- Select the directory `ublock` which was created when you unzipped `ublock.zip`.
- Click *Open*.
The extension will now be available in your chromium/chrome browser.

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
img/browsericons/icon19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
img/browsericons/icon38.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

BIN
img/help16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

BIN
img/icon_128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
img/icon_16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

141
js/1p-filters.js Normal file
View file

@ -0,0 +1,141 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, $ */
/******************************************************************************/
(function() {
/******************************************************************************/
var cachedUserFilters = '';
/******************************************************************************/
messaging.start('1p-filters.js');
/******************************************************************************/
// This is to give a visual hint that the content of user blacklist has changed.
function userFiltersChanged() {
$('#userFiltersApply')
.attr(
'disabled',
$('#userFilters').val().trim() === cachedUserFilters
);
}
/******************************************************************************/
function renderUserFilters() {
var onRead = function(details) {
if ( details.error ) {
return;
}
cachedUserFilters = details.content.trim();
$('#userFilters').val(details.content);
};
messaging.ask({ what: 'readUserFilters' }, onRead);
}
/******************************************************************************/
function allFiltersApplyHandler() {
messaging.tell({ what: 'reloadAllFilters' });
$('#userFiltersApply').attr('disabled', true );
}
/******************************************************************************/
function appendToUserFiltersFromFile() {
var input = $('<input />').attr({
type: 'file',
accept: 'text/plain'
});
var fileReaderOnLoadHandler = function() {
var textarea = $('#userFilters');
textarea.val(textarea.val() + '\n' + this.result);
userFiltersChanged();
};
var filePickerOnChangeHandler = function() {
$(this).off('change', filePickerOnChangeHandler);
var file = this.files[0];
if ( !file ) {
return;
}
if ( file.type.indexOf('text') !== 0 ) {
return;
}
var fr = new FileReader();
fr.onload = fileReaderOnLoadHandler;
fr.readAsText(file);
input.off('change', filePickerOnChangeHandler);
};
input.on('change', filePickerOnChangeHandler);
input.trigger('click');
}
/******************************************************************************/
function exportUserFiltersToFile() {
chrome.downloads.download({
'url': 'data:text/plain,' + encodeURIComponent($('#userFilters').val()),
'filename': 'my-ublock-filters.txt',
'saveAs': true
});
}
/******************************************************************************/
function userFiltersApplyHandler() {
var onWritten = function(details) {
if ( details.error ) {
return;
}
cachedUserFilters = details.content.trim();
userFiltersChanged();
allFiltersApplyHandler();
};
var request = {
what: 'writeUserFilters',
content: $('#userFilters').val()
};
messaging.ask(request, onWritten);
}
/******************************************************************************/
$(function() {
// Handle user interaction
$('#importUserFiltersFromFile').on('click', appendToUserFiltersFromFile);
$('#exportUserFiltersToFile').on('click', exportUserFiltersToFile);
$('#userFilters').on('input propertychange', userFiltersChanged);
$('#userFiltersApply').on('click', userFiltersApplyHandler);
renderUserFilters();
});
/******************************************************************************/
})();

235
js/3p-filters.js Normal file
View file

@ -0,0 +1,235 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, $ */
/******************************************************************************/
(function() {
/******************************************************************************/
var userListName = chrome.i18n.getMessage('1pPageName');
var cachedUserUbiquitousBlacklistedHosts = '';
var cachedUserUbiquitousWhitelistedHosts = '';
var selectedBlacklistsHash = '';
/******************************************************************************/
messaging.start('lists.js');
var onMessage = function(msg) {
switch ( msg.what ) {
case 'loadUbiquitousBlacklistCompleted':
renderBlacklists();
selectedBlacklistsChanged();
break;
default:
break;
}
};
messaging.listen(onMessage);
/******************************************************************************/
function getµb() {
return chrome.extension.getBackgroundPage().µBlock;
}
/******************************************************************************/
function renderNumber(value) {
// TODO: localization
if ( +value > 1000 ) {
value = value.toString();
var i = value.length - 3;
while ( i > 0 ) {
value = value.slice(0, i) + ',' + value.slice(i);
i -= 3;
}
}
return value;
}
/******************************************************************************/
// TODO: get rid of background page dependencies
function renderBlacklists() {
// empty list first
$('#blacklists .blacklistDetails').remove();
var µb = getµb();
$('#3pListsOfBlockedHostsPrompt2').text(
chrome.i18n.getMessage('3pListsOfBlockedHostsPrompt2')
.replace('{{ubiquitousBlacklistCount}}', renderNumber(µb.abpFilters.getFilterCount()))
);
// Assemble a pretty blacklist name if possible
var prettifyListName = function(blacklistTitle, blacklistHref) {
if ( blacklistHref === µb.userFiltersPath ) {
return userListName;
}
if ( !blacklistTitle ) {
return blacklistHref;
}
if ( blacklistHref.indexOf('assets/thirdparties/') !== 0 ) {
return blacklistTitle;
}
var matches = blacklistHref.match(/^assets\/thirdparties\/([^\/]+)/);
if ( matches === null || matches.length !== 2 ) {
return blacklistTitle;
}
var hostname = matches[1];
var domain = µb.URI.domainFromHostname(hostname);
if ( domain === '' ) {
return blacklistTitle;
}
var html = [
blacklistTitle,
' <i>(<a href="http://',
hostname,
'" target="_blank">',
domain,
'</a>)</i>'
];
return html.join('');
};
var blacklists = µb.remoteBlacklists;
var ul = $('#blacklists');
var keys = Object.keys(blacklists);
var i = keys.length;
var blacklist, blacklistHref;
var liTemplate = $('#blacklistTemplate .blacklistDetails').first();
var li, child, text;
while ( i-- ) {
blacklistHref = keys[i];
blacklist = blacklists[blacklistHref];
li = liTemplate.clone();
child = $('input', li);
child.prop('checked', !blacklist.off);
child = $('a', li);
child.attr('href', encodeURI(blacklistHref));
child.html(prettifyListName(blacklist.title, blacklistHref));
child = $('span', li);
text = child.text()
.replace('{{used}}', !blacklist.off && !isNaN(+blacklist.entryUsedCount) ? renderNumber(blacklist.entryUsedCount) : '0')
.replace('{{total}}', !isNaN(+blacklist.entryCount) ? renderNumber(blacklist.entryCount) : '?')
;
child.text(text);
ul.prepend(li);
}
$('#parseAllABPHideFilters').attr('checked', µb.userSettings.parseAllABPHideFilters === true);
$('#ubiquitousParseAllABPHideFiltersPrompt2').text(
chrome.i18n.getMessage("listsParseAllABPHideFiltersPrompt2")
.replace('{{abpHideFilterCount}}', renderNumber(µb.abpHideFilters.getFilterCount()))
);
selectedBlacklistsHash = getSelectedBlacklistsHash();
}
/******************************************************************************/
// Create a hash so that we know whether the selection of preset blacklists
// has changed.
function getSelectedBlacklistsHash() {
var hash = '';
var inputs = $('#blacklists .blacklistDetails > input');
var i = inputs.length;
var entryHash;
while ( i-- ) {
entryHash = $(inputs[i]).prop('checked').toString();
hash += entryHash;
}
// Factor in whether ABP filters are to be processed
hash += $('#parseAllABPHideFilters').prop('checked').toString();
return hash;
}
/******************************************************************************/
// This is to give a visual hint that the selection of blacklists has changed.
function selectedBlacklistsChanged() {
$('#blacklistsApply').attr(
'disabled',
getSelectedBlacklistsHash() === selectedBlacklistsHash
);
}
/******************************************************************************/
function blacklistsApplyHandler() {
var newHash = getSelectedBlacklistsHash();
if ( newHash === selectedBlacklistsHash ) {
return;
}
// Reload blacklists
var switches = [];
var lis = $('#blacklists .blacklistDetails');
var i = lis.length;
var path;
while ( i-- ) {
path = $(lis[i]).children('a').attr('href');
switches.push({
location: path,
off: $(lis[i]).children('input').prop('checked') === false
});
}
messaging.tell({
what: 'reloadAllFilters',
switches: switches
});
$('#blacklistsApply').attr('disabled', true );
}
/******************************************************************************/
function abpHideFiltersCheckboxChanged() {
messaging.tell({
what: 'userSettings',
name: 'parseAllABPHideFilters',
value: $(this).is(':checked')
});
selectedBlacklistsChanged();
}
/******************************************************************************/
$(function() {
// Handle user interaction
$('#blacklists').on('change', '.blacklistDetails', selectedBlacklistsChanged);
$('#blacklistsApply').on('click', blacklistsApplyHandler);
$('#parseAllABPHideFilters').on('change', abpHideFiltersCheckboxChanged);
renderBlacklists();
});
/******************************************************************************/
})();

122
js/about.js Normal file
View file

@ -0,0 +1,122 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, $ */
/******************************************************************************/
$(function() {
/******************************************************************************/
var updateList = {};
var assetListSwitches = ['o', 'o', 'o'];
var commitHistoryURLPrefix = 'https://github.com/gorhill/ublock/commits/master/';
/******************************************************************************/
var setAssetListClassBit = function(bit, state) {
assetListSwitches[assetListSwitches.length-1-bit] = !state ? 'o' : 'x';
$('#assetList')
.removeClass()
.addClass(assetListSwitches.join(''));
};
/******************************************************************************/
var renderAssetList = function(details) {
var dirty = false;
var paths = Object.keys(details.list).sort();
if ( paths.length > 0 ) {
$('#assetList .assetEntry').remove();
var assetTable = $('#assetList table');
var i = 0;
var path, status, html;
while ( path = paths[i++] ) {
status = details.list[path].status;
dirty = dirty || status !== 'Unchanged';
html = [];
html.push('<tr class="assetEntry ' + status.toLowerCase().replace(/ +/g, '-') + '">');
html.push('<td>');
html.push('<a href="' + commitHistoryURLPrefix + path + '">');
html.push(path.replace(/^(assets\/[^/]+\/)(.+)$/, '$1<b>$2</b>'));
html.push('</a>');
html.push('<td>');
html.push(chrome.i18n.getMessage('aboutAssetsUpdateStatus' + status));
assetTable.append(html.join(''));
}
$('#assetList a').attr('target', '_blank');
updateList = details.list;
}
setAssetListClassBit(0, paths.length !== 0);
setAssetListClassBit(1, dirty);
setAssetListClassBit(2, false);
};
/******************************************************************************/
var updateAssets = function() {
setAssetListClassBit(2, true);
var onDone = function(details) {
if ( details.changedCount !== 0 ) {
messaging.tell({ what: 'loadUpdatableAssets' });
}
};
messaging.ask({ what: 'launchAssetUpdater', list: updateList }, onDone);
};
/******************************************************************************/
var updateAssetsList = function() {
messaging.ask({ what: 'getAssetUpdaterList' }, renderAssetList);
};
/******************************************************************************/
// Updating all assets could be done from elsewhere and if so the
// list here needs to be updated.
var onAnnounce = function(msg) {
switch ( msg.what ) {
case 'allLocalAssetsUpdated':
updateAssetsList();
break;
default:
break;
}
};
messaging.start('about.js');
messaging.listen(onAnnounce);
/******************************************************************************/
$('#aboutVersion').html(chrome.runtime.getManifest().version);
$('#aboutAssetsUpdateButton').on('click', updateAssets);
/******************************************************************************/
updateAssetsList();
/******************************************************************************/
});

1466
js/abp-filters.js Normal file

File diff suppressed because it is too large Load diff

681
js/abp-hide-filters.js Normal file
View file

@ -0,0 +1,681 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* jshint bitwise: false */
/* global µBlock */
/******************************************************************************/
µBlock.abpHideFilters = (function(){
/******************************************************************************/
var µb = µBlock;
var pageHostname = '';
//var filterTestCount = 0;
//var bucketTestCount = 0;
/******************************************************************************/
/*
var histogram = function(label, buckets) {
var h = [],
bucket;
for ( var k in buckets ) {
if ( buckets.hasOwnProperty(k) === false ) {
continue;
}
bucket = buckets[k];
h.push({
k: k,
n: bucket instanceof FilterBucket ? bucket.filters.length : 1
});
}
console.log('Histogram %s', label);
var total = h.length;
h.sort(function(a, b) { return b.n - a.n; });
// Find indices of entries of interest
var target = 3;
for ( var i = 0; i < total; i++ ) {
if ( h[i].n === target ) {
console.log('\tEntries with only %d filter(s) start at index %s (key = "%s")', target, i, h[i].k);
target -= 1;
}
}
h = h.slice(0, 50);
h.forEach(function(v) {
console.log('\tkey="%s" count=%d', v.k, v.n);
});
console.log('\tTotal buckets count: %d', total);
};
*/
/******************************************************************************/
// Pure id- and class-based filters
// Examples:
// #A9AdsMiddleBoxTop
// .AD-POST
var FilterPlain = function(s) {
this.s = s;
};
FilterPlain.prototype.retrieve = function(s, out) {
if ( s === this.s ) {
out.push(this.s);
}
};
/******************************************************************************/
// Id- and class-based filters with extra selector stuff following.
// Examples:
// #center_col > div[style="font-size:14px;margin-right:0;min-height:5px"] ...
// #adframe:not(frameset)
// .l-container > #fishtank
var FilterPlainMore = function(s) {
this.s = s;
};
FilterPlainMore.prototype.retrieve = function(s, out) {
if ( s === this.s.slice(0, s.length) ) {
out.push(this.s);
}
};
/******************************************************************************/
// Any selector specific to a hostname
// Examples:
// search.snapdo.com###ABottomD
// facebook.com##.-cx-PRIVATE-fbAdUnit__root
// sltrib.com###BLContainer + div[style="height:90px;"]
// myps3.com.au##.Boxer[style="height: 250px;"]
// lindaikeji.blogspot.com##a > img[height="600"]
// japantimes.co.jp##table[align="right"][width="250"]
// mobilephonetalk.com##[align="center"] > b > a[href^="http://tinyurl.com/"]
var FilterHostname = function(s, hostname) {
this.s = s;
this.hostname = hostname;
};
FilterHostname.prototype.retrieve = function(s, out) {
if ( pageHostname.slice(-this.hostname.length) === this.hostname ) {
out.push(this.s);
}
};
/******************************************************************************/
/******************************************************************************/
// TODO: evaluate the gain (if any) from avoiding the use of an array for when
// there are only two filters (or three, etc.). I suppose there is a specific
// number of filters below which using an array is more of an overhead than
// using a couple of property members.
// i.e. FilterBucket2, FilterBucket3, FilterBucketN.
var FilterBucket = function(a, b) {
this.filters = [a, b];
};
FilterBucket.prototype.add = function(a) {
this.filters.push(a);
};
FilterBucket.prototype.retrieve = function(s, out) {
var i = this.filters.length;
//filterTestCount += i - 1;
while ( i-- ) {
this.filters[i].retrieve(s, out);
}
};
/******************************************************************************/
/******************************************************************************/
var FilterParser = function() {
this.s = '';
this.prefix = '';
this.suffix = '';
this.anchor = 0;
this.filterType = '#';
this.hostnames = [];
this.invalid = false;
this.unsupported = false;
this.reParser = /^\s*([^#]*)(##|#@#)(.+)\s*$/;
this.rePlain = /^([#.][\w-]+)/;
this.rePlainMore = /^[#.][\w-]+[^\w-]/;
this.reElement = /^[a-z]/i;
};
/******************************************************************************/
FilterParser.prototype.reset = function() {
this.s = '';
this.prefix = '';
this.suffix = '';
this.anchor = '';
this.filterType = '#';
this.hostnames = [];
this.invalid = false;
return this;
};
/******************************************************************************/
FilterParser.prototype.parse = function(s) {
// important!
this.reset();
var matches = this.reParser.exec(s);
if ( matches === null || matches.length !== 4 ) {
this.invalid = true;
return this;
}
// Remember original string
this.s = s;
this.prefix = matches[1];
this.anchor = matches[2];
this.suffix = matches[3];
// 2014-05-23:
// https://github.com/gorhill/httpswitchboard/issues/260
// Any sequence of `#` longer than one means the line is not a valid
// cosmetic filter.
if ( this.suffix.indexOf('##') >= 0 ) {
this.invalid = true;
return this;
}
this.filterType = this.anchor.charAt(1);
if ( this.prefix !== '' ) {
this.hostnames = this.prefix.split(/\s*,\s*/);
}
return this;
};
/******************************************************************************/
FilterParser.prototype.isPlainMore = function() {
return this.rePlainMore.test(this.suffix);
};
/******************************************************************************/
FilterParser.prototype.isElement = function() {
return this.reElement.test(this.suffix);
};
/******************************************************************************/
FilterParser.prototype.extractPlain = function() {
var matches = this.rePlain.exec(this.suffix);
if ( matches && matches.length === 2 ) {
return matches[1];
}
return '';
};
/******************************************************************************/
/******************************************************************************/
var FilterContainer = function() {
this.filterParser = new FilterParser();
this.acceptedCount = 0;
this.processedCount = 0;
this.filters = {};
this.hideUnfiltered = [];
this.donthideUnfiltered = [];
this.rejected = [];
};
/******************************************************************************/
// Reset all, thus reducing to a minimum memory footprint of the context.
FilterContainer.prototype.reset = function() {
this.filterParser.reset();
this.acceptedCount = 0;
this.processedCount = 0;
this.filters = {};
this.hideUnfiltered = [];
this.donthideUnfiltered = [];
this.rejected = [];
};
/******************************************************************************/
FilterContainer.prototype.add = function(s) {
var parsed = this.filterParser.parse(s);
if ( parsed.invalid ) {
return false;
}
this.processedCount += 1;
//if ( s === 'mail.google.com##.nH.adC > .nH > .nH > .u5 > .azN' ) {
// debugger;
//}
// hostname-based filters: with a hostname, narrowing is good enough, no
// need to further narrow.
if ( parsed.hostnames.length ) {
return this.addHostnameFilter(parsed);
}
// no specific hostname, narrow using class or id.
var selectorType = parsed.suffix.charAt(0);
if ( selectorType === '#' || selectorType === '.' ) {
return this.addPlainFilter(parsed);
}
// no specific hostname, no class, no id.
// TO IMPLEMENT
// My idea of implementation so far is to return a pre-built container
// of these very generic filter, and let the content script sort out
// what it needs from it. Filters in that category are mostly
// `a[href^="..."]` kind of filters.
// Content script side, the unsorted container of selectors could be used
// in a querySelectorAll() to figure which rules apply (if any), or they
// could just all be injected undiscriminately (not good).
if ( parsed.filterType === '#' ) {
this.hideUnfiltered.push(parsed.suffix);
} else {
this.donthideUnfiltered.push(parsed.suffix);
}
this.acceptedCount += 1;
return true;
};
/******************************************************************************/
FilterContainer.prototype.chunkify = function(selectors) {
var chunkified = [], chunk;
for (;;) {
chunk = selectors.splice(0, 10);
if ( chunk.length === 0 ) {
break;
}
chunkified.push(chunk.join(','));
}
return chunkified;
};
/******************************************************************************/
FilterContainer.prototype.freeze = function() {
this.hideUnfiltered = this.chunkify(this.hideUnfiltered);
this.donthideUnfiltered = this.chunkify(this.donthideUnfiltered);
this.filterParser.reset();
//console.log('µBlock> adp-hide-filters.js: %d filters accepted', this.acceptedCount);
//console.log('µBlock> adp-hide-filters.js: %d filters processed', this.processedCount);
//console.log('µBlock> adp-hide-filters.js: coverage is %s%', (this.acceptedCount * 100 / this.processedCount).toFixed(1));
//console.log('µBlock> adp-hide-filters.js: unfiltered hide selectors:', this.hideUnfiltered);
//console.log('µBlock> adp-hide-filters.js: unfiltered dont hide selectors:', this.donthideUnfiltered);
//console.log('µBlock> adp-hide-filters.js: rejected selectors:', this.rejected);
// histogram('allFilters', this.filters);
};
/******************************************************************************/
// Is
// 3 unicode chars
// | | | |
//
// 00000000 TTTTTTTT PP PP PP PP PP PP PP PP SS SS SS SS SS SS SS SS
// | | |
// | | |
// | | |
// | | ls 2-bit of 8 suffix chars
// | |
// | +-- ls 2-bit of 8 prefix chars
// |
// |
// +-- filter type ('#'=hide '@'=unhide)
//
var makePrefixHash = function(type, prefix) {
// Ref: Given a URL, returns a unique 4-character long hash string
// Based on: FNV32a
// http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-reference-source
// The rest is custom, suited for µBlock.
var len = prefix.length;
var i2 = len >> 1;
var i4 = len >> 2;
var i8 = len >> 3;
var hint = (0x811c9dc5 ^ prefix.charCodeAt(0)) >>> 0;
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i4);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i4+i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i2);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i2+i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(i2+i4);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= prefix.charCodeAt(len-1);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
return String.fromCharCode(type.charCodeAt(0), hint & 0xFFFF, 0);
};
var makeSuffixHash = function(type, suffix) {
var len = suffix.length;
var i2 = len >> 1;
var i4 = len >> 2;
var i8 = len >> 3;
var hint = (0x811c9dc5 ^ suffix.charCodeAt(0)) >>> 0;
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i4);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i4+i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i2);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i2+i8);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(i2+i4);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
hint ^= suffix.charCodeAt(len-1);
hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24);
hint >>>= 0;
return String.fromCharCode(type.charCodeAt(0), 0, hint & 0x0FFF);
};
/**
Histogram for above hash generator:
Histogram allFilters
Entries with only 3 filter(s) start at index 2706 (key = "#ꍵ")
Entries with only 2 filter(s) start at index 4349 (key = "#냶")
Entries with only 1 filter(s) start at index 6896 (key = "#퀛")
key="#싣" count=141
key="#隁" count=57
key="#Ꚇ" count=48
key="#" count=45
key="#캃" count=36
key="#력" count=33
key="#끻" count=30
key="#" count=26
key="#" count=25
key="#Ꮳ" count=24
key="#鵲" count=23
key="#䙇" count=20
key="#ḇ" count=19
key="#睅" count=19
key="#㔽" count=19
key="#뻧" count=18
key="#䕀" count=18
key="#퉫" count=17
key="#筙" count=17
key="#㮰" count=17
key="#鯛" count=16
key="#꛿" count=16
key="#꣱" count=16
key="#ü" count=16
key="#告" count=16
key="#╡" count=16
key="#㰁" count=16
key="#৹" count=16
key="#镳" count=15
key="#碇" count=15
key="#৾" count=15
key="#貿" count=15
key="#š" count=15
key="#" count=15
key="#" count=14
key="#ຏ" count=14
key="#낶" count=14
key="#瑻" count=14
key="#ৡ" count=14
key="#" count=13
key="#ᯋ" count=13
key="#⼒" count=13
key="#腫" count=13
key="#겚" count=13
key="#耏" count=13
key="#匋" count=13
key="#튦" count=13
key="#ﰹ" count=13
key="#㭴" count=13
key="#" count=13
Total buckets count: 12098
*/
/******************************************************************************/
FilterContainer.prototype.addPlainFilter = function(parsed) {
// Verify whether the plain selector is followed by extra selector stuff
if ( parsed.isPlainMore() ) {
return this.addPlainMoreFilter(parsed);
}
var f = new FilterPlain(parsed.suffix);
var hash = makeSuffixHash(parsed.filterType, parsed.suffix);
this.addFilterEntry(hash, f);
this.acceptedCount += 1;
};
/******************************************************************************/
FilterContainer.prototype.addPlainMoreFilter = function(parsed) {
var selectorSuffix = parsed.extractPlain();
if ( selectorSuffix === '' ) {
return;
}
var f = new FilterPlainMore(parsed.suffix);
var hash = makeSuffixHash(parsed.filterType, selectorSuffix);
this.addFilterEntry(hash, f);
this.acceptedCount += 1;
};
/******************************************************************************/
// rhill 2014-05-20: When a domain exists, just specify a generic selector.
FilterContainer.prototype.addHostnameFilter = function(parsed) {
var µburi = µBlock.URI;
var f, hash;
var hostnames = parsed.hostnames;
var i = hostnames.length, hostname;
while ( i-- ) {
hostname = hostnames[i];
if ( !hostname ) {
continue;
}
f = new FilterHostname(parsed.suffix, hostname);
hash = makePrefixHash(parsed.filterType, µburi.domainFromHostname(hostname));
this.addFilterEntry(hash, f);
}
this.acceptedCount += 1;
};
/******************************************************************************/
FilterContainer.prototype.addFilterEntry = function(hash, f) {
var bucket = this.filters[hash];
if ( bucket === undefined ) {
this.filters[hash] = f;
} else if ( bucket instanceof FilterBucket ) {
bucket.add(f);
} else {
this.filters[hash] = new FilterBucket(bucket, f);
}
};
/******************************************************************************/
FilterContainer.prototype.retrieveGenericSelectors = function(request) {
if ( µb.userSettings.parseAllABPHideFilters !== true ) {
return;
}
if ( !request.selectors ) {
return;
}
//quickProfiler.start('FilterContainer.retrieve()');
//filterTestCount = 0;
//bucketTestCount = 0;
var r = {
hide: [],
donthide: [],
hideUnfiltered: [],
donthideUnfiltered: []
};
var hash, bucket;
var hideSelectors = r.hide;
var selectors = request.selectors;
var i = selectors.length;
var selector;
while ( i-- ) {
selector = selectors[i];
if ( !selector ) {
continue;
}
hash = makeSuffixHash('#', selector);
if ( bucket = this.filters[hash] ) {
//bucketTestCount += 1;
//filterTestCount += 1;
bucket.retrieve(selector, hideSelectors);
}
}
r.hideUnfiltered = this.hideUnfiltered;
r.donthideUnfiltered = this.donthideUnfiltered;
//quickProfiler.stop();
/*
console.log(
'µBlock> abp-hide-filters.js: "%s"\n\t%d selectors in => %d/%d filters/buckets tested => %d selectors out',
url,
inSelectors.length,
//filterTestCount,
//bucketTestCount,
hideSelectors.length + donthideSelectors.length
);
*/
return r;
};
/******************************************************************************/
FilterContainer.prototype.retrieveDomainSelectors = function(request) {
if ( µb.userSettings.parseAllABPHideFilters !== true ) {
return;
}
if ( !request.locationURL ) {
return;
}
//quickProfiler.start('FilterContainer.retrieve()');
//filterTestCount = 0;
//bucketTestCount = 0;
var hostname = pageHostname = µb.URI.hostnameFromURI(request.locationURL);
var r = {
domain: µb.URI.domainFromHostname(hostname),
hide: [],
donthide: []
};
var bucket;
var hash = makePrefixHash('#', r.domain);
if ( bucket = this.filters[hash] ) {
//bucketTestCount += 1;
//filterTestCount += 1;
bucket.retrieve(null, r.hide);
}
hash = makePrefixHash('@', r.domain);
if ( bucket = this.filters[hash] ) {
//bucketTestCount += 1;
//filterTestCount += 1;
bucket.retrieve(null, r.donthide);
}
//quickProfiler.stop();
/*
console.log(
'µBlock> abp-hide-filters.js: "%s"\n\t%d selectors in => %d/%d filters/buckets tested => %d selectors out',
url,
inSelectors.length,
//filterTestCount,
//bucketTestCount,
hideSelectors.length + donthideSelectors.length
);
*/
return r;
};
/******************************************************************************/
FilterContainer.prototype.getFilterCount = function() {
return this.acceptedCount;
};
/******************************************************************************/
return new FilterContainer();
/******************************************************************************/
})();
/******************************************************************************/

224
js/asset-updater.js Normal file
View file

@ -0,0 +1,224 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
// Asset update manager
µBlock.assetUpdater = (function() {
/******************************************************************************/
var getUpdateList = function(callback) {
var localChecksumsText = '';
var remoteChecksumsText = '';
var compareChecksums = function() {
var parseChecksumsText = function(text) {
var result = {};
var lines = text.split(/\n+/);
var i = lines.length;
var fields;
while ( i-- ) {
fields = lines[i].trim().split(/\s+/);
if ( fields.length !== 2 ) {
continue;
}
result[fields[1]] = fields[0];
}
return result;
};
if ( remoteChecksumsText === 'Error' || localChecksumsText === 'Error' ) {
remoteChecksumsText = localChecksumsText = '';
}
var localAssetChecksums = parseChecksumsText(localChecksumsText);
var remoteAssetChecksums = parseChecksumsText(remoteChecksumsText);
var toUpdate = {};
var path;
for ( path in remoteAssetChecksums ) {
if ( !remoteAssetChecksums.hasOwnProperty(path) ) {
continue;
}
if ( localAssetChecksums[path] === undefined ) {
toUpdate[path] = {
status: 'Added',
remoteChecksum: remoteAssetChecksums[path],
localChecksum: ''
};
continue;
}
if ( localAssetChecksums[path] === remoteAssetChecksums[path] ) {
toUpdate[path] = {
status: 'Unchanged',
remoteChecksum: remoteAssetChecksums[path],
localChecksum: localAssetChecksums[path]
};
continue;
}
toUpdate[path] = {
status: 'Changed',
remoteChecksum: remoteAssetChecksums[path],
localChecksum: localAssetChecksums[path]
};
}
for ( path in localAssetChecksums ) {
if ( !localAssetChecksums.hasOwnProperty(path) ) {
continue;
}
if ( remoteAssetChecksums[path] === undefined ) {
toUpdate[path] = {
status: 'Removed',
remoteChecksum: '',
localChecksum: localAssetChecksums[path]
};
}
}
callback({ 'list': toUpdate });
};
var validateChecksums = function(details) {
if ( details.error || details.content === '' ) {
return 'Error';
}
if ( /^(?:[0-9a-f]{32}\s+\S+(\s+|$))+/.test(details.content) ) {
return details.content;
}
return 'Error';
};
var onLocalChecksumsLoaded = function(details) {
localChecksumsText = validateChecksums(details);
if ( remoteChecksumsText !== '' ) {
compareChecksums();
}
};
var onRemoteChecksumsLoaded = function(details) {
remoteChecksumsText = validateChecksums(details);
if ( localChecksumsText !== '' ) {
compareChecksums();
}
};
µBlock.assets.getRemote('assets/checksums.txt', onRemoteChecksumsLoaded);
µBlock.assets.get('assets/checksums.txt', onLocalChecksumsLoaded);
};
/******************************************************************************/
// If `list` is null, it will be fetched internally.
var update = function(list, callback) {
var assetChangedCount = 0;
var assetProcessedCount;
var updatedAssetChecksums = [];
var onCompleted = function() {
var details = {
what: 'allLocalAssetsUpdated',
changedCount: assetChangedCount
};
callback(details);
µBlock.messaging.announce(details);
};
var doCountdown = function() {
assetProcessedCount -= 1;
if ( assetProcessedCount > 0 ) {
return;
}
µBlock.assets.put(
'assets/checksums.txt',
updatedAssetChecksums.join('\n'),
onCompleted
);
chrome.storage.local.set({ 'assetsUpdateTimestamp': Date.now() });
};
var assetUpdated = function(details) {
var path = details.path;
var entry = list[path];
if ( details.error ) {
updatedAssetChecksums.push(entry.localChecksum + ' ' + path);
} else {
updatedAssetChecksums.push(entry.remoteChecksum + ' ' + path);
assetChangedCount += 1;
}
doCountdown();
};
var processList = function() {
assetProcessedCount = Object.keys(list).length;
if ( assetProcessedCount === 0 ) {
onCompleted();
return;
}
var entry;
var details = { path: '', md5: '' };
for ( var path in list ) {
if ( list.hasOwnProperty(path) === false ) {
continue;
}
entry = list[path];
if ( entry.status === 'Added' || entry.status === 'Changed' ) {
details.path = path;
details.md5 = entry.remoteChecksum;
µBlock.assets.update(details, assetUpdated);
continue;
}
if ( entry.status === 'Unchanged' ) {
updatedAssetChecksums.push(entry.localChecksum + ' ' + path);
}
doCountdown();
}
};
var listLoaded = function(details) {
list = details.list;
processList();
};
if ( list ) {
processList();
} else {
getUpdateList(listLoaded);
}
};
/******************************************************************************/
// Export API
return {
'getList': getUpdateList,
'update': update
};
/******************************************************************************/
})();
/******************************************************************************/

415
js/assets.js Normal file
View file

@ -0,0 +1,415 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/*******************************************************************************
Assets
Read:
If in cache
Use cache
If not in cache
Use local
Update:
Use remote
Save in cache
Import:
Use textarea
Save in cache [user directory]
File system structure:
assets
ublock
...
thirdparties
...
user
blacklisted-hosts.txt
...
*/
// Ref: http://www.w3.org/TR/2012/WD-file-system-api-20120417/
// Ref: http://www.html5rocks.com/en/tutorials/file/filesystem/
/******************************************************************************/
// Low-level asset files manager
µBlock.assets = (function() {
/******************************************************************************/
var fileSystem;
var fileSystemQuota = 40 * 1024 * 1024;
var remoteRoot = µBlock.projectServerRoot;
/******************************************************************************/
var nullFunc = function() { };
/******************************************************************************/
var getTextFileFromURL = function(url, onLoad, onError) {
// console.log('µBlock> getTextFileFromURL("%s"):', url);
var xhr = new XMLHttpRequest();
xhr.responseType = 'text';
xhr.onload = onLoad;
xhr.onerror = onError;
xhr.ontimeout = onError;
xhr.open('get', url, true);
xhr.send();
};
/******************************************************************************/
// Useful to avoid having to manage a directory tree
var cachePathFromPath = function(path) {
return path.replace(/\//g, '___');
};
var pathFromCachePath = function(path) {
return path.replace(/___/g, '/');
};
/******************************************************************************/
var requestFileSystem = function(onSuccess, onError) {
if ( fileSystem ) {
onSuccess(fileSystem);
return;
}
var onRequestFileSystem = function(fs) {
fileSystem = fs;
onSuccess(fs);
};
var onRequestQuota = function(grantedBytes) {
window.webkitRequestFileSystem(window.PERSISTENT, grantedBytes, onRequestFileSystem, onError);
};
navigator.webkitPersistentStorage.requestQuota(fileSystemQuota, onRequestQuota, onError);
};
/******************************************************************************/
// Flush cached non-user assets if these are from a prior version.
// https://github.com/gorhill/httpswitchboard/issues/212
var cacheSynchronized = false;
var synchronizeCache = function() {
if ( cacheSynchronized ) {
return;
}
cacheSynchronized = true;
var directoryReader;
var done = function() {
directoryReader = null;
};
var onReadEntries = function(entries) {
var n = entries.length;
if ( !n ) {
return done();
}
var entry;
for ( var i = 0; i < n; i++ ) {
entry = entries[i];
// Ignore whatever is in 'user' folder: these are NOT cached entries.
if ( pathFromCachePath(entry.fullPath).indexOf('/assets/user/') >= 0 ) {
continue;
}
entry.remove(nullFunc);
}
directoryReader.readEntries(onReadEntries, onReadEntriesError);
};
var onReadEntriesError = function(err) {
console.error('µBlock> synchronizeCache() / onReadEntriesError("%s"):', err.name);
done();
};
var onRequestFileSystemSuccess = function(fs) {
directoryReader = fs.root.createReader();
directoryReader.readEntries(onReadEntries, onReadEntriesError);
};
var onRequestFileSystemError = function(err) {
console.error('µBlock> synchronizeCache() / onRequestFileSystemError():', err.name);
done();
};
var onLastVersionRead = function(store) {
var currentVersion = chrome.runtime.getManifest().version;
var lastVersion = store.extensionLastVersion || '0.0.0.0';
if ( currentVersion === lastVersion ) {
return done();
}
chrome.storage.local.set({ 'extensionLastVersion': currentVersion });
requestFileSystem(onRequestFileSystemSuccess, onRequestFileSystemError);
};
chrome.storage.local.get('extensionLastVersion', onLastVersionRead);
};
/******************************************************************************/
var readLocalFile = function(path, callback) {
var reportBack = function(content, err) {
var details = {
'path': path,
'content': content,
'error': err
};
callback(details);
};
var onLocalFileLoaded = function() {
// console.log('µBlock> onLocalFileLoaded()');
reportBack(this.responseText);
this.onload = this.onerror = null;
};
var onLocalFileError = function(ev) {
console.error('µBlock> readLocalFile() / onLocalFileError("%s")', path);
reportBack('', 'Error');
this.onload = this.onerror = null;
};
var onCacheFileLoaded = function() {
// console.log('µBlock> readLocalFile() / onCacheFileLoaded()');
reportBack(this.responseText);
this.onload = this.onerror = null;
};
var onCacheFileError = function(ev) {
// This handler may be called under normal circumstances: it appears
// the entry may still be present even after the file was removed.
// console.error('µBlock> readLocalFile() / onCacheFileError("%s")', path);
getTextFileFromURL(chrome.runtime.getURL(path), onLocalFileLoaded, onLocalFileError);
this.onload = this.onerror = null;
};
var onCacheEntryFound = function(entry) {
// console.log('µBlock> readLocalFile() / onCacheEntryFound():', entry.toURL());
// rhill 2014-04-18: `ublock` query parameter is added to ensure
// the browser cache is bypassed.
getTextFileFromURL(entry.toURL() + '?ublock=' + Date.now(), onCacheFileLoaded, onCacheFileError);
};
var onCacheEntryError = function(err) {
if ( err.name !== 'NotFoundError' ) {
console.error('µBlock> readLocalFile() / onCacheEntryError("%s"):', path, err.name);
}
getTextFileFromURL(chrome.runtime.getURL(path), onLocalFileLoaded, onLocalFileError);
};
var onRequestFileSystemSuccess = function(fs) {
fs.root.getFile(cachePathFromPath(path), null, onCacheEntryFound, onCacheEntryError);
};
var onRequestFileSystemError = function(err) {
console.error('µBlock> readLocalFile() / onRequestFileSystemError():', err.name);
getTextFileFromURL(chrome.runtime.getURL(path), onLocalFileLoaded, onLocalFileError);
};
requestFileSystem(onRequestFileSystemSuccess, onRequestFileSystemError);
};
/******************************************************************************/
var readRemoteFile = function(path, callback) {
var reportBack = function(content, err) {
var details = {
'path': path,
'content': content,
'error': err
};
callback(details);
};
var onRemoteFileLoaded = function() {
// console.log('µBlock> readRemoteFile() / onRemoteFileLoaded()');
// https://github.com/gorhill/httpswitchboard/issues/263
if ( this.status === 200 ) {
reportBack(this.responseText);
} else {
reportBack('', 'Error ' + this.statusText);
}
this.onload = this.onerror = null;
};
var onRemoteFileError = function(ev) {
console.error('µBlock> readRemoteFile() / onRemoteFileError("%s")', path);
reportBack('', 'Error');
this.onload = this.onerror = null;
};
// 'ublock=...' is to skip browser cache
getTextFileFromURL(
remoteRoot + path + '?ublock=' + Date.now(),
onRemoteFileLoaded,
onRemoteFileError
);
};
/******************************************************************************/
var writeLocalFile = function(path, content, callback) {
var reportBack = function(err) {
var details = {
'path': path,
'content': content,
'error': err
};
callback(details);
};
var onFileWriteSuccess = function() {
// console.log('µBlock> writeLocalFile() / onFileWriteSuccess("%s")', path);
reportBack();
};
var onFileWriteError = function(err) {
console.error('µBlock> writeLocalFile() / onFileWriteError("%s"):', path, err.name);
reportBack(err.name);
};
var onFileTruncateSuccess = function() {
// console.log('µBlock> writeLocalFile() / onFileTruncateSuccess("%s")', path);
this.onwriteend = onFileWriteSuccess;
this.onerror = onFileWriteError;
var blob = new Blob([content], { type: 'text/plain' });
this.write(blob);
};
var onFileTruncateError = function(err) {
console.error('µBlock> writeLocalFile() / onFileTruncateError("%s"):', path, err.name);
reportBack(err.name);
};
var onCreateFileWriterSuccess = function(fwriter) {
fwriter.onwriteend = onFileTruncateSuccess;
fwriter.onerror = onFileTruncateError;
fwriter.truncate(0);
};
var onCreateFileWriterError = function(err) {
console.error('µBlock> writeLocalFile() / onCreateFileWriterError("%s"):', path, err.name);
reportBack(err.name);
};
var onCacheEntryFound = function(file) {
// console.log('µBlock> writeLocalFile() / onCacheEntryFound():', file.toURL());
file.createWriter(onCreateFileWriterSuccess, onCreateFileWriterError);
};
var onCacheEntryError = function(err) {
console.error('µBlock> writeLocalFile() / onCacheEntryError("%s"):', path, err.name);
reportBack(err.name);
};
var onRequestFileSystemError = function(err) {
console.error('µBlock> writeLocalFile() / onRequestFileSystemError():', err.name);
reportBack(err.name);
};
var onRequestFileSystem = function(fs) {
fs.root.getFile(cachePathFromPath(path), { create: true }, onCacheEntryFound, onCacheEntryError);
};
requestFileSystem(onRequestFileSystem, onRequestFileSystemError);
};
/******************************************************************************/
var updateFromRemote = function(details, callback) {
// 'ublock=...' is to skip browser cache
var remoteURL = remoteRoot + details.path + '?ublock=' + Date.now();
var targetPath = details.path;
var targetMd5 = details.md5 || '';
var reportBackError = function() {
callback({
'path': targetPath,
'error': 'Error'
});
};
var onRemoteFileLoaded = function() {
this.onload = this.onerror = null;
if ( typeof this.responseText !== 'string' ) {
console.error('µBlock> updateFromRemote("%s") / onRemoteFileLoaded(): no response', remoteURL);
reportBackError();
return;
}
if ( YaMD5.hashStr(this.responseText) !== targetMd5 ) {
console.error('µBlock> updateFromRemote("%s") / onRemoteFileLoaded(): bad md5 checksum', remoteURL);
reportBackError();
return;
}
// console.debug('µBlock> updateFromRemote("%s") / onRemoteFileLoaded()', remoteURL);
writeLocalFile(targetPath, this.responseText, callback);
};
var onRemoteFileError = function(ev) {
this.onload = this.onerror = null;
console.error('µBlock> updateFromRemote() / onRemoteFileError("%s"):', remoteURL, this.statusText);
reportBackError();
};
getTextFileFromURL(
remoteURL,
onRemoteFileLoaded,
onRemoteFileError
);
};
/******************************************************************************/
// Flush cached assets if cache content is from an older version: the extension
// always ships with the most up-to-date assets.
synchronizeCache();
/******************************************************************************/
// Export API
return {
'get': readLocalFile,
'getRemote': readRemoteFile,
'put': writeLocalFile,
'update': updateFromRemote
};
/******************************************************************************/
})();
/******************************************************************************/

149
js/async.js Normal file
View file

@ -0,0 +1,149 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
// Async job queue module
µBlock.asyncJobs = (function() {
var processJobs = function() {
asyncJobManager.process();
};
var AsyncJobEntry = function(name) {
this.name = name;
this.data = null;
this.callback = null;
this.when = 0;
this.period = 0;
};
AsyncJobEntry.prototype.destroy = function() {
this.name = '';
this.data = null;
this.callback = null;
};
var AsyncJobManager = function() {
this.timeResolution = 200;
this.jobs = {};
this.jobCount = 0;
this.jobJunkyard = [];
this.timerId = null;
this.timerWhen = Number.MAX_VALUE;
};
AsyncJobManager.prototype.restartTimer = function() {
var when = Number.MAX_VALUE;
var jobs = this.jobs, job;
for ( var jobName in jobs ) {
job = jobs[jobName];
if ( job instanceof AsyncJobEntry ) {
if ( job.when < when ) {
when = job.when;
}
}
}
// Quantize time value
when = Math.floor((when + this.timeResolution - 1) / this.timeResolution) * this.timeResolution;
if ( when < this.timerWhen ) {
clearTimeout(this.timerId);
this.timerWhen = when;
this.timerId = setTimeout(processJobs, Math.max(when - Date.now(), 10));
}
};
AsyncJobManager.prototype.add = function(name, data, callback, delay, recurrent) {
var job = this.jobs[name];
if ( !job ) {
job = this.jobJunkyard.pop();
if ( !job ) {
job = new AsyncJobEntry(name);
} else {
job.name = name;
}
this.jobs[name] = job;
this.jobCount++;
}
job.data = data;
job.callback = callback;
job.when = Date.now() + delay;
job.period = recurrent ? delay : 0;
this.restartTimer();
};
AsyncJobManager.prototype.process = function() {
this.timerId = null;
this.timerWhen = Number.MAX_VALUE;
var now = Date.now();
var job;
for ( var jobName in this.jobs ) {
if ( this.jobs.hasOwnProperty(jobName) === false ) {
continue;
}
job = this.jobs[jobName];
if ( job.when > now ) {
continue;
}
job.callback(job.data);
if ( job.period ) {
job.when = now + job.period;
} else {
delete this.jobs[jobName];
job.destroy();
this.jobCount--;
this.jobJunkyard.push(job);
}
}
this.restartTimer();
};
// Only one instance
var asyncJobManager = new AsyncJobManager();
// Publish
return asyncJobManager;
})();
/******************************************************************************/
// Update visual of extension icon.
// A time out is used to coalesce adjacent requests to update badge.
µBlock.updateBadge = function(tabId) {
if ( tabId < 0 ) {
return;
}
var updateBadgeCallback = function(tabId) {
var pageStore = µBlock.pageStoreFromTabId(tabId);
if ( pageStore ) {
pageStore.updateBadge();
} else {
chrome.browserAction.setIcon({ tabId: tabId, path: 'img/browsericons/icon19-off.png' });
}
};
this.asyncJobs.add('updateBadge-' + tabId, tabId, updateBadgeCallback, 200);
};

76
js/background.js Normal file
View file

@ -0,0 +1,76 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome */
/******************************************************************************/
var µBlock = (function() {
/******************************************************************************/
return {
manifest: chrome.runtime.getManifest(),
userSettings: {
showIconBadge: true,
parseAllABPHideFilters: true,
exceptionList: {}
},
localSettings: {
blockedRequestCount: 0,
allowedRequestCount: 0
},
updateAssetsEvery: 5 * 24 * 60 * 60 * 1000,
projectServerRoot: 'https://raw2.github.com/gorhill/ublock/master/',
// list of remote blacklist locations
remoteBlacklists: {
// User
'assets/user/filters.txt': {},
// 3rd-party lists fetched dynamically
},
// urls stats are kept on the back burner while waiting to be reactivated
// in a tab or another.
pageStores: {},
pageStoreDump: {},
// Power switch to disengage µBlock
off: false,
userFiltersPath: 'assets/user/filters.txt',
storageQuota: chrome.storage.local.QUOTA_BYTES,
storageUsed: 0,
// so that I don't have to care for last comma
dummy: 0
};
/******************************************************************************/
})();
/******************************************************************************/

371
js/contentscript-end.js Normal file
View file

@ -0,0 +1,371 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* jshint multistr: true */
/* global chrome */
// Injected into content pages
/******************************************************************************/
/******************************************************************************/
// https://github.com/gorhill/httpswitchboard/issues/345
var messaging = (function(name){
var port = null;
var dangling = false;
var requestId = 1;
var requestIdToCallbackMap = {};
var listenCallback = null;
var onPortMessage = function(details) {
if ( typeof details.id !== 'number' ) {
return;
}
// Announcement?
if ( details.id < 0 ) {
if ( listenCallback ) {
listenCallback(details.msg);
}
return;
}
var callback = requestIdToCallbackMap[details.id];
if ( !callback ) {
return;
}
callback(details.msg);
delete requestIdToCallbackMap[details.id];
checkDisconnect();
};
var start = function(name) {
port = chrome.runtime.connect({
name: name +
'/' +
String.fromCharCode(
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0
)
});
port.onMessage.addListener(onPortMessage);
};
if ( typeof name === 'string' && name.length > 0 ) {
start(name);
}
var stop = function() {
listenCallback = null;
dangling = true;
checkDisconnect();
};
var ask = function(msg, callback) {
if ( !callback ) {
tell(msg);
return;
}
var id = requestId++;
port.postMessage({ id: id, msg: msg });
requestIdToCallbackMap[id] = callback;
};
var tell = function(msg) {
port.postMessage({ id: 0, msg: msg });
};
var listen = function(callback) {
listenCallback = callback;
};
var checkDisconnect = function() {
if ( !dangling ) {
return;
}
if ( Object.keys(requestIdToCallbackMap).length ) {
return;
}
port.disconnect();
port = null;
};
return {
start: start,
stop: stop,
ask: ask,
tell: tell,
listen: listen
};
})('contentscript-end.js');
/******************************************************************************/
/******************************************************************************/
(function() {
/******************************************************************************/
// ABP cosmetic filters
var CosmeticFiltering = function() {
this.queriedSelectors = {};
this.injectedSelectors = {};
this.classSelectors = null;
this.idSelectors = null;
};
CosmeticFiltering.prototype.onDOMContentLoaded = function() {
this.classesFromNodeList(document.querySelectorAll('*[class]'));
this.idsFromNodeList(document.querySelectorAll('*[id]'));
this.retrieveGenericSelectors();
};
CosmeticFiltering.prototype.retrieveGenericSelectors = function() {
var selectors = this.classSelectors !== null ? Object.keys(this.classSelectors) : [];
if ( this.idSelectors !== null ) {
selectors = selectors.concat(this.idSelectors);
}
if ( selectors.length > 0 ) {
//console.log('µBlock> ABP cosmetic filters: retrieving CSS rules using %d selectors', selectors.length);
messaging.ask({
what: 'retrieveGenericCosmeticSelectors',
pageURL: window.location.href,
selectors: selectors
},
this.retrieveHandler.bind(this)
);
}
this.idSelectors = null;
this.classSelectors = null;
};
CosmeticFiltering.prototype.retrieveHandler = function(selectors) {
if ( !selectors ) {
return;
}
var styleText = [];
this.filterUnfiltered(selectors.hideUnfiltered, selectors.hide);
this.reduce(selectors.hide, this.injectedSelectors);
if ( selectors.hide.length ) {
var hideStyleText = '{{hideSelectors}} {display:none !important;}'
.replace('{{hideSelectors}}', selectors.hide.join(','));
styleText.push(hideStyleText);
this.applyCSS(selectors.hide, 'display', 'none');
//console.debug('µBlock> generic cosmetic filters: injecting %d CSS rules:', selectors.hide.length, hideStyleText);
}
this.filterUnfiltered(selectors.donthideUnfiltered, selectors.donthide);
this.reduce(selectors.donthide, this.injectedSelectors);
if ( selectors.donthide.length ) {
var dontHideStyleText = '{{donthideSelectors}} {display:initial !important;}'
.replace('{{donthideSelectors}}', selectors.donthide.join(','));
styleText.push(dontHideStyleText);
this.applyCSS(selectors.donthide, 'display', 'initial');
//console.debug('µBlock> generic cosmetic filters: injecting %d CSS rules:', selectors.donthide.length, dontHideStyleText);
}
if ( styleText.length > 0 ) {
var style = document.createElement('style');
style.appendChild(document.createTextNode(styleText.join('\n')));
var parent = document.body || document.documentElement;
if ( parent ) {
parent.appendChild(style);
}
}
};
CosmeticFiltering.prototype.applyCSS = function(selectors, prop, value) {
if ( document.body === null ) {
return;
}
var elems = document.querySelectorAll(selectors);
var i = elems.length;
while ( i-- ) {
elems[i].style[prop] = value;
}
};
CosmeticFiltering.prototype.filterUnfiltered = function(inSelectors, outSelectors) {
var i = inSelectors.length;
var selector;
while ( i-- ) {
selector = inSelectors[i];
if ( this.injectedSelectors[selector] ) {
continue;
}
if ( document.querySelector(selector) !== null ) {
outSelectors.push(selector);
}
}
};
CosmeticFiltering.prototype.reduce = function(selectors, dict) {
var first = dict.µb === undefined;
var i = selectors.length, selector, end;
while ( i-- ) {
selector = selectors[i];
if ( first || !dict[selector] ) {
if ( end !== undefined ) {
selectors.splice(i+1, end-i);
end = undefined;
}
dict[selector] = true;
} else if ( end === undefined ) {
end = i;
}
}
if ( end !== undefined ) {
selectors.splice(0, end+1);
}
dict.µb = true;
};
CosmeticFiltering.prototype.classesFromNodeList = function(nodes) {
if ( !nodes ) {
return;
}
if ( this.classSelectors === null ) {
this.classSelectors = {};
}
var classNames, className, j;
var i = nodes.length;
while ( i-- ) {
className = nodes[i].className;
if ( typeof className !== 'string' ) {
continue;
}
className = className.trim();
if ( className === '' ) {
continue;
}
if ( className.indexOf(' ') < 0 ) {
className = '.' + className;
if ( this.queriedSelectors[className] ) {
continue;
}
this.classSelectors[className] = true;
this.queriedSelectors[className] = true;
continue;
}
classNames = className.trim().split(/\s+/);
j = classNames.length;
while ( j-- ) {
className = classNames[j];
if ( className === '' ) {
continue;
}
className = '.' + className;
if ( this.queriedSelectors[className] ) {
continue;
}
this.classSelectors[className] = true;
this.queriedSelectors[className] = true;
}
}
};
CosmeticFiltering.prototype.idsFromNodeList = function(nodes) {
if ( !nodes ) {
return;
}
if ( this.idSelectors === null ) {
this.idSelectors = [];
}
var id;
var i = nodes.length;
while ( i-- ) {
id = nodes[i].id;
if ( typeof id !== 'string' ) {
continue;
}
id = id.trim();
if ( id === '' ) {
continue;
}
id = '#' + id;
if ( this.queriedSelectors[id] ) {
continue;
}
this.idSelectors.push(id);
this.queriedSelectors[id] = true;
}
};
CosmeticFiltering.prototype.allFromNodeList = function(nodes) {
this.classesFromNodeList(nodes);
this.idsFromNodeList(nodes);
};
var cosmeticFiltering = new CosmeticFiltering();
/******************************************************************************/
var mutationObservedHandler = function(mutations) {
var iMutation = mutations.length;
var mutation;
while ( iMutation-- ) {
mutation = mutations[iMutation];
if ( !mutation.addedNodes || !mutation.addedNodes.length ) {
// TODO: attr changes also must be dealth with, but then, how
// likely is it...
continue;
}
cosmeticFiltering.allFromNodeList(mutation.addedNodes);
}
cosmeticFiltering.retrieveGenericSelectors();
};
/******************************************************************************/
// rhill 2013-11-09: Weird... This code is executed from µBlock
// context first time extension is launched. Avoid this.
// TODO: Investigate if this was a fluke or if it can really happen.
// I suspect this could only happen when I was using chrome.tabs.executeScript(),
// because now a delarative content script is used, along with "http{s}" URL
// pattern matching.
// console.debug('µBlock> window.location.href = "%s"', window.location.href);
if ( /^https?:\/\/./.test(window.location.href) === false ) {
console.debug("Huh?");
return;
}
cosmeticFiltering.onDOMContentLoaded();
// Observe changes in the DOM
// This fixes http://acid3.acidtests.org/
if ( document.body ) {
// https://github.com/gorhill/httpswitchboard/issues/176
var observer = new MutationObserver(mutationObservedHandler);
observer.observe(document.body, {
attributes: false,
childList: true,
characterData: false,
subtree: true
});
}
/******************************************************************************/
})();

198
js/contentscript-start.js Normal file
View file

@ -0,0 +1,198 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* jshint multistr: true */
/* global chrome */
// Injected into content pages
/******************************************************************************/
// OK, I keep changing my mind whether a closure should be used or not. This
// will be the rule: if there are any variables directly accessed on a regular
// basis, use a closure so that they are cached. Otherwise I don't think the
// overhead of a closure is worth it. That's my understanding.
(function() {
/******************************************************************************/
/******************************************************************************/
// https://github.com/gorhill/httpswitchboard/issues/345
var messaging = (function(name){
var port = null;
var dangling = false;
var requestId = 1;
var requestIdToCallbackMap = {};
var listenCallback = null;
var onPortMessage = function(details) {
if ( typeof details.id !== 'number' ) {
return;
}
// Announcement?
if ( details.id < 0 ) {
if ( listenCallback ) {
listenCallback(details.msg);
}
return;
}
var callback = requestIdToCallbackMap[details.id];
if ( !callback ) {
return;
}
callback(details.msg);
delete requestIdToCallbackMap[details.id];
checkDisconnect();
};
var start = function(name) {
port = chrome.runtime.connect({
name: name +
'/' +
String.fromCharCode(
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0
)
});
port.onMessage.addListener(onPortMessage);
};
if ( typeof name === 'string' && name.length > 0 ) {
start(name);
}
var stop = function() {
listenCallback = null;
dangling = true;
checkDisconnect();
};
var ask = function(msg, callback) {
if ( !callback ) {
tell(msg);
return;
}
var id = requestId++;
port.postMessage({ id: id, msg: msg });
requestIdToCallbackMap[id] = callback;
};
var tell = function(msg) {
port.postMessage({ id: 0, msg: msg });
};
var listen = function(callback) {
listenCallback = callback;
};
var checkDisconnect = function() {
if ( !dangling ) {
return;
}
if ( Object.keys(requestIdToCallbackMap).length ) {
return;
}
port.disconnect();
port = null;
};
return {
start: start,
stop: stop,
ask: ask,
tell: tell,
listen: listen
};
})('contentscript-start.js');
/******************************************************************************/
/******************************************************************************/
// Domain-based ABP cosmetic filters.
// These can be inserted before the DOM is loaded.
var domainCosmeticFilteringHandler = function(selectors) {
if ( !selectors ) {
return;
}
var styleText = [];
if ( selectors.hide.length ) {
var hideStyleText = '{{hideSelectors}} {display:none !important;}'
.replace('{{hideSelectors}}', selectors.hide.join(','));
styleText.push(hideStyleText);
domainCosmeticFilteringApplyCSS(selectors.hide, 'display', 'none');
//console.debug('µBlock> "%s" cosmetic filters: injecting %d CSS rules:', selectors.domain, selectors.hide.length, hideStyleText);
}
if ( selectors.donthide.length ) {
var dontHideStyleText = '{{donthideSelectors}} {display:initial !important;}'
.replace('{{donthideSelectors}}', selectors.donthide.join(','));
styleText.push(dontHideStyleText);
domainCosmeticFilteringApplyCSS(selectors.donthide, 'display', 'initial');
//console.debug('µBlock> "%s" cosmetic filters: injecting %d CSS rules:', selectors.domain, selectors.donthide.length, dontHideStyleText);
}
if ( styleText.length > 0 ) {
var style = document.createElement('style');
style.appendChild(document.createTextNode(styleText.join('\n')));
var parent = document.head || document.documentElement;
if ( parent ) {
parent.appendChild(style);
}
}
};
var domainCosmeticFilteringApplyCSS = function(selectors, prop, value) {
if ( document.body === null ) {
return;
}
var elems = document.querySelectorAll(selectors);
var i = elems.length;
while ( i-- ) {
elems[i].style[prop] = value;
}
};
messaging.ask(
{
what: 'retrieveDomainCosmeticSelectors',
pageURL: window.location.href,
locationURL: window.location.href
},
domainCosmeticFilteringHandler
);
/******************************************************************************/
/******************************************************************************/
// The port will never be used again at this point, disconnecting allows
// the browser to flush this script from memory.
messaging.stop();
/******************************************************************************/
/******************************************************************************/
})();
/******************************************************************************/

41
js/dashboard-common.js Normal file
View file

@ -0,0 +1,41 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/******************************************************************************/
$(function() {
/******************************************************************************/
// Open links in the proper window
$('a').attr('target', '_blank');
$('a[href*="dashboard.html"]').attr('target', '_parent');
$('.whatisthis').on('click', function() {
$(this).parent()
.find('.whatisthis-expandable')
.toggleClass('whatisthis-expanded');
});
/******************************************************************************/
});

55
js/dashboard.js Normal file
View file

@ -0,0 +1,55 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/******************************************************************************/
(function() {
var loadDashboardPanel = function(hash) {
var button = $(hash);
var url = button.data('dashboardPanelUrl');
$('iframe')[0].src = url;
$('.tabButton').each(function(){
var button = $(this);
button.toggleClass('selected', button.data('dashboardPanelUrl') === url);
});
}
/******************************************************************************/
var onTabClickHandler = function() {
loadDashboardPanel(window.location.hash);
}
/******************************************************************************/
$(function() {
$(window).on('hashchange', onTabClickHandler);
var hash = window.location.hash;
if ( hash.length < 2 ) {
hash = '#thirdparty-filters';
}
loadDashboardPanel(hash);
});
/******************************************************************************/
})();

40
js/i18n.js Normal file
View file

@ -0,0 +1,40 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// Helper to deal with the i18n'ing of HTML files.
// jQuery must be present at this point.
$(function() {
$('[data-i18n]').each(function() {
var me = $(this);
var key = me.data('i18n');
me.html(chrome.i18n.getMessage(key));
});
// copy text of <h1> if any to document title
document.title = $('h1').first().text();
// Tool tips
$('[data-i18n-tip]').each(function() {
var me = $(this);
var key = me.data('i18nTip');
me.attr('data-tip', chrome.i18n.getMessage(key));
});
});

196
js/liquid-dict.js Normal file
View file

@ -0,0 +1,196 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/******************************************************************************/
µBlock.LiquidDict = (function() {
/******************************************************************************/
var LiquidDict = function() {
this.dict = {};
this.count = 0;
this.bucketCount = 0;
this.frozenBucketCount = 0;
// Somewhat arbitrary: I need to come up with hard data to know at which
// point binary search is better than indexOf.
this.cutoff = 500;
};
/******************************************************************************/
var meltBucket = function(ldict, len, bucket) {
ldict.frozenBucketCount -= 1;
var map = {};
if ( bucket.charAt(0) === ' ' ) {
bucket.trim().split(' ').map(function(k) {
map[k] = true;
});
} else {
var offset = 0;
while ( offset < bucket.length ) {
map[bucket.substring(offset, len)] = true;
offset += len;
}
}
return map;
};
/******************************************************************************/
var melt = function(ldict) {
var buckets = ldict.dict;
var bucket;
for ( var key in buckets ) {
bucket = buckets[key];
if ( typeof bucket === 'string' ) {
buckets[key] = meltBucket(ldict, key.charCodeAt(0) & 0xFF, bucket);
}
}
};
/******************************************************************************/
var freezeBucket = function(ldict, bucket) {
ldict.frozenBucketCount += 1;
var words = Object.keys(bucket);
var wordLen = words[0].length;
if ( wordLen * words.length < ldict.cutoff ) {
return ' ' + words.join(' ') + ' ';
}
return words.sort().join('');
};
/******************************************************************************/
// How the key is derived dictates the number and size of buckets.
//
// http://jsperf.com/makekey-concat-vs-join/3
//
// Question: Why is using a prototyped function better than a standalone
// helper function?
LiquidDict.prototype.makeKey = function(word) {
var len = word.length;
if ( len > 255 ) {
len = 255;
}
var i = len >> 2;
return String.fromCharCode(
(word.charCodeAt( 0) & 0x03) << 14 |
(word.charCodeAt( i) & 0x03) << 12 |
(word.charCodeAt( i+i) & 0x03) << 10 |
(word.charCodeAt(i+i+i) & 0x03) << 8 |
len
);
};
/******************************************************************************/
LiquidDict.prototype.test = function(word) {
var key = this.makeKey(word);
var bucket = this.dict[key];
if ( bucket === undefined ) {
return false;
}
if ( typeof bucket === 'object' ) {
return bucket[word] !== undefined;
}
if ( bucket.charAt(0) === ' ' ) {
return bucket.indexOf(' ' + word + ' ') >= 0;
}
// binary search
var len = word.length;
var left = 0;
// http://jsperf.com/or-vs-floor/3
var right = ~~(bucket.length / len + 0.5);
var i, needle;
while ( left < right ) {
i = left + right >> 1;
needle = bucket.substr( len * i, len );
if ( word < needle ) {
right = i;
} else if ( word > needle ) {
left = i + 1;
} else {
return true;
}
}
return false;
};
/******************************************************************************/
LiquidDict.prototype.add = function(word) {
var key = this.makeKey(word);
if ( key === undefined ) {
return false;
}
var bucket = this.dict[key];
if ( bucket === undefined ) {
this.dict[key] = bucket = {};
this.bucketCount += 1;
bucket[word] = true;
this.count += 1;
return true;
} else if ( typeof bucket === 'string' ) {
this.dict[key] = bucket = meltBucket(this, word.len, bucket);
}
if ( bucket[word] === undefined ) {
bucket[word] = true;
this.count += 1;
return true;
}
return false;
};
/******************************************************************************/
LiquidDict.prototype.freeze = function() {
var buckets = this.dict;
var bucket;
for ( var key in buckets ) {
bucket = buckets[key];
if ( typeof bucket === 'object' ) {
buckets[key] = freezeBucket(this, bucket);
}
}
};
/******************************************************************************/
LiquidDict.prototype.reset = function() {
this.dict = {};
this.count = 0;
this.bucketCount = 0;
this.frozenBucketCount = 0;
};
/******************************************************************************/
return LiquidDict;
/******************************************************************************/
})();
/******************************************************************************/

130
js/messaging-client.js Normal file
View file

@ -0,0 +1,130 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// This is the reference client-side implementation of µBlock's messaging
// infrastructure. The "server"-side implementation is in messaging.js.
// The client-side implementation creates a port in order to connect to
// µBlock's background page. With this port we can "ask", "tell" or "announce":
//
// "ask": send a request and expect an answer using a callback.
// "tell": send a request with no expectation of an answer.
// "announce": send a request to be relayed to all connections -- no answer
// expected.
//
// The tricky part in this implementation is to ensure all the requests are
// uniquely identified, so that the background-page can keep track of these
// until it is ready to send back an answer, which will be tagged with the
// same id. The uniqueness must be true for all ports which connect to the
// background page at any given time.
//
// Currently using Math.random() to generate this id... I don't know about the
// implementation of Math.random(), but as long as I have a good expectation
// of uniqueness, it's ok, we are not dealing with critical stuff here.
var messaging = (function(name){
var port = null;
var dangling = false;
var requestId = 1;
var requestIdToCallbackMap = {};
var listenCallback = null;
var onPortMessage = function(details) {
if ( typeof details.id !== 'number' ) {
return;
}
// Announcement?
if ( details.id < 0 ) {
if ( listenCallback ) {
listenCallback(details.msg);
}
return;
}
var callback = requestIdToCallbackMap[details.id];
if ( !callback ) {
return;
}
callback(details.msg);
delete requestIdToCallbackMap[details.id];
checkDisconnect();
};
var start = function(name) {
port = chrome.runtime.connect({
name: name +
'/' +
String.fromCharCode(
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0,
Math.random() * 0x7FFF | 0
)
});
port.onMessage.addListener(onPortMessage);
};
if ( typeof name === 'string' && name.length > 0 ) {
start(name);
}
var stop = function() {
listenCallback = null;
dangling = true;
checkDisconnect();
};
var ask = function(msg, callback) {
if ( !callback ) {
tell(msg);
return;
}
var id = requestId++;
port.postMessage({ id: id, msg: msg });
requestIdToCallbackMap[id] = callback;
};
var tell = function(msg) {
port.postMessage({ id: 0, msg: msg });
};
var listen = function(callback) {
listenCallback = callback;
};
var checkDisconnect = function() {
if ( !dangling ) {
return;
}
if ( Object.keys(requestIdToCallbackMap).length ) {
return;
}
port.disconnect();
port = null;
};
return {
start: start,
stop: stop,
ask: ask,
tell: tell,
listen: listen
};
})();

260
js/messaging-handlers.js Normal file
View file

@ -0,0 +1,260 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
(function() {
// popup.js
/******************************************************************************/
var getStats = function(request, callback) {
var µb = µBlock;
var r = {
globalBlockedRequestCount: µb.localSettings.blockedRequestCount,
globalAllowedRequestCount: µb.localSettings.allowedRequestCount,
tabId: request.tabId,
pageURL: '',
pageBlockedRequestCount: 0,
pageAllowedRequestCount: 0,
netFilteringSwitch: false,
cosmeticFilteringSwitch: false
};
var pageStore = µb.pageStoreFromTabId(request.tabId);
if ( pageStore ) {
r.pageURL = pageStore.pageURL;
r.pageHostname = pageStore.pageHostname;
r.pageBlockedRequestCount = pageStore.perLoadBlockedRequestCount;
r.pageAllowedRequestCount = pageStore.perLoadAllowedRequestCount;
r.netFilteringSwitch = µb.getNetFilteringSwitch(pageStore.pageHostname);
}
return r;
};
/******************************************************************************/
var onMessage = function(request, sender, callback) {
// Async
switch ( request.what ) {
default:
break;
}
// Sync
var response;
switch ( request.what ) {
case 'stats':
response = getStats(request);
break;
case 'toggleNetFiltering':
µBlock.toggleNetFilteringSwitch(
request.hostname,
request.state
);
µBlock.updateBadge(request.tabId);
break;
default:
return µBlock.messaging.defaultHandler(request, sender, callback);
}
callback(response);
};
µBlock.messaging.listen('popup.js', onMessage);
})();
/******************************************************************************/
// content scripts
(function() {
var onMessage = function(request, sender, callback) {
// Async
switch ( request.what ) {
default:
break;
}
// Sync
var response;
switch ( request.what ) {
case 'retrieveDomainCosmeticSelectors':
response = µBlock.abpHideFilters.retrieveDomainSelectors(request);
break;
case 'retrieveGenericCosmeticSelectors':
response = µBlock.abpHideFilters.retrieveGenericSelectors(request);
break;
default:
return µBlock.messaging.defaultHandler(request, sender, callback);
}
callback(response);
};
µBlock.messaging.listen('contentscript-start.js', onMessage);
µBlock.messaging.listen('contentscript-end.js', onMessage);
})();
/******************************************************************************/
// 3p-filters.js
(function() {
var onMessage = function(request, sender, callback) {
var µb = µBlock;
// Async
switch ( request.what ) {
case 'readUserUbiquitousBlockRules':
return µb.assets.get(µb.userFiltersPath, callback);
case 'writeUserUbiquitousBlockRules':
return µb.assets.put(µb.userFiltersPath, request.content, callback);
default:
break;
}
// Sync
var response;
switch ( request.what ) {
default:
return µb.messaging.defaultHandler(request, sender, callback);
}
callback(response);
};
µBlock.messaging.listen('3p-filters.js', onMessage);
})();
/******************************************************************************/
// 1p-filters.js
(function() {
var onMessage = function(request, sender, callback) {
var µb = µBlock;
// Async
switch ( request.what ) {
case 'readUserFilters':
return µb.assets.get(µb.userFiltersPath, callback);
case 'writeUserFilters':
return µb.assets.put(µb.userFiltersPath, request.content, callback);
default:
break;
}
// Sync
var response;
switch ( request.what ) {
default:
return µb.messaging.defaultHandler(request, sender, callback);
}
callback(response);
};
µBlock.messaging.listen('1p-filters.js', onMessage);
})();
/******************************************************************************/
// about.js
(function() {
var onMessage = function(request, sender, callback) {
var µb = µBlock;
// Async
switch ( request.what ) {
case 'getAssetUpdaterList':
return µb.assetUpdater.getList(callback);
case 'launchAssetUpdater':
return µb.assetUpdater.update(request.list, callback);
case 'readUserSettings':
return chrome.storage.local.get(µb.userSettings, callback);
case 'readUserFilters':
return µb.assets.get(µb.userFiltersPath, callback);
case 'writeUserFilters':
return µb.assets.put(µb.userFiltersPath, request.content, callback);
default:
break;
}
// Sync
var response;
switch ( request.what ) {
case 'loadUpdatableAssets':
response = µb.loadUpdatableAssets();
break;
case 'readFilterListSelection':
response = µb.remoteBlacklists;
break;
case 'getSomeStats':
response = {
storageQuota: µb.storageQuota,
storageUsed: µb.storageUsed
};
break;
default:
return µb.messaging.defaultHandler(request, sender, callback);
}
callback(response);
};
µBlock.messaging.listen('about.js', onMessage);
})();
/******************************************************************************/

240
js/messaging.js Normal file
View file

@ -0,0 +1,240 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// So there might be memory leaks related to the direct use of sendMessage(),
// as per https://code.google.com/p/chromium/issues/detail?id=320723. The issue
// is not marked as resolved, and the last message from chromium dev is:
//
// "You can construct Port objects (runtime.connect) and emulate sendMessage
// "behaviour. The bug is that sendMessage doesn't clean up its Ports."
//
// So the point here is to have an infrastructure which allows relying more on
// direct use of Port objects rather than going through sendMessage().
/******************************************************************************/
/*******************************************************************************
// Here this is the "server"-side implementation.
//
// Reference client-side implementation is found in:
//
// messaging-client.js
//
// For instance, it needs to be cut & pasted for content scripts since
// I can not include in a simple way js file content from another js file.
*******************************************************************************/
/******************************************************************************/
µBlock.messaging = (function() {
/******************************************************************************/
var nameToPortMap = {};
var nameToListenerMap = {};
var nullFunc = function(){};
/******************************************************************************/
var listenerNameFromPortName = function(portName) {
var pos = portName.indexOf('/');
if ( pos <= 0 ) {
return '';
}
return portName.slice(0, pos);
};
var listenerFromPortName = function(portName) {
return nameToListenerMap[listenerNameFromPortName(portName)];
};
/******************************************************************************/
var listen = function(portName, callback) {
var listener = nameToListenerMap[portName];
if ( listener && listener !== callback ) {
throw 'Only one listener allowed';
}
nameToListenerMap[portName] = callback;
};
/******************************************************************************/
var tell = function(target, msg) {
target += '/';
for ( var portName in nameToPortMap ) {
if ( nameToPortMap.hasOwnProperty(portName) === false ) {
continue;
}
if ( portName.indexOf(target) === 0 ) {
nameToPortMap[portName].postMessage({ id: -1, msg: msg });
}
}
};
/******************************************************************************/
var announce = function(msg) {
// Background page handler
defaultHandler(msg, null, nullFunc);
// Extension pages & content scripts handlers
var port;
for ( var portName in nameToPortMap ) {
if ( nameToPortMap.hasOwnProperty(portName) === false ) {
continue;
}
nameToPortMap[portName].postMessage({ id: -1, msg: msg });
}
};
/******************************************************************************/
var onMessage = function(request, port) {
// Annoucement: dispatch everywhere.
if ( request.id < 0 ) {
announce(request.msg);
return;
}
var listener = listenerFromPortName(port.name) || defaultHandler;
var reqId = request.id;
// Being told
if ( reqId <= 0 ) {
listener(request.msg, port.sender, nullFunc);
return;
}
// Being asked
listener(request.msg, port.sender, function(response) {
port.postMessage({
id: reqId,
msg: response !== undefined ? response : null
});
});
};
/******************************************************************************/
// Default is for commonly used message.
function defaultHandler(request, sender, callback) {
// Async
switch ( request.what ) {
case 'loadUbiquitousAllowRules':
return µBlock.loadUbiquitousWhitelists();
default:
break;
}
// Sync
var response;
switch ( request.what ) {
case 'forceReloadTab':
µBlock.forceReload(request.pageURL);
break;
case 'getUserSettings':
response = µBlock.userSettings;
break;
case 'gotoExtensionURL':
µBlock.utils.gotoExtensionURL(request.url);
break;
case 'gotoURL':
µBlock.utils.gotoURL(request);
break;
case 'reloadAllFilters':
µBlock.reloadPresetBlacklists(request.switches);
break;
case 'userSettings':
response = µBlock.changeUserSettings(request.name, request.value);
break;
default:
// console.error('µBlock> messaging.js / defaultHandler > unknown request: %o', request);
break;
}
callback(response);
}
/******************************************************************************/
// Port disconnected, relay this information to apropriate listener.
var onDisconnect = function(port) {
// Notify listener of the disconnection -- using a reserved message id.
var listener = listenerFromPortName(port.name) || defaultHandler;
var msg = {
'what': 'disconnected',
'which': listenerNameFromPortName(port.name)
};
listener(msg, port.sender, nullFunc);
// Cleanup port if no longer in use.
var port = nameToPortMap[port.name];
if ( port ) {
delete nameToPortMap[port.name];
port.onMessage.removeListener(onMessage);
port.onDisconnect.removeListener(onDisconnect);
}
};
/******************************************************************************/
var onConnect = function(port) {
// We must have a port name.
if ( !port.name ) {
throw 'µBlock> messaging.js / onConnectHandler(): no port name!';
}
// Port should not already exist.
if ( nameToPortMap[port.name] ) {
throw 'µBlock> messaging.js / onConnectHandler(): port already exists!';
}
nameToPortMap[port.name] = port;
port.onMessage.addListener(onMessage);
port.onDisconnect.addListener(onDisconnect);
};
/******************************************************************************/
chrome.runtime.onConnect.addListener(onConnect);
/******************************************************************************/
return {
listen: listen,
tell: tell,
announce: announce,
defaultHandler: defaultHandler
};
/******************************************************************************/
})();
/******************************************************************************/

150
js/pagestore.js Normal file
View file

@ -0,0 +1,150 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/*******************************************************************************
A PageRequestStore object is used to store net requests in two ways:
To record distinct net requests
To create a log of net requests
**/
/******************************************************************************/
/******************************************************************************/
µBlock.PageStore = (function() {
/******************************************************************************/
var µb = µBlock;
var pageStoreJunkyard = [];
/******************************************************************************/
var pageStoreFactory = function(tabId, pageURL) {
var entry = pageStoreJunkyard.pop();
if ( entry ) {
return entry.init(tabId, pageURL);
}
return new PageStore(tabId, pageURL);
};
/******************************************************************************/
function PageStore(tabId, pageURL) {
this.tabId = -1;
this.pageURL = '';
this.pageHostname = '';
this.pageDomain = '';
this.perLoadBlockedRequestCount = 0;
this.perLoadAllowedRequestCount = 0;
this.disposeTime = 0;
this.init(tabId, pageURL);
}
/******************************************************************************/
PageStore.prototype.init = function(tabId, pageURL) {
this.tabId = tabId;
this.pageURL = pageURL;
this.pageHostname = µb.URI.hostnameFromURI(pageURL);
this.pageDomain = µb.URI.domainFromHostname(this.pageHostname);
this.perLoadBlockedRequestCount = 0;
this.perLoadAllowedRequestCount = 0;
this.disposeTime = 0;
return this;
};
/******************************************************************************/
PageStore.prototype.dispose = function() {
// rhill 2013-11-07: Even though at init time these are reset, I still
// need to release the memory taken by these, which can amount to
// sizeable enough chunks (especially requests, through the request URL
// used as a key).
this.pageURL = '';
this.pageHostname = '';
this.pageDomain = '';
if ( pageStoreJunkyard.length < 32 ) {
pageStoreJunkyard.push(this);
}
};
/******************************************************************************/
PageStore.prototype.recordRequest = function(type, url, block) {
// rhill 2013-10-26: This needs to be called even if the request is
// already logged, since the request stats are cached for a while after
// the page is no longer visible in a browser tab.
µb.updateBadge(this.tabId);
if ( block !== false ) {
this.perLoadBlockedRequestCount++;
µb.localSettings.blockedRequestCount++;
} else {
this.perLoadAllowedRequestCount++;
µb.localSettings.allowedRequestCount++;
}
};
/******************************************************************************/
// Update badge, incrementally
// rhill 2013-11-09: well this sucks, I can't update icon/badge
// incrementally, as chromium overwrite the icon at some point without
// notifying me, and this causes internal cached state to be out of sync.
PageStore.prototype.updateBadge = function() {
var netFilteringSwitch = µBlock.getNetFilteringSwitch(this.pageHostname);
var iconPath = netFilteringSwitch ? 'img/browsericons/icon19.png' : 'img/browsericons/icon19-off.png';
chrome.browserAction.setIcon({ tabId: this.tabId, path: iconPath });
var iconStr = '';
if ( netFilteringSwitch && this.perLoadBlockedRequestCount ) {
iconStr = µb.formatCount(this.perLoadBlockedRequestCount);
}
chrome.browserAction.setBadgeText({
tabId: this.tabId,
text: iconStr
});
if ( iconStr !== '' ) {
chrome.browserAction.setBadgeBackgroundColor({
tabId: this.tabId,
color: '#666'
});
}
};
/******************************************************************************/
return {
factory: pageStoreFactory
};
})();
/******************************************************************************/

169
js/popup.js Normal file
View file

@ -0,0 +1,169 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/******************************************************************************/
/******************************************************************************/
(function() {
/******************************************************************************/
/******************************************************************************/
var stats;
/******************************************************************************/
/******************************************************************************/
// https://github.com/gorhill/httpswitchboard/issues/345
messaging.start('popup.js');
/******************************************************************************/
var hasClassName = function(elem, className) {
var re = new RegExp('(^| )' + className + '( |$)', 'g');
return re.test(elem.className);
};
var toggleClassName = function(elem, className, newState) {
var re = new RegExp('(^| )' + className + '( |$)', 'g');
var currentState = re.test(elem.className);
if ( newState === undefined ) {
newState = !currentState;
}
if ( newState !== currentState ) {
if ( newState ) {
elem.className += ' ' + className;
} else {
elem.className = elem.className.replace(re, '').trim();
}
}
};
/******************************************************************************/
var renderStats = function() {
if ( !stats || !document.getElementById('switch') ) {
return;
}
var blocked = stats.pageBlockedRequestCount;
var total = stats.pageAllowedRequestCount + blocked;
var elem = document.getElementById('page-blocked');
if ( total === 0 ) {
elem.innerHTML = '0';
} else {
elem.innerHTML = [
blocked,
'<span class="dim">&nbsp;/&nbsp;',
total,
'&nbsp;\u21D2&nbsp;</span>',
(blocked * 100 / total).toFixed(0),
'%'
].join('');
}
blocked = stats.globalBlockedRequestCount;
total = stats.globalAllowedRequestCount + blocked;
elem = document.getElementById('total-blocked');
if ( total === 0 ) {
elem.innerHTML = '0';
} else {
elem.innerHTML = [
blocked,
'<span class="dim">&nbsp;/&nbsp;',
total,
'&nbsp;\u21D2&nbsp;</span>',
(blocked * 100 / total).toFixed(0),
'%'
].join('');
}
toggleClassName(
document.querySelector('#switch .fa'),
'off',
stats.pageURL === '' || !stats.netFilteringSwitch
);
};
/******************************************************************************/
var onStatsReceived = function(details) {
stats = details;
renderStats();
};
/******************************************************************************/
var onTabsReceived = function(tabs) {
if ( tabs.length === 0 ) {
return;
}
var q = {
what: 'stats',
tabId: tabs[0].id
};
messaging.ask( q, onStatsReceived );
};
chrome.tabs.query({ active: true }, onTabsReceived);
/******************************************************************************/
var handleNetFilteringSwitch = function() {
if ( !stats || !stats.pageURL ) {
return;
}
toggleClassName(this, 'off');
messaging.tell({
what: 'toggleNetFiltering',
hostname: stats.pageHostname,
state: !hasClassName(this, 'off'),
tabId: stats.tabId
});
};
/******************************************************************************/
var renderHeader = function() {
var hdr = document.querySelector('h1,h2,h3,h4');
hdr.innerHTML = hdr.innerHTML + '&ensp;v' + chrome.runtime.getManifest().version;
};
/******************************************************************************/
var installEventHandlers = function() {
document.querySelector('#switch .fa').addEventListener('click', handleNetFilteringSwitch);
};
/******************************************************************************/
// Make menu only when popup html is fully loaded
window.addEventListener('load', function() {
renderHeader();
renderStats();
installEventHandlers();
});
/******************************************************************************/
})();

82
js/profiler.js Normal file
View file

@ -0,0 +1,82 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/******************************************************************************/
var quickProfiler = (function() {
/******************************************************************************/
var timer = performance;
var time = 0;
var count = -3;
var tstart = 0;
var lastlog = timer.now();
var prompt = '';
/******************************************************************************/
var reset = function() {
time = 0;
count = -3;
tstart = 0;
};
/******************************************************************************/
var avg = function() {
return count > 0 ? time / count : 0;
};
/******************************************************************************/
var start = function(s) {
prompt = s || '';
tstart = timer.now();
};
/******************************************************************************/
var stop = function() {
count += 1;
if ( count > 0 ) {
var now = timer.now();
time += (now - tstart);
if ( (now - lastlog) > 10000 ) {
console.log('µBlock() > %s: %s ms', prompt, avg().toFixed(3));
lastlog = now;
}
}
};
/******************************************************************************/
return {
reset: reset,
start: start,
stop: stop
};
/******************************************************************************/
})();
/******************************************************************************/

52
js/start.js Normal file
View file

@ -0,0 +1,52 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// ORDER IS IMPORTANT
/******************************************************************************/
// Load everything
µBlock.load();
/******************************************************************************/
// Automatic update of non-user assets
// https://github.com/gorhill/httpswitchboard/issues/334
(function() {
var µb = µBlock;
var jobDone = function(details) {
if ( details.changedCount === 0 ) {
return;
}
µb.loadUpdatableAssets();
};
var jobCallback = function() {
µb.assetUpdater.update(null, jobDone);
};
µb.asyncJobs.add('autoUpdateAssets', null, jobCallback, µb.updateAssetsEvery, true);
})();
/******************************************************************************/

380
js/storage.js Normal file
View file

@ -0,0 +1,380 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock, punycode, publicSuffixList */
/******************************************************************************/
µBlock.getBytesInUse = function() {
var getBytesInUseHandler = function(bytesInUse) {
µBlock.storageUsed = bytesInUse;
};
chrome.storage.local.getBytesInUse(null, getBytesInUseHandler);
};
/******************************************************************************/
µBlock.saveLocalSettings = function() {
chrome.storage.local.set(this.localSettings, function() {
µBlock.getBytesInUse();
});
};
/******************************************************************************/
µBlock.loadLocalSettings = function() {
var settingsLoaded = function(store) {
µBlock.localSettings = store;
};
chrome.storage.local.get(this.localSettings, settingsLoaded);
};
/******************************************************************************/
// Save local settings regularly. Not critical.
µBlock.asyncJobs.add(
'autoSaveLocalSettings',
null,
µBlock.saveLocalSettings.bind(µBlock),
2 * 60 * 1000,
true
);
/******************************************************************************/
µBlock.saveUserSettings = function() {
chrome.storage.local.set(this.userSettings, function() {
µBlock.getBytesInUse();
});
};
/******************************************************************************/
µBlock.loadUserSettings = function() {
var settingsLoaded = function(store) {
µBlock.userSettings = store;
};
chrome.storage.local.get(this.userSettings, settingsLoaded);
};
/******************************************************************************/
µBlock.loadUbiquitousBlacklists = function() {
var blacklists;
var blacklistLoadCount;
var obsoleteBlacklists = [];
var removeObsoleteBlacklistsHandler = function(store) {
if ( !store.remoteBlacklists ) {
return;
}
var location;
while ( location = obsoleteBlacklists.pop() ) {
delete store.remoteBlacklists[location];
}
chrome.storage.local.set(store);
};
var removeObsoleteBlacklists = function() {
if ( obsoleteBlacklists.length === 0 ) {
return;
}
chrome.storage.local.get(
{ 'remoteBlacklists': µBlock.remoteBlacklists },
removeObsoleteBlacklistsHandler
);
};
var mergeBlacklist = function(details) {
var µb = µBlock;
µb.mergeUbiquitousBlacklist(details);
blacklistLoadCount -= 1;
if ( blacklistLoadCount === 0 ) {
loadBlacklistsEnd();
}
};
var loadBlacklistsEnd = function() {
µBlock.abpFilters.freeze();
µBlock.abpHideFilters.freeze();
removeObsoleteBlacklists();
µBlock.messaging.announce({ what: 'loadUbiquitousBlacklistCompleted' });
};
var loadBlacklistsStart = function(store) {
var µb = µBlock;
// rhill 2013-12-10: set all existing entries to `false`.
µb.abpFilters.reset();
µb.abpHideFilters.reset();
blacklists = store.remoteBlacklists;
var blacklistLocations = Object.keys(store.remoteBlacklists);
blacklistLoadCount = blacklistLocations.length;
if ( blacklistLoadCount === 0 ) {
loadBlacklistsEnd();
return;
}
// Load each preset blacklist which is not disabled.
var location;
while ( location = blacklistLocations.pop() ) {
// If loaded list location is not part of default list locations,
// remove its entry from local storage.
if ( !µb.remoteBlacklists[location] ) {
obsoleteBlacklists.push(location);
blacklistLoadCount -= 1;
continue;
}
// https://github.com/gorhill/httpswitchboard/issues/218
// Transfer potentially existing list title into restored list data.
if ( store.remoteBlacklists[location].title !== µb.remoteBlacklists[location].title ) {
store.remoteBlacklists[location].title = µb.remoteBlacklists[location].title;
}
// Store details of this preset blacklist
µb.remoteBlacklists[location] = store.remoteBlacklists[location];
// rhill 2013-12-09:
// Ignore list if disabled
// https://github.com/gorhill/httpswitchboard/issues/78
if ( store.remoteBlacklists[location].off ) {
blacklistLoadCount -= 1;
continue;
}
µb.assets.get(location, mergeBlacklist);
}
};
var onListOfBlockListsLoaded = function(details) {
var µb = µBlock;
// Initialize built-in list of 3rd-party block lists.
var lists = JSON.parse(details.content);
for ( var location in lists ) {
if ( lists.hasOwnProperty(location) === false ) {
continue;
}
µb.remoteBlacklists['assets/thirdparties/' + location] = lists[location];
}
// Now get user's selection of list of block lists.
chrome.storage.local.get(
{ 'remoteBlacklists': µb.remoteBlacklists },
loadBlacklistsStart
);
};
// Reset list of 3rd-party block lists.
for ( var location in this.remoteBlacklists ) {
if ( location.indexOf('assets/thirdparties/') === 0 ) {
delete this.remoteBlacklists[location];
}
}
// Get new list of 3rd-party block lists.
this.assets.get('assets/ublock/filter-lists.json', onListOfBlockListsLoaded);
};
/******************************************************************************/
µBlock.mergeUbiquitousBlacklist = function(details) {
// console.log('µBlock > mergeUbiquitousBlacklist from "%s": "%s..."', details.path, details.content.slice(0, 40));
var rawText = details.content;
var rawEnd = rawText.length;
// rhill 2013-10-21: No need to prefix with '* ', the hostname is just what
// we need for preset blacklists. The prefix '* ' is ONLY needed when
// used as a filter in temporary blacklist.
// rhill 2014-01-22: Transpose possible Adblock Plus-filter syntax
// into a plain hostname if possible.
// Useful references:
// https://adblockplus.org/en/filter-cheatsheet
// https://adblockplus.org/en/filters
var abpFilters = this.abpFilters;
var abpHideFilters = this.userSettings.parseAllABPHideFilters ? this.abpHideFilters : null;
var thisListCount = 0;
var thisListUsedCount = 0;
var reLocalhost = /(^|\s)(localhost\.localdomain|localhost|local|broadcasthost|0\.0\.0\.0|127\.0\.0\.1|::1|fe80::1%lo0)(?=\s|$)/g;
var reAdblockFilter = /^[^a-z0-9:]|[^a-z0-9]$|[^a-z0-9_:.-]/;
var reAdblockHostFilter = /^\|\|([a-z0-9.-]+[a-z0-9])\^?$/;
var reAsciiSegment = /^[\x21-\x7e]+$/;
var matches;
var lineBeg = 0, lineEnd, currentLineBeg;
var line, c;
while ( lineBeg < rawEnd ) {
lineEnd = rawText.indexOf('\n', lineBeg);
if ( lineEnd < 0 ) {
lineEnd = rawText.indexOf('\r', lineBeg);
if ( lineEnd < 0 ) {
lineEnd = rawEnd;
}
}
// rhill 2014-04-18: The trim is important here, as without it there
// could be a lingering `\r` which would cause problems in the
// following parsing code.
line = rawText.slice(lineBeg, lineEnd).trim();
currentLineBeg = lineBeg;
lineBeg = lineEnd + 1;
// Strip comments
c = line.charAt(0);
if ( c === '!' || c === '[' ) {
continue;
}
// 2014-05-18: ABP element hide filters are allowed to contain space
// characters
if ( abpHideFilters !== null ) {
if ( abpHideFilters.add(line) ) {
continue;
}
}
if ( c === '#' ) {
continue;
}
// https://github.com/gorhill/httpswitchboard/issues/15
// Ensure localhost et al. don't end up in the ubiquitous blacklist.
line = line
.replace(/\s+#.*$/, '')
.toLowerCase()
.replace(reLocalhost, '')
.trim();
// The filter is whatever sequence of printable ascii character without
// whitespaces
matches = reAsciiSegment.exec(line);
if ( !matches || matches.length === 0 ) {
continue;
}
// Bypass anomalies
// For example, when a filter contains whitespace characters, or
// whatever else outside the range of printable ascii characters.
if ( matches[0] !== line ) {
// console.error('"%s": "%s" !== "%s"', details.path, matches[0], line);
continue;
}
line = matches[0];
// Likely an ABP net filter?
if ( reAdblockFilter.test(line) ) {
if ( abpFilters !== null ) {
if ( abpFilters.add(line) ) {
continue;
}
}
// rhill 2014-01-22: Transpose possible Adblock Plus-filter syntax
// into a plain hostname if possible.
matches = reAdblockHostFilter.exec(line);
if ( !matches || matches.length < 2 ) {
continue;
}
line = matches[1];
}
if ( line === '' ) {
continue;
}
thisListCount++;
if ( abpFilters.addAnyPartyHostname(line) ) {
thisListUsedCount++;
}
}
// For convenience, store the number of entries for this
// blacklist, user might be happy to know this information.
this.remoteBlacklists[details.path].entryCount = thisListCount;
this.remoteBlacklists[details.path].entryUsedCount = thisListUsedCount;
};
/******************************************************************************/
// `switches` contains the preset blacklists for which the switch must be
// revisited.
µBlock.reloadPresetBlacklists = function(switches) {
var presetBlacklists = this.remoteBlacklists;
// Toggle switches, if any
if ( switches !== undefined ) {
var i = switches.length;
while ( i-- ) {
if ( !presetBlacklists[switches[i].location] ) {
continue;
}
presetBlacklists[switches[i].location].off = !!switches[i].off;
}
// Save switch states
chrome.storage.local.set({ 'remoteBlacklists': presetBlacklists }, function() {
µBlock.getBytesInUse();
});
}
// Now force reload
this.loadUbiquitousBlacklists();
};
/******************************************************************************/
µBlock.loadPublicSuffixList = function() {
var applyPublicSuffixList = function(details) {
// TODO: Not getting proper suffix list is a bit serious, I think
// the extension should be force-restarted if it occurs..
if ( !details.error ) {
publicSuffixList.parse(details.content, punycode.toASCII);
}
};
this.assets.get(
'assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat',
applyPublicSuffixList
);
};
/******************************************************************************/
// Load updatable assets
µBlock.loadUpdatableAssets = function() {
this.loadUbiquitousBlacklists();
this.loadPublicSuffixList();
};
/******************************************************************************/
// Load all
µBlock.load = function() {
this.loadLocalSettings();
this.loadUserSettings();
// load updatable assets -- after updating them if needed
this.assetUpdater.update(null, this.loadUpdatableAssets.bind(this));
this.getBytesInUse();
};

166
js/tab.js Normal file
View file

@ -0,0 +1,166 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
(function(){
function onTabCreated(tab) {
// Can this happen?
if ( tab.id < 0 || !tab.url || tab.url === '' ) {
return;
}
µBlock.bindTabToPageStats(tab.id, tab.url);
}
chrome.tabs.onCreated.addListener(onTabCreated);
function onTabUpdated(tabId, changeInfo, tab) {
// Can this happen?
if ( !tab.url || tab.url === '' ) {
return;
}
if ( changeInfo.url ) {
µBlock.bindTabToPageStats(tabId, tab.url);
µBlock.updateBadge(tabId);
}
}
chrome.tabs.onUpdated.addListener(onTabUpdated);
function onTabRemoved(tabId) {
if ( tabId < 0 ) {
return;
}
µBlock.unbindTabFromPageStats(tabId);
}
chrome.tabs.onRemoved.addListener(onTabRemoved);
function onBeforeNavigateCallback(details) {
if ( details.frameId > 0 ) {
return;
}
µBlock.bindTabToPageStats(details.tabId, details.url);
}
chrome.webNavigation.onBeforeNavigate.addListener(onBeforeNavigateCallback);
// Initialize internal state with maybe already existing tabs
chrome.tabs.query({ url: '<all_urls>' }, function(tabs) {
var i = tabs.length;
while ( i-- ) {
µBlock.bindTabToPageStats(tabs[i].id, tabs[i].url);
}
});
})();
/******************************************************************************/
/******************************************************************************/
// https://github.com/gorhill/httpswitchboard/issues/303
// Some kind of trick going on here:
// Any scheme other than 'http' and 'https' is remapped into a fake
// URL which trick the rest of µBlock into being able to process an
// otherwise unmanageable scheme. µBlock needs web page to have a proper
// hostname to work properly, so just like the 'chromium-behind-the-scene'
// fake domain name, we map unknown schemes into a fake '{scheme}-scheme'
// hostname. This way, for a specific scheme you can create scope with
// rules which will apply only to that scheme.
µBlock.normalizePageURL = function(pageURL) {
var uri = this.URI.set(pageURL);
if ( uri.scheme === 'https' || uri.scheme === 'http' ) {
return uri.normalizedURI();
}
return '';
}
/******************************************************************************/
// Create an entry for the tab if it doesn't exist.
µBlock.bindTabToPageStats = function(tabId, pageURL) {
// First unbind whatever page store is bound to the tab id.
this.unbindTabFromPageStats(tabId);
// https://github.com/gorhill/httpswitchboard/issues/303
// Normalize to a page-URL.
pageURL = this.normalizePageURL(pageURL);
// do not create stats store for urls which are of no interests
if ( pageURL === '' ) {
return null;
}
// Bring back existing page store or create new one.
var pageStore = this.pageStores[tabId];
if ( !pageStore ) {
var k = pageURL + ' ' + tabId;
pageStore = this.pageStoreDump[k];
if ( pageStore ) {
delete this.pageStoreDump[k];
}
}
if ( !pageStore ) {
pageStore = this.PageStore.factory(tabId, pageURL);
pageStore.perLoadAllowedRequestCount =
pageStore.perLoadBlockedRequestCount = 0;
}
this.pageStores[tabId] = pageStore;
return pageStore;
};
µBlock.unbindTabFromPageStats = function(tabId) {
var pageStore = this.pageStores[tabId];
if ( pageStore ) {
//pageStore.disposeTime = Date.now();
//this.pageStoreDump[pageStore.pageURL + ' ' + tabId] = pageStore;
}
delete this.pageStores[tabId];
};
/******************************************************************************/
µBlock.pageUrlFromTabId = function(tabId) {
var pageStore = this.pageStores[tabId];
return pageStore ? pageStore.pageURL : '';
};
µBlock.pageUrlFromPageStats = function(pageStats) {
if ( pageStats ) {
return pageStats.pageURL;
}
return '';
};
µBlock.pageStoreFromTabId = function(tabId) {
return this.pageStores[tabId];
};
/******************************************************************************/
µBlock.forceReload = function(pageURL) {
var tabId = this.tabIdFromPageUrl(pageURL);
if ( tabId ) {
chrome.tabs.reload(tabId, { bypassCache: true });
}
};

137
js/traffic.js Normal file
View file

@ -0,0 +1,137 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* jshint multistr: true */
/* global chrome, µBlock */
/******************************************************************************/
// Start isolation from global scope
µBlock.webRequest = (function() {
/******************************************************************************/
// Intercept and filter web requests according to white and black lists.
var onBeforeRequestHandler = function(details) {
var requestType = details.type;
// console.debug('onBeforeRequestHandler()> "%s": %o', details.url, details);
// Do not block behind the scene requests.
if ( details.tabId < 0 ) {
return;
}
// Never block root main doc.
if ( requestType === 'main_frame' && details.parentFrameId < 0 ) {
return;
}
var µb = µBlock;
var µburi = µb.URI;
var requestURL = µburi.set(details.url).normalizedURI();
var requestScheme = µburi.scheme;
var requestHostname = µburi.hostname;
var requestPath = µburi.path;
// Ignore non-http schemes
if ( requestScheme.indexOf('http') !== 0 ) {
return;
}
// Do not block myself from updating assets
if ( requestType === 'xmlhttprequest' && requestURL.slice(0, µb.projectServerRoot.length) === µb.projectServerRoot ) {
return;
}
// rhill 2013-12-15:
// Try to transpose generic `other` category into something more
// meaningful.
if ( requestType === 'other' ) {
requestType = µb.transposeType(requestType, requestPath);
}
// Lookup the page store associated with this tab id.
var pageStore = µb.pageStoreFromTabId(details.tabId) || {};
var reason = false;
if ( µb.getNetFilteringSwitch(pageStore.pageHostname) ) {
reason = µb.abpFilters.matchString(pageStore, requestURL, requestType, requestHostname);
}
// Block using ABP filters?
pageStore.recordRequest(requestType, requestURL, reason);
// whitelisted?
if ( reason === false ) {
return;
}
// blacklisted
// console.debug('onBeforeRequestHandler()> BLOCK "%s": %o', details.url, details);
// If it's a blacklisted frame, redirect to something harmless.
if ( requestType === 'sub_frame' ) {
return { 'redirectUrl': 'about:blank' };
}
return { 'cancel': true };
};
/******************************************************************************/
chrome.webRequest.onBeforeRequest.addListener(
//function(details) {
// quickProfiler.start('onBeforeRequest');
// var r = onBeforeRequestHandler(details);
// quickProfiler.stop();
// return r;
//},
onBeforeRequestHandler,
{
"urls": [
"http://*/*",
"https://*/*",
],
"types": [
"main_frame",
"sub_frame",
'stylesheet',
"script",
"image",
"object",
"xmlhttprequest",
"other"
]
},
[ "blocking" ]
);
console.log('µBlock> Beginning to intercept net requests at %s', (new Date()).toISOString());
/******************************************************************************/
})();
/******************************************************************************/

158
js/ublock.js Normal file
View file

@ -0,0 +1,158 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
µBlock.getNetFilteringSwitch = function(hostname) {
var exceptionList = this.userSettings.exceptionList;
if ( exceptionList[hostname] !== undefined ) {
return false;
}
var hostnames = this.URI.parentHostnamesFromHostname(hostname);
while ( hostname = hostnames.shift() ) {
if ( exceptionList[hostname] !== undefined ) {
return false;
}
}
return true;
};
/******************************************************************************/
µBlock.toggleNetFilteringSwitch = function(hostname, newState) {
var currentState = this.getNetFilteringSwitch(hostname);
if ( newState === undefined ) {
newState = !currentState;
}
if ( newState === currentState ) {
return currentState;
}
var exceptionList = this.userSettings.exceptionList;
// Add to exception list
if ( !newState ) {
exceptionList[hostname] = true;
this.saveExceptionList();
return true;
}
// Remove from exception list
if ( newState ) {
var hostnames = this.URI.allHostnamesFromHostname(hostname);
while ( hostname = hostnames.shift() ) {
if ( exceptionList[hostname] !== undefined ) {
delete exceptionList[hostname];
}
}
this.saveExceptionList();
return false;
}
};
/******************************************************************************/
µBlock.saveExceptionList = function() {
chrome.storage.local.set({
'exceptionList': this.userSettings.exceptionList
});
};
/******************************************************************************/
µBlock.changeUserSettings = function(name, value) {
if ( typeof name !== 'string' || name === '' ) {
return;
}
var µb = µBlock;
// Do not allow an unknown user setting to be created
if ( µb.userSettings[name] === undefined ) {
return;
}
if ( value === undefined ) {
return µb.userSettings[name];
}
// Pre-change
switch ( name ) {
default:
break;
}
// Change
µb.userSettings[name] = value;
// Post-change
switch ( name ) {
default:
break;
}
µb.saveUserSettings();
};
/******************************************************************************/
µBlock.transposeType = function(type, path) {
if ( type === 'other' ) {
var pos = path.lastIndexOf('.');
if ( pos > 0 ) {
var ext = path.slice(pos);
if ( '.eot.ttf.otf.svg.woff'.indexOf(ext) >= 0 ) {
return 'stylesheet';
}
if ( '.ico.png'.indexOf(ext) >= 0 ) {
return 'image';
}
}
}
return type;
};
/******************************************************************************/
µBlock.formatCount = function(count) {
if ( typeof count !== 'number' ) {
return '';
}
var s = count.toFixed(0);
if ( count >= 1000 ) {
if ( count < 10000 ) {
s = '>' + s.slice(0,1) + 'K';
} else if ( count < 100000 ) {
s = s.slice(0,2) + 'K';
} else if ( count < 1000000 ) {
s = s.slice(0,3) + 'K';
} else if ( count < 10000000 ) {
s = s.slice(0,1) + 'M';
} else {
s = s.slice(0,-6) + 'M';
}
}
return s;
};

416
js/uritools.js Normal file
View file

@ -0,0 +1,416 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global µBlock, publicSuffixList */
/*******************************************************************************
RFC 3986 as reference: http://tools.ietf.org/html/rfc3986#appendix-A
Naming convention from https://en.wikipedia.org/wiki/URI_scheme#Examples
*/
/******************************************************************************/
// This will inserted as a module in the µBlock object.
µBlock.URI = (function() {
/******************************************************************************/
// Favorite regex tool: http://regex101.com/
// Ref: <http://tools.ietf.org/html/rfc3986#page-50>
// I removed redundant capture groups: capture less = peform faster. See
// <http://jsperf.com/old-uritools-vs-new-uritools>
// Performance improvements welcomed.
// jsperf: <http://jsperf.com/old-uritools-vs-new-uritools>
var reRFC3986 = /^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/;
// Derived
var reSchemeFromURI = /^[^:\/?#]+:/;
var reAuthorityFromURI = /^(?:[^:\/?#]+:)?(\/\/[^\/?#]+)/;
// These are to parse authority field, not parsed by above official regex
// IPv6 is seen as an exception: a non-compatible IPv6 is first tried, and
// if it fails, the IPv6 compatible regex istr used. This helps
// peformance by avoiding the use of a too complicated regex first.
// https://github.com/gorhill/httpswitchboard/issues/211
// "While a hostname may not contain other characters, such as the
// "underscore character (_), other DNS names may contain the underscore"
var reHostPortFromAuthority = /^(?:[^@]*@)?([0-9a-z._-]*)(:\d*)?$/i;
var reIPv6PortFromAuthority = /^(?:[^@]*@)?(\[[0-9a-f:]*\])(:\d*)?$/i;
var reHostFromNakedAuthority = /^[0-9a-z._-]+[0-9a-z]$/i;
var reHostFromAuthority = /^(?:[^@]*@)?([0-9a-z._-]+)(?::\d*)?$/i;
var reIPv6FromAuthority = /^(?:[^@]*@)?(\[[0-9a-f:]+\])(?::\d*)?$/i;
// Coarse (but fast) tests
var reValidHostname = /^([a-z\d]+(-*[a-z\d]+)*)(\.[a-z\d]+(-*[a-z\d])*)*$/;
var reIPAddressNaive = /^\d+\.\d+\.\d+\.\d+$|^\[[\da-zA-Z:]+\]$/;
// Accurate tests
// Source.: http://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp/5284410#5284410
var reIPv4 = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)(\.|$)){4}/;
// Source: http://forums.intermapper.com/viewtopic.php?p=1096#1096
var reIPv6 = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
/******************************************************************************/
var reset = function(o) {
o.scheme = '';
o.hostname = '';
o._ipv4 = undefined;
o._ipv6 = undefined;
o.port = '';
o.path = '';
o.query = '';
o.fragment = '';
return o;
};
var resetAuthority = function(o) {
o.hostname = '';
o._ipv4 = undefined;
o._ipv6 = undefined;
o.port = '';
return o;
};
/******************************************************************************/
// This will be exported
var URI = {
scheme: '',
authority: '',
hostname: '',
_ipv4: undefined,
_ipv6: undefined,
port: '',
domain: undefined,
path: '',
query: '',
fragment: '',
schemeBit: (1 << 0),
userBit: (1 << 1),
passwordBit: (1 << 2),
hostnameBit: (1 << 3),
portBit: (1 << 4),
pathBit: (1 << 5),
queryBit: (1 << 6),
fragmentBit: (1 << 7),
allBits: (0xFFFF)
};
URI.authorityBit = (URI.userBit | URI.passwordBit | URI.hostnameBit | URI.portBit);
URI.normalizeBits = (URI.schemeBit | URI.hostnameBit | URI.pathBit | URI.queryBit);
/******************************************************************************/
// See: https://en.wikipedia.org/wiki/URI_scheme#Examples
// URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
//
// foo://example.com:8042/over/there?name=ferret#nose
// \_/ \______________/\_________/ \_________/ \__/
// | | | | |
// scheme authority path query fragment
// | _____________________|__
// / \ / \
// urn:example:animal:ferret:nose
URI.set = function(uri) {
if ( uri === undefined ) {
return reset(URI);
}
var matches = reRFC3986.exec(uri);
if ( !matches ) {
return reset(URI);
}
this.scheme = matches[1] !== undefined ? matches[1].slice(0, -1) : '';
this.authority = matches[2] !== undefined ? matches[2].slice(2).toLowerCase() : '';
this.path = matches[3] !== undefined ? matches[3] : '';
// <http://tools.ietf.org/html/rfc3986#section-6.2.3>
// "In general, a URI that uses the generic syntax for authority
// "with an empty path should be normalized to a path of '/'."
if ( this.authority !== '' && this.path === '' ) {
this.path = '/';
}
this.query = matches[4] !== undefined ? matches[4].slice(1) : '';
this.fragment = matches[5] !== undefined ? matches[5].slice(1) : '';
// Assume very simple authority, i.e. just a hostname (highest likelihood
// case for µBlock)
if ( reHostFromNakedAuthority.test(this.authority) ) {
this.hostname = this.authority;
this.port = '';
return this;
}
// Authority contains more than just a hostname
matches = reHostPortFromAuthority.exec(this.authority);
if ( !matches ) {
matches = reIPv6PortFromAuthority.exec(this.authority);
if ( !matches ) {
return resetAuthority(URI);
}
}
this.hostname = matches[1] !== undefined ? matches[1] : '';
// http://en.wikipedia.org/wiki/FQDN
if ( this.hostname.slice(-1) === '.' ) {
this.hostname = this.hostname.slice(0, -1);
}
this.port = matches[2] !== undefined ? matches[2].slice(1) : '';
return this;
};
/******************************************************************************/
// URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
//
// foo://example.com:8042/over/there?name=ferret#nose
// \_/ \______________/\_________/ \_________/ \__/
// | | | | |
// scheme authority path query fragment
// | _____________________|__
// / \ / \
// urn:example:animal:ferret:nose
URI.assemble = function(bits) {
if ( bits === undefined ) {
bits = this.allBits;
}
var s = [];
if ( this.scheme && (bits & this.schemeBit) ) {
s.push(this.scheme, ':');
}
if ( this.hostname && (bits & this.hostnameBit) ) {
s.push('//', this.hostname);
}
if ( this.port && (bits & this.portBit) ) {
s.push(':', this.port);
}
if ( this.path && (bits & this.pathBit) ) {
s.push(this.path);
}
if ( this.query && (bits & this.queryBit) ) {
s.push('?', this.query);
}
if ( this.fragment && (bits & this.fragmentBit) ) {
s.push('#', this.fragment);
}
return s.join('');
};
/******************************************************************************/
URI.schemeFromURI = function(uri) {
var matches = reSchemeFromURI.exec(uri);
if ( !matches ) {
return '';
}
return matches[0].slice(0, -1).toLowerCase();
};
/******************************************************************************/
URI.authorityFromURI = function(uri) {
var matches = reAuthorityFromURI.exec(uri);
if ( !matches ) {
return '';
}
return matches[1].slice(2).toLowerCase();
};
/******************************************************************************/
// The most used function, so it better be fast.
URI.hostnameFromURI = function(uri) {
var matches = reAuthorityFromURI.exec(uri);
if ( !matches ) {
return '';
}
var authority = matches[1].slice(2);
// Assume very simple authority (most common case for µBlock)
if ( reHostFromNakedAuthority.test(authority) ) {
return authority.toLowerCase();
}
matches = reHostFromAuthority.exec(authority);
if ( !matches ) {
matches = reIPv6FromAuthority.exec(authority);
if ( !matches ) {
return '';
}
}
// http://en.wikipedia.org/wiki/FQDN
var hostname = matches[1];
if ( hostname.slice(-1) === '.' ) {
hostname = hostname.slice(0, -1);
}
return hostname.toLowerCase();
};
/******************************************************************************/
// It is expected that there is higher-scoped `publicSuffixList` lingering
// somewhere. Cache it. See <https://github.com/gorhill/publicsuffixlist.js>.
var psl = publicSuffixList;
URI.domainFromHostname = function(hostname) {
if ( !reIPAddressNaive.test(hostname) ) {
return psl.getDomain(hostname);
}
return hostname;
};
URI.domain = function() {
return this.domainFromHostname(this.hostname);
};
/******************************************************************************/
URI.domainFromURI = function(uri) {
if ( !uri ) {
return '';
}
return this.domainFromHostname(this.hostnameFromURI(uri));
};
/******************************************************************************/
// Normalize the way µBlock expects it
URI.normalizedURI = function() {
// Will be removed:
// - port
// - user id/password
// - fragment
return this.assemble(this.normalizeBits);
};
/******************************************************************************/
URI.rootURL = function() {
if ( !this.hostname ) {
return '';
}
return this.assemble(this.schemeBit | this.hostnameBit);
};
/******************************************************************************/
URI.isValidHostname = function(hostname) {
var r;
try {
r = reValidHostname.test(hostname);
}
catch (e) {
return false;
}
return r;
};
/******************************************************************************/
// Return the parent domain. For IP address, there is no parent domain.
URI.parentHostnameFromHostname = function(hostname) {
// `locahost` => ``
// `example.org` => `example.org`
// `www.example.org` => `example.org`
// `tomato.www.example.org` => `example.org`
var domain = this.domainFromHostname(hostname);
// `locahost` === `` => bye
// `example.org` === `example.org` => bye
// `www.example.org` !== `example.org` => stay
// `tomato.www.example.org` !== `example.org` => stay
if ( domain === '' || domain === hostname ) {
return undefined;
}
// Parent is hostname minus first label
return hostname.slice(hostname.indexOf('.') + 1);
};
/******************************************************************************/
// Return all possible parent hostnames which can be derived from `hostname`,
// ordered from direct parent up to domain inclusively.
URI.parentHostnamesFromHostname = function(hostname) {
// TODO: I should create an object which is optimized to receive
// the list of hostnames by making it reusable (junkyard etc.) and which
// has its own element counter property in order to avoid memory
// alloc/dealloc.
var domain = this.domainFromHostname(hostname);
if ( domain === '' || domain === hostname ) {
return [];
}
var nodes = [];
var pos;
for (;;) {
pos = hostname.indexOf('.');
if ( pos < 0 ) {
break;
}
hostname = hostname.slice(pos + 1);
nodes.push(hostname);
if ( hostname === domain ) {
break;
}
}
return nodes;
};
/******************************************************************************/
// Return all possible hostnames which can be derived from `hostname`,
// ordered from self up to domain inclusively.
URI.allHostnamesFromHostname = function(hostname) {
var nodes = this.parentHostnamesFromHostname(hostname);
nodes.unshift(hostname);
return nodes;
};
/******************************************************************************/
URI.toString = function() {
return this.assemble();
};
/******************************************************************************/
// Export
return URI;
/******************************************************************************/
})();
/******************************************************************************/

109
js/utils.js Normal file
View file

@ -0,0 +1,109 @@
/*******************************************************************************
µBlock - a Chromium browser extension to block requests.
Copyright (C) 2014 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global chrome, µBlock */
/******************************************************************************/
// This will inserted as a module in the µBlock object.
µBlock.utils = (function() {
/******************************************************************************/
var gotoURL = function(details) {
if ( details.tabId ) {
chrome.tabs.update(details.tabId, { url: details.url });
} else {
chrome.tabs.create({ url: details.url });
}
};
/******************************************************************************/
var gotoExtensionURL = function(url) {
var hasFragment = function(url) {
return url.indexOf('#') >= 0;
};
var removeFragment = function(url) {
var pos = url.indexOf('#');
if ( pos < 0 ) {
return url;
}
return url.slice(0, pos);
};
var tabIndex = 9999;
var targetUrl = chrome.extension.getURL(url);
var urlToFind = removeFragment(targetUrl);
var currentWindow = function(tabs) {
var updateProperties = { active: true };
var i = tabs.length;
while ( i-- ) {
if ( removeFragment(tabs[i].url) !== urlToFind ) {
continue;
}
// If current tab in dashboard is different, force the new one, if
// there is one, to be activated.
if ( tabs[i].url !== targetUrl ) {
if ( hasFragment(targetUrl) ) {
updateProperties.url = targetUrl;
}
}
// Activate found matching tab
// Commented out as per:
// https://github.com/gorhill/httpswitchboard/issues/150#issuecomment-32683726
// chrome.tabs.move(tabs[0].id, { index: index + 1 });
chrome.tabs.update(tabs[i].id, updateProperties);
return;
}
chrome.tabs.create({ 'url': targetUrl, index: tabIndex + 1 });
};
var currentTab = function(tabs) {
if ( tabs.length ) {
tabIndex = tabs[0].index;
}
chrome.tabs.query({ currentWindow: true }, currentWindow);
};
// https://github.com/gorhill/httpswitchboard/issues/150
// Logic:
// - If URL is already opened in a tab, just activate tab
// - Otherwise find the current active tab and open in a tab immediately
// to the right of the active tab
chrome.tabs.query({ active: true }, currentTab);
};
/******************************************************************************/
return {
gotoURL: gotoURL,
gotoExtensionURL: gotoExtensionURL
};
/******************************************************************************/
})();
/******************************************************************************/

4
lib/jquery-2.min.js vendored Normal file

File diff suppressed because one or more lines are too long

17
lib/publicsuffixlist.min.js vendored Normal file
View file

@ -0,0 +1,17 @@
/*! Home: https://github.com/gorhill/publicsuffixlist.js */
;(function(f){var b={};var h={};var a=480;
var g=/[^a-z0-9.-]/;function i(k){if(!k||k.charAt(0)==="."){return""}k=k.toLowerCase();var l=c(k);if(l===k){return""
}var m=k.lastIndexOf(".",k.lastIndexOf(".",k.length-l.length)-1);if(m<=0){return k}return k.slice(m+1)
}function c(k){if(!k){return""}var l;while(true){l=k.indexOf(".");if(l<0){return k}if(j(b,k)){return k.slice(l+1)
}if(j(h,k)){return k}if(j(h,"*"+k.slice(l))){return k}k=k.slice(l+1)}}function j(t,r){var q=r.lastIndexOf(".");
var m,v;if(q<0){m=r;v=r}else{m=r.slice(q+1);v=r.slice(0,q)}var s=t[m];if(!s){return false}if(typeof s==="string"){return s.indexOf(" "+v+" ")>=0
}var n=v.length;var w=s[n];if(!w){return false}var k=0;var u=Math.floor(w.length/n+0.5);var p,o;while(k<u){p=k+u>>1;
o=w.substr(n*p,n);if(v<o){u=p}else{if(v>o){k=p+1}else{return true}}}return false}function d(r,p){b={};
h={};r=r.toLowerCase();var o=0,l;var m=r.length;var s,q,n,k;while(o<m){l=r.indexOf("\n",o);if(l<0){l=m
}s=r.slice(o,l);o=l+1;if(s.length===0){continue}n=s.indexOf("//");if(n>=0){s=s.slice(0,n)}s=s.trim();
if(!s){continue}if(g.test(s)){s=p(s)}if(s.charAt(0)==="!"){q=b;s=s.slice(1)}else{q=h}n=s.lastIndexOf(".");
if(n<0){k=s}else{k=s.slice(n+1);s=s.slice(0,n)}if(!q[k]){q[k]=[]}if(s){q[k].push(s)}}e(b);e(h)}function e(m){var o,q,p,k;
for(var n in m){if(!m.hasOwnProperty(n)){continue}o=m[n].join(" ");if(!o){m[n]="";continue}if(o.length<a){m[n]=" "+o+" ";
continue}p=m[n].length;o=[];while(p--){q=m[n][p];k=q.length;if(!o[k]){o[k]=[]}o[k].push(q)}k=o.length;
while(k--){if(o[k]){o[k]=o[k].sort().join("")}}m[n]=o}return m}f.publicSuffixList={version:"1.0",parse:d,getDomain:i,getPublicSuffix:c}
})(this);

2
lib/punycode.min.js vendored Normal file
View file

@ -0,0 +1,2 @@
/*! http://mths.be/punycode v1.2.4 by @mathias */
!function(a){function b(a){throw RangeError(E[a])}function c(a,b){for(var c=a.length;c--;)a[c]=b(a[c]);return a}function d(a,b){return c(a.split(D),b).join(".")}function e(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function f(a){return c(a,function(a){var b="";return a>65535&&(a-=65536,b+=H(a>>>10&1023|55296),a=56320|1023&a),b+=H(a)}).join("")}function g(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:t}function h(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function i(a,b,c){var d=0;for(a=c?G(a/x):a>>1,a+=G(a/b);a>F*v>>1;d+=t)a=G(a/F);return G(d+(F+1)*a/(a+w))}function j(a){var c,d,e,h,j,k,l,m,n,o,p=[],q=a.length,r=0,w=z,x=y;for(d=a.lastIndexOf(A),0>d&&(d=0),e=0;d>e;++e)a.charCodeAt(e)>=128&&b("not-basic"),p.push(a.charCodeAt(e));for(h=d>0?d+1:0;q>h;){for(j=r,k=1,l=t;h>=q&&b("invalid-input"),m=g(a.charCodeAt(h++)),(m>=t||m>G((s-r)/k))&&b("overflow"),r+=m*k,n=x>=l?u:l>=x+v?v:l-x,!(n>m);l+=t)o=t-n,k>G(s/o)&&b("overflow"),k*=o;c=p.length+1,x=i(r-j,c,0==j),G(r/c)>s-w&&b("overflow"),w+=G(r/c),r%=c,p.splice(r++,0,w)}return f(p)}function k(a){var c,d,f,g,j,k,l,m,n,o,p,q,r,w,x,B=[];for(a=e(a),q=a.length,c=z,d=0,j=y,k=0;q>k;++k)p=a[k],128>p&&B.push(H(p));for(f=g=B.length,g&&B.push(A);q>f;){for(l=s,k=0;q>k;++k)p=a[k],p>=c&&l>p&&(l=p);for(r=f+1,l-c>G((s-d)/r)&&b("overflow"),d+=(l-c)*r,c=l,k=0;q>k;++k)if(p=a[k],c>p&&++d>s&&b("overflow"),p==c){for(m=d,n=t;o=j>=n?u:n>=j+v?v:n-j,!(o>m);n+=t)x=m-o,w=t-o,B.push(H(h(o+x%w,0))),m=G(x/w);B.push(H(h(m,0))),j=i(d,r,f==g),d=0,++f}++d,++c}return B.join("")}function l(a){return d(a,function(a){return B.test(a)?j(a.slice(4).toLowerCase()):a})}function m(a){return d(a,function(a){return C.test(a)?"xn--"+k(a):a})}var n="object"==typeof exports&&exports,o="object"==typeof module&&module&&module.exports==n&&module,p="object"==typeof global&&global;(p.global===p||p.window===p)&&(a=p);var q,r,s=2147483647,t=36,u=1,v=26,w=38,x=700,y=72,z=128,A="-",B=/^xn--/,C=/[^ -~]/,D=/\x2E|\u3002|\uFF0E|\uFF61/g,E={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=t-u,G=Math.floor,H=String.fromCharCode;if(q={version:"1.2.4",ucs2:{decode:e,encode:f},decode:j,encode:k,toASCII:m,toUnicode:l},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return q});else if(n&&!n.nodeType)if(o)o.exports=q;else for(r in q)q.hasOwnProperty(r)&&(n[r]=q[r]);else a.punycode=q}(this);

22
lib/yamd5.min.js vendored Normal file
View file

@ -0,0 +1,22 @@
// project home: https://github.com/gorhill/yamd5.js
// minified using http://lisperator.net/uglifyjs/
!function(t){"use strict";var r=function(t,r,e,n,i,s,f){return t+=(r&e|~r&n)+i+f,(t<<s|t>>>32-s)+r|0
},e=function(t,r,e,n,i,s,f){return t+=(r&n|e&~n)+i+f,(t<<s|t>>>32-s)+r|0},n=function(t,r,e,n,i,s,f){return t+=(r^e^n)+i+f,(t<<s|t>>>32-s)+r|0
},i=function(t,r,e,n,i,s,f){return t+=(e^(r|~n))+i+f,(t<<s|t>>>32-s)+r|0},s=function(t,s){var f=t[0],a=t[1],h=t[2],o=t[3];
f=r(f,a,h,o,s[0],7,-680876936),o=r(o,f,a,h,s[1],12,-389564586),h=r(h,o,f,a,s[2],17,606105819),a=r(a,h,o,f,s[3],22,-1044525330),f=r(f,a,h,o,s[4],7,-176418897),o=r(o,f,a,h,s[5],12,1200080426),h=r(h,o,f,a,s[6],17,-1473231341),a=r(a,h,o,f,s[7],22,-45705983),f=r(f,a,h,o,s[8],7,1770035416),o=r(o,f,a,h,s[9],12,-1958414417),h=r(h,o,f,a,s[10],17,-42063),a=r(a,h,o,f,s[11],22,-1990404162),f=r(f,a,h,o,s[12],7,1804603682),o=r(o,f,a,h,s[13],12,-40341101),h=r(h,o,f,a,s[14],17,-1502002290),a=r(a,h,o,f,s[15],22,1236535329),f=e(f,a,h,o,s[1],5,-165796510),o=e(o,f,a,h,s[6],9,-1069501632),h=e(h,o,f,a,s[11],14,643717713),a=e(a,h,o,f,s[0],20,-373897302),f=e(f,a,h,o,s[5],5,-701558691),o=e(o,f,a,h,s[10],9,38016083),h=e(h,o,f,a,s[15],14,-660478335),a=e(a,h,o,f,s[4],20,-405537848),f=e(f,a,h,o,s[9],5,568446438),o=e(o,f,a,h,s[14],9,-1019803690),h=e(h,o,f,a,s[3],14,-187363961),a=e(a,h,o,f,s[8],20,1163531501),f=e(f,a,h,o,s[13],5,-1444681467),o=e(o,f,a,h,s[2],9,-51403784),h=e(h,o,f,a,s[7],14,1735328473),a=e(a,h,o,f,s[12],20,-1926607734),f=n(f,a,h,o,s[5],4,-378558),o=n(o,f,a,h,s[8],11,-2022574463),h=n(h,o,f,a,s[11],16,1839030562),a=n(a,h,o,f,s[14],23,-35309556),f=n(f,a,h,o,s[1],4,-1530992060),o=n(o,f,a,h,s[4],11,1272893353),h=n(h,o,f,a,s[7],16,-155497632),a=n(a,h,o,f,s[10],23,-1094730640),f=n(f,a,h,o,s[13],4,681279174),o=n(o,f,a,h,s[0],11,-358537222),h=n(h,o,f,a,s[3],16,-722521979),a=n(a,h,o,f,s[6],23,76029189),f=n(f,a,h,o,s[9],4,-640364487),o=n(o,f,a,h,s[12],11,-421815835),h=n(h,o,f,a,s[15],16,530742520),a=n(a,h,o,f,s[2],23,-995338651),f=i(f,a,h,o,s[0],6,-198630844),o=i(o,f,a,h,s[7],10,1126891415),h=i(h,o,f,a,s[14],15,-1416354905),a=i(a,h,o,f,s[5],21,-57434055),f=i(f,a,h,o,s[12],6,1700485571),o=i(o,f,a,h,s[3],10,-1894986606),h=i(h,o,f,a,s[10],15,-1051523),a=i(a,h,o,f,s[1],21,-2054922799),f=i(f,a,h,o,s[8],6,1873313359),o=i(o,f,a,h,s[15],10,-30611744),h=i(h,o,f,a,s[6],15,-1560198380),a=i(a,h,o,f,s[13],21,1309151649),f=i(f,a,h,o,s[4],6,-145523070),o=i(o,f,a,h,s[11],10,-1120210379),h=i(h,o,f,a,s[2],15,718787259),a=i(a,h,o,f,s[9],21,-343485551),t[0]=f+t[0]|0,t[1]=a+t[1]|0,t[2]=h+t[2]|0,t[3]=o+t[3]|0
},f=function(t){for(var r,e,n="0123456789abcdef",i=[],s=0;s<t.length;s++){e=8*s,r=t[s];
for(var f=0;8>f;f+=2)i[e+1+f]=n.charAt(15&r),r>>>=4,i[e+0+f]=n.charAt(15&r),r>>>=4
}return i.join("")},a=function(){this._dataLength=0,this._state=new Int32Array(4),this._buffer=new ArrayBuffer(68),this._bufferLength=0,this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()
};a.prototype.appendStr=function(t){for(var r,e=this._buffer8,n=this._buffer32,i=this._bufferLength,f=0;f<t.length;f++){if(r=t.charCodeAt(f),128>r)e[i++]=r;
else if(2048>r)e[i++]=(r>>>6)+192,e[i++]=63&r|128;else if(55296>r||r>56319)e[i++]=(r>>>12)+224,e[i++]=r>>>6&63|128,e[i++]=63&r|128;
else{if(r=1024*(r-55296)+(t.charCodeAt(++f)-56320)+65536,r>1114111)throw"Unicode standard supports code points up to U+10FFFF";
e[i++]=(r>>>18)+240,e[i++]=r>>>12&63|128,e[i++]=r>>>6&63|128,e[i++]=63&r|128}if(i>=64)this._dataLength+=64,s(this._state,n),i-=64,n[0]=n[16]
}return this._bufferLength=i,this},a.prototype.start=function(){this._dataLength=0,this._bufferLength=0;
var t=this._state;return t[0]=1732584193,t[1]=-271733879,t[2]=-1732584194,t[3]=271733878,this
},a.prototype.end=function(t){var r=this._bufferLength;this._dataLength+=r;var e=this._buffer8;
e[r]=128,e[r+1]=e[r+2]=e[r+3]=0;var n,i=this._buffer32;for(n=(r>>2)+1;16>n;n++)i[n]=0;
if(r>55)for(s(this._state,i),n=0;16>n;n++)i[n]=0;var a=8*this._dataLength;if(4294967295>=a)i[14]=a;
else{var h=a.toString(16).match(/(.*?)(.{0,8})$/),o=parseInt(h[2],16),u=parseInt(h[1],16)||0;
i[14]=o,i[15]=u}return s(this._state,i),t?this._state:f(this._state)};var h=new a;
if(a.hashStr=function(t,r){return h.start().appendStr(t).end(r)},"5d41402abc4b2a76b9719d911017c592"!==a.hashStr("hello"))throw"This javascript engine does not support YaMD5. Sorry.";
if("object"==typeof t)t.YaMD5=a;return a}(this);

52
manifest.json Normal file
View file

@ -0,0 +1,52 @@
{
"manifest_version": 2,
"name": "__MSG_extName__",
"short_name": "µBlock",
"version": "0.1.0.0",
"description": "__MSG_extShortDesc__",
"icons": {
"16": "img/icon_16.png",
"128": "img/icon_128.png"
},
"browser_action": {
"default_icon": {
"19": "img/browsericons/icon19-off.png",
"38": "img/browsericons/icon38-off.png"
},
"default_title": "__MSG_extName__",
"default_popup": "popup.html"
},
"author": "Raymond Hill",
"background": {
"page": "background.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["js/contentscript-start.js"],
"run_at": "document_start",
"all_frames": true
},
{
"matches": ["http://*/*", "https://*/*"],
"js": ["js/contentscript-end.js"],
"run_at": "document_end",
"all_frames": true
}
],
"default_locale": "en",
"homepage_url": "https://github.com/gorhill/ublock/wiki",
"minimum_chrome_version": "22.0",
"options_page": "dashboard.html",
"permissions": [
"downloads",
"storage",
"tabs",
"unlimitedStorage",
"webNavigation",
"webRequest",
"webRequestBlocking",
"http://*/*",
"https://*/*"
]
}

79
popup.html Normal file
View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/common.css" type="text/css">
<style>
body {
margin: 0;
border: 0;
padding: 0;
font: 13px sans-serif;
background-color: white;
}
h1,h2,h3,h4 {
margin: 0;
padding: 4px;
border: 0;
color: white;
background-color: #444;
text-align: center;
}
body > div {
padding: 4px 8px 0 8px;
}
p {
margin: 16px 0;
white-space: nowrap;
text-align: center;
}
#page-blocked {
margin-top: 4px;
font-size: 20px;
}
#total-blocked {
margin-top: 4px;
font-size: 14px;
}
#stats {
margin-bottom: 4px;
text-align: center;
}
#switch .fa {
font-size: 48px;
color: green;
cursor: pointer;
}
#switch .fa.off {
color: #ccc;
}
#options {
margin-bottom: 0;
font-size: smaller;
}
.dim {
color: #aaa;
text-decoration: none;
}
</style>
<title>µBlock</title>
</head>
<body>
<h4>µBlock</h4>
<div>
<p id="switch"><span class="fa">&#xf011;</span></p>
<p style="font-size: 16px;">requests blocked</p>
<p id="stats">on this page</p>
<p id="page-blocked">?</p>
<p id="stats">since install</p>
<p id="total-blocked">?</p>
<p id="options"><a class="dim" href="dashboard.html" target="_blank">Options</a></p>
</div>
<script src="js/messaging-client.js"></script>
<script src="js/popup.js"></script>
</body>
</html>