diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 84d80f99..be43d704 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,7 +1,7 @@
'name': 'build'
'env':
- 'GO_VERSION': '1.19.6'
+ 'GO_VERSION': '1.19.7'
'NODE_VERSION': '14'
'on':
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index cf94cb26..8313cfa8 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,7 +1,7 @@
'name': 'lint'
'env':
- 'GO_VERSION': '1.19.6'
+ 'GO_VERSION': '1.19.7'
'on':
'push':
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1a6c20fb..e77938b3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,20 +14,90 @@ and this project adheres to
+
+
+## [v0.107.26] - 2023-03-09
+
+See also the [v0.107.26 GitHub milestone][ms-v0.107.26].
+
+### Security
+
+- Go version has been updated to prevent the possibility of exploiting the
+ CVE-2023-24532 Go vulnerability fixed in [Go 1.19.7][go-1.19.7].
+
+### Added
+
+- The ability to set custom IP for EDNS Client Subnet by using the new
+ `dns.edns_client_subnet.use_custom` and `dns.edns_client_subnet.custom_ip`
+ fields ([#1472]). The UI changes are coming in the upcoming releases.
+- The ability to use `dnstype` rules in the disallowed domains list ([#5468]).
+ This allows dropping requests based on their question types.
+
+### Changed
+
+#### Configuration Changes
+
+In this release, the schema version has changed from 16 to 17.
+
+- Property `edns_client_subnet`, which in schema versions 16 and earlier used
+ to be a part of the `dns` object, is now part of the `dns.edns_client_subnet`
+ object:
+
+ ```yaml
+ # BEFORE:
+ 'dns':
+ # …
+ 'edns_client_subnet': false
+
+ # AFTER:
+ 'dns':
+ # …
+ 'edns_client_subnet':
+ 'enabled': false
+ 'use_custom': false
+ 'custom_ip': ''
+ ```
+
+ To rollback this change, move the value of `dns.edns_client_subnet.enabled`
+ into the `dns.edns_client_subnet`, remove the fields
+ `dns.edns_client_subnet.enabled`, `dns.edns_client_subnet.use_custom`,
+ `dns.edns_client_subnet.custom_ip`, and change the `schema_version` back to
+ `16`.
+
### Fixed
+- Obsolete value of the Interface MTU DHCP option is now omitted ([#5281]).
+- Various dark theme bugs ([#5439], [#5441], [#5442], [#5515]).
+- Automatic update on MIPS64 and little-endian 32-bit MIPS architectures
+ ([#5270], [#5373]).
+- Requirements to domain names in domain-specific upstream configurations have
+ been relaxed to meet those from [RFC 3696][rfc3696] ([#4884]).
- Failing service installation via script on FreeBSD ([#5431]).
+[#1472]: https://github.com/AdguardTeam/AdGuardHome/issues/1472
+[#4884]: https://github.com/AdguardTeam/AdGuardHome/issues/4884
+[#5270]: https://github.com/AdguardTeam/AdGuardHome/issues/5270
+[#5281]: https://github.com/AdguardTeam/AdGuardHome/issues/5281
+[#5373]: https://github.com/AdguardTeam/AdGuardHome/issues/5373
[#5431]: https://github.com/AdguardTeam/AdGuardHome/issues/5431
+[#5439]: https://github.com/AdguardTeam/AdGuardHome/issues/5439
+[#5441]: https://github.com/AdguardTeam/AdGuardHome/issues/5441
+[#5442]: https://github.com/AdguardTeam/AdGuardHome/issues/5442
+[#5468]: https://github.com/AdguardTeam/AdGuardHome/issues/5468
+[#5515]: https://github.com/AdguardTeam/AdGuardHome/issues/5515
+
+[go-1.19.7]: https://groups.google.com/g/golang-announce/c/3-TpUx48iQY
+[ms-v0.107.26]: https://github.com/AdguardTeam/AdGuardHome/milestone/62?closed=1
+[rfc3696]: https://datatracker.ietf.org/doc/html/rfc3696
-[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.25...HEAD
+[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.26...HEAD
+[v0.107.26]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.25...v0.107.26
[v0.107.25]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.24...v0.107.25
[v0.107.24]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.23...v0.107.24
[v0.107.23]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.22...v0.107.23
diff --git a/Makefile b/Makefile
index f4e3a6f4..0f68acb6 100644
--- a/Makefile
+++ b/Makefile
@@ -4,17 +4,26 @@
# See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html.
.POSIX:
+# This comment is used to simplify checking local copies of the
+# Makefile. Bump this number every time a significant change is made to
+# this Makefile.
+#
+# AdGuard-Project-Version: 2
+
+# Don't name these macros "GO" etc., because GNU Make apparently makes
+# them exported environment variables with the literal value of
+# "${GO:-go}" and so on, which is not what we need. Use a dot in the
+# name to make sure that users don't have an environment variable with
+# the same name.
+#
+# See https://unix.stackexchange.com/q/646255/105635.
+GO.MACRO = $${GO:-go}
+VERBOSE.MACRO = $${VERBOSE:-0}
+
CHANNEL = development
CLIENT_DIR = client
COMMIT = $$( git rev-parse --short HEAD )
DIST_DIR = dist
-# Don't name this macro "GO", because GNU Make apparenly makes it an
-# exported environment variable with the literal value of "${GO:-go}",
-# which is not what we need. Use a dot in the name to make sure that
-# users don't have an environment variable with the same name.
-#
-# See https://unix.stackexchange.com/q/646255/105635.
-GO.MACRO = $${GO:-go}
GOPROXY = https://goproxy.cn|https://proxy.golang.org|direct
GOSUMDB = sum.golang.google.cn
GPG_KEY = devteam@adguard.com
@@ -25,7 +34,6 @@ NPM_INSTALL_FLAGS = $(NPM_FLAGS) --quiet --no-progress --ignore-engines\
--ignore-optional --ignore-platform --ignore-scripts
RACE = 0
SIGN = 1
-VERBOSE = 0
VERSION = v0.0.0
YARN = yarn
@@ -56,13 +64,13 @@ ENV = env\
PATH="$${PWD}/bin:$$( "$(GO.MACRO)" env GOPATH )/bin:$${PATH}"\
RACE='$(RACE)'\
SIGN='$(SIGN)'\
- VERBOSE='$(VERBOSE)'\
+ VERBOSE="$(VERBOSE.MACRO)"\
VERSION='$(VERSION)'\
# Keep the line above blank.
-# Keep this target first, so that a naked make invocation triggers
-# a full build.
+# Keep this target first, so that a naked make invocation triggers a
+# full build.
build: deps quick-build
quick-build: js-build go-build
@@ -116,4 +124,4 @@ go-os-check:
openapi-lint: ; cd ./openapi/ && $(YARN) test
openapi-show: ; cd ./openapi/ && $(YARN) start
-txt-lint: ; $(ENV) "$(SHELL)" ./scripts/make/txt-lint.sh
+txt-lint: ; $(ENV) "$(SHELL)" ./scripts/make/txt-lint.sh
diff --git a/bamboo-specs/release.yaml b/bamboo-specs/release.yaml
index f02431e0..0dce84b7 100644
--- a/bamboo-specs/release.yaml
+++ b/bamboo-specs/release.yaml
@@ -7,7 +7,7 @@
# Make sure to sync any changes with the branch overrides below.
'variables':
'channel': 'edge'
- 'dockerGo': 'adguard/golang-ubuntu:6.1'
+ 'dockerGo': 'adguard/golang-ubuntu:6.2'
'stages':
- 'Build frontend':
@@ -331,7 +331,7 @@
# need to build a few of these.
'variables':
'channel': 'beta'
- 'dockerGo': 'adguard/golang-ubuntu:6.1'
+ 'dockerGo': 'adguard/golang-ubuntu:6.2'
# release-vX.Y.Z branches are the branches from which the actual final release
# is built.
- '^release-v[0-9]+\.[0-9]+\.[0-9]+':
@@ -346,4 +346,4 @@
# are the ones that actually get released.
'variables':
'channel': 'release'
- 'dockerGo': 'adguard/golang-ubuntu:6.1'
+ 'dockerGo': 'adguard/golang-ubuntu:6.2'
diff --git a/bamboo-specs/test.yaml b/bamboo-specs/test.yaml
index 4708bcc7..38579455 100644
--- a/bamboo-specs/test.yaml
+++ b/bamboo-specs/test.yaml
@@ -5,7 +5,7 @@
'key': 'AHBRTSPECS'
'name': 'AdGuard Home - Build and run tests'
'variables':
- 'dockerGo': 'adguard/golang-ubuntu:6.1'
+ 'dockerGo': 'adguard/golang-ubuntu:6.2'
'stages':
- 'Tests':
diff --git a/client/src/__locales/fi.json b/client/src/__locales/fi.json
index c60508b9..b04ad021 100644
--- a/client/src/__locales/fi.json
+++ b/client/src/__locales/fi.json
@@ -297,7 +297,7 @@
"blocking_mode_refused": "REFUSED: Vastaa REFUSED-koodilla",
"blocking_mode_nxdomain": "NXDOMAIN: Vastaa NXDOMAIN-koodilla",
"blocking_mode_null_ip": "Tyhjä IP: Vastaa IP-nollaosoitteella (0.0.0.0 korvaa A; :: korvaa AAAA)",
- "blocking_mode_custom_ip": "Mukautettu IP: Vastaa itse määritetyllä IP-osoitteella",
+ "blocking_mode_custom_ip": "Mukautettu IP: Vastaa manuaalisesti määritetyllä IP-osoitteella",
"theme_auto": "Automaattinen",
"theme_light": "Vaalea",
"theme_dark": "Tumma",
diff --git a/client/src/__locales/no.json b/client/src/__locales/no.json
index 9756f88a..ca218d07 100644
--- a/client/src/__locales/no.json
+++ b/client/src/__locales/no.json
@@ -281,6 +281,7 @@
"blocking_mode_nxdomain": "NXDOMAIN: Svar med NXDOMAIN-koden",
"blocking_mode_null_ip": "Null IP: Svar med en 0-IP-adresse (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Tilpasset IP: Svar med en manuelt valgt IP-adresse",
+ "theme_auto": "Auto",
"upstream_dns_client_desc": "Hvis dette feltet holdes tomt, vil AdGuard Home bruke tjenerne som er satt opp i <0>DNS-innstillingene0>.",
"tracker_source": "Sporerkilde",
"source_label": "Kilde",
diff --git a/client/src/__locales/tr.json b/client/src/__locales/tr.json
index 72acb887..d4e3b172 100644
--- a/client/src/__locales/tr.json
+++ b/client/src/__locales/tr.json
@@ -449,7 +449,7 @@
"access_disallowed_title": "İzin verilmeyen istemciler",
"access_disallowed_desc": "CIDR'lerin, IP adreslerinin veya İstemci Kimliklerin listesi. Bu listede girişler varsa, AdGuard Home bu istemcilerden gelen istekleri keser. İzin verilen istemcilerde girişler varsa, bu alan yok sayılır.",
"access_blocked_title": "İzin verilmeyen alan adları",
- "access_blocked_desc": "Bu işlem filtrelerle ilgili değildir. AdGuard Home, bu alan adlarından gelen DNS sorgularını yanıtsız bırakır ve bu sorgular sorgu günlüğünde görünmez. Tam alan adlarını, joker karakterleri veya URL filtre kurallarını belirtebilirsiniz, ör. \"example.org\", \"*.example.org\" veya \"||example.org^\".",
+ "access_blocked_desc": "Bu işlem filtrelerle ilgili değildir. AdGuard Home, bu alan adlarından gelen DNS sorgularını yanıtsız bırakır ve bu sorgular sorgu günlüğünde görünmez. Tam alan adlarını, joker karakterleri veya URL filtre kurallarını belirtebilirsiniz, örn. \"example.org\", \"*.example.org\" veya \"||example.org^\".",
"access_settings_saved": "Erişim ayarları başarıyla kaydedildi!",
"updates_checked": "AdGuard Home'un yeni bir sürümü mevcut",
"updates_version_equal": "AdGuard Home yazılımı güncel durumda",
diff --git a/client/src/__locales/zh-cn.json b/client/src/__locales/zh-cn.json
index 27d2fcbd..3d417844 100644
--- a/client/src/__locales/zh-cn.json
+++ b/client/src/__locales/zh-cn.json
@@ -172,7 +172,7 @@
"list_url_table_header": "清单网址",
"rules_count_table_header": "规则数",
"last_time_updated_table_header": "上次更新时间",
- "actions_table_header": "活跃状态",
+ "actions_table_header": "操作",
"request_table_header": "请求",
"edit_table_action": "编辑",
"delete_table_action": "删除",
diff --git a/client/src/components/App/index.css b/client/src/components/App/index.css
index b20bd424..e11400b9 100644
--- a/client/src/components/App/index.css
+++ b/client/src/components/App/index.css
@@ -30,6 +30,11 @@
--loading-bg: rgba(255, 255, 255, 0.48);
--font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
--font-size-disable-autozoom: 1rem;
+ --alert-message-color: #24426c;
+ --alert-message-border: #cbdbf2;
+ --alert-message-bg: #dae5f5;
+ --checkbox-bg: #e2e2e2;
+ --radio-bg: #ffffff;
}
[data-theme="dark"] {
@@ -59,6 +64,11 @@
--detailed-info-color: #fff;
--gray300: #f3f3f3;
--loading-bg: #131313;
+ --alert-message-color: #e6e6e6;
+ --alert-message-border: #363648;
+ --alert-message-bg: #363648;
+ --checkbox-bg: #a4a4a4;
+ --radio-bg: #a4a4a4;
}
body {
diff --git a/client/src/components/Dashboard/index.js b/client/src/components/Dashboard/index.js
index 9bde0ea7..ff66820e 100644
--- a/client/src/components/Dashboard/index.js
+++ b/client/src/components/Dashboard/index.js
@@ -60,7 +60,7 @@ const Dashboard = ({
title={t('refresh_btn')}
onClick={() => getAllStats()}
>
-
+
;
diff --git a/client/src/components/Filters/Table.js b/client/src/components/Filters/Table.js
index 045d4be4..7a3c0e0b 100644
--- a/client/src/components/Filters/Table.js
+++ b/client/src/components/Filters/Table.js
@@ -100,7 +100,7 @@ class Table extends Component {
})
}
>
-
+
@@ -110,7 +110,7 @@ class Table extends Component {
onClick={() => handleDelete(url)}
title={t('delete_table_action')}
>
-
+
diff --git a/client/src/components/Logs/Cells/ClientCell.js b/client/src/components/Logs/Cells/ClientCell.js
index 9467f14e..3590df48 100644
--- a/client/src/components/Logs/Cells/ClientCell.js
+++ b/client/src/components/Logs/Cells/ClientCell.js
@@ -162,7 +162,7 @@ const ClientCell = ({
{content && (
{
const onInputClear = async () => {
setIsLoading(true);
- setDebouncedSearch(DEFAULT_LOGS_FILTER[FORM_NAMES.search]);
change(FORM_NAMES.search, DEFAULT_LOGS_FILTER[FORM_NAMES.search]);
setIsLoading(false);
};
diff --git a/client/src/components/Logs/Logs.css b/client/src/components/Logs/Logs.css
index bf0689e6..754f9fdb 100644
--- a/client/src/components/Logs/Logs.css
+++ b/client/src/components/Logs/Logs.css
@@ -106,6 +106,16 @@
max-height: 100% !important;
}
+.icon24 {
+ width: 24px;
+ height: 24px;
+}
+
+.icon12 {
+ width: 12px;
+ height: 12px;
+}
+
.cursor--pointer {
cursor: pointer;
}
@@ -130,6 +140,10 @@
background-color: transparent !important;
}
+[data-theme="dark"] .form-control--transparent option {
+ background-color: var(--card-bgcolor);
+}
+
.input-group-search {
background-color: transparent;
position: relative;
@@ -307,7 +321,6 @@
height: 100%;
display: flex;
justify-content: center;
- align-items: center;
}
.button-action:active {
@@ -400,6 +413,10 @@
background-color: var(--logs__row--blue-bgcolor);
}
+[data-theme="dark"] .logs__row--blue .logs__text--link {
+ color: var(--white);
+}
+
.logs__row--green {
background-color: var(--green-pale);
}
diff --git a/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js b/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
index f83c44ab..2d2b893b 100644
--- a/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
+++ b/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
@@ -290,7 +290,7 @@ const ClientsTable = ({
disabled={processingUpdating}
title={t('edit_table_action')}
>
-
+
@@ -301,7 +301,7 @@ const ClientsTable = ({
disabled={processingDeleting}
title={t('delete_table_action')}
>
-
+
diff --git a/client/src/components/Settings/Clients/Service.css b/client/src/components/Settings/Clients/Service.css
index 6cfcf40a..c4ca9d8c 100644
--- a/client/src/components/Settings/Clients/Service.css
+++ b/client/src/components/Settings/Clients/Service.css
@@ -54,6 +54,12 @@
color: #495057;
}
+.service__icon svg {
+ width: 20px;
+ height: 20px;
+ fill: #495057;
+}
+
.service--global .service__icon {
display: none;
}
diff --git a/client/src/components/ui/Checkbox.css b/client/src/components/ui/Checkbox.css
index 2a556fb0..111f0af0 100644
--- a/client/src/components/ui/Checkbox.css
+++ b/client/src/components/ui/Checkbox.css
@@ -48,7 +48,7 @@
height: 20px;
min-width: 20px;
margin-right: 10px;
- background-color: #e2e2e2;
+ background-color: var(--checkbox-bg);
background-repeat: no-repeat;
background-position: center center;
background-size: 12px 10px;
diff --git a/client/src/components/ui/Icons.js b/client/src/components/ui/Icons.js
index 38eff1be..bc725419 100644
--- a/client/src/components/ui/Icons.js
+++ b/client/src/components/ui/Icons.js
@@ -86,10 +86,10 @@ const Icons = () => (
d="m19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1 -2.83 0l-.06-.06a1.65 1.65 0 0 0 -1.82-.33 1.65 1.65 0 0 0 -1 1.51v.17a2 2 0 0 1 -2 2 2 2 0 0 1 -2-2v-.09a1.65 1.65 0 0 0 -1.08-1.51 1.65 1.65 0 0 0 -1.82.33l-.06.06a2 2 0 0 1 -2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0 -1.51-1h-.17a2 2 0 0 1 -2-2 2 2 0 0 1 2-2h.09a1.65 1.65 0 0 0 1.51-1.08 1.65 1.65 0 0 0 -.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33h.08a1.65 1.65 0 0 0 1-1.51v-.17a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0 -.33 1.82v.08a1.65 1.65 0 0 0 1.51 1h.17a2 2 0 0 1 2 2 2 2 0 0 1 -2 2h-.09a1.65 1.65 0 0 0 -1.51 1z" />
-
-
-
+
+
+
+
(
-
+
{
disabled={processingVersion}
title={t('check_updates_now')}
>
-
+
}
diff --git a/client/src/helpers/filters/filters.js b/client/src/helpers/filters/filters.js
index 6f4af9e5..68b3dd9c 100644
--- a/client/src/helpers/filters/filters.js
+++ b/client/src/helpers/filters/filters.js
@@ -101,7 +101,7 @@ export default {
"source": "https://adguardteam.github.io/HostlistsRegistry/assets/filter_13.txt"
},
"POL_polish_filters_for_pi_hole": {
- "name": "POL: Polish filters for Pi hole",
+ "name": "POL: Polish filters for Pi-hole",
"categoryId": "regional",
"homepage": "https://www.certyficate.it/",
"source": "https://adguardteam.github.io/HostlistsRegistry/assets/filter_14.txt"
@@ -235,7 +235,7 @@ export default {
"urlhaus_filter_online": {
"name": "Malicious URL Blocklist (URLHaus)",
"categoryId": "security",
- "homepage": "https://gitlab.com/malware-filter/urlhaus-filter",
+ "homepage": "https://urlhaus.abuse.ch/",
"source": "https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt"
},
"windowsspyblocker_hosts_spy_rules": {
diff --git a/client/src/helpers/trackers/adguard.json b/client/src/helpers/trackers/adguard.json
deleted file mode 100644
index 1e3bda05..00000000
--- a/client/src/helpers/trackers/adguard.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "timeUpdated": "2021-12-15",
- "categories": {
- "0": "audio_video_player",
- "1": "comments",
- "2": "customer_interaction",
- "3": "pornvertising",
- "4": "advertising",
- "5": "essential",
- "6": "site_analytics",
- "7": "social_media",
- "8": "misc",
- "9": "cdn",
- "10": "hosting",
- "11": "unknown",
- "12": "extensions",
- "13": "email",
- "14": "consent",
- "15": "telemetry",
- "101": "mobile_analytics"
- },
- "trackers": {
- "akamai_technologies": {
- "name": "Akamai Technologies",
- "categoryId": 9,
- "url": "https://www.akamai.com/",
- "companyId": "akamai"
- },
- "apple": {
- "name": "Apple",
- "categoryId": 8,
- "url": "https://www.apple.com/",
- "companyId": "apple"
- },
- "apple_ads": {
- "name": "Apple Search Ads",
- "categoryId": 4,
- "url": "https://searchads.apple.com/",
- "companyId": "apple"
- },
- "facebook_audience": {
- "name": "Facebook Audience Network",
- "categoryId": 4,
- "url": "https://www.facebook.com/business/products/audience-network",
- "companyId": "facebook"
- },
- "crashlytics": {
- "name": "Crashlytics",
- "categoryId": 101,
- "url": "https://crashlytics.com/",
- "companyId": null
- },
- "flurry": {
- "name": "Flurry",
- "categoryId": 101,
- "url": "http://www.flurry.com/",
- "companyId": "verizon"
- },
- "hockeyapp": {
- "name": "HockeyApp",
- "categoryId": 101,
- "url": "https://hockeyapp.net/",
- "companyId": null
- },
- "firebase": {
- "name": "Firebase",
- "categoryId": 101,
- "url": "https://firebase.google.com/",
- "companyId": "google"
- },
- "appsflyer": {
- "name": "AppsFlyer",
- "categoryId": 101,
- "url": "https://www.appsflyer.com/",
- "companyId": "appsflyer"
- },
- "yandex_appmetrica": {
- "name": "Yandex AppMetrica",
- "categoryId": 101,
- "url": "https://appmetrica.yandex.com/",
- "companyId": "yandex"
- },
- "adjust": {
- "name": "Adjust",
- "categoryId": 101,
- "url": "https://www.adjust.com/",
- "companyId": "adjust"
- },
- "branch": {
- "name": "Branch.io",
- "categoryId": 101,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc"
- },
- "markmonitor": {
- "name": "MarkMonitor",
- "categoryId": 4,
- "url": "https://www.markmonitor.com/",
- "companyId": "markmonitor"
- },
- "appcenter": {
- "name": "Microsoft App Center",
- "categoryId": 5,
- "url": "https://appcenter.ms/",
- "companyId": null
- },
- "unity_ads": {
- "name": "Unity Ads",
- "categoryId": 4,
- "url": "https://unity.com/solutions/mobile-business/monetize-your-game",
- "companyId": null
- },
- "azure": {
- "name": "Microsoft Azure",
- "categoryId": 10,
- "url": "https://azure.microsoft.com/",
- "companyId": "microsoft"
- },
- "button": {
- "name": "Button",
- "categoryId": 4,
- "url": "https://www.usebutton.com/",
- "companyId": null
- },
- "netflix": {
- "name": "Netflix",
- "categoryId": 8,
- "url": "https://www.netflix.com/",
- "companyId": null
- },
- "mail.ru_banner": {
- "name": "Mail.Ru Banner Network",
- "categoryId": 4,
- "url": "http://mail.ru/",
- "companyId": "vk"
- },
- "mail.ru_counter": {
- "name": "Mail.Ru Counter",
- "categoryId": 2,
- "url": "http://mail.ru/",
- "companyId": "vk"
- },
- "mail.ru_group": {
- "name": "Mail.Ru Group",
- "categoryId": 7,
- "url": "http://mail.ru/",
- "companyId": "vk"
- }
- },
- "trackerDomains": {
- "akadns.net": "akamai_technologies",
- "akamaiedge.net": "akamai_technologies",
- "apple.com": "apple",
- "apple.news": "apple",
- "apple-dns.net": "apple",
- "aaplimg.com": "apple",
- "icloud.com": "apple",
- "mzstatic.com": "apple",
- "iadsdk.apple.com": "apple_ads",
- "graph.facebook.com": "facebook_audience",
- "crashlytics.com": "crashlytics",
- "flurry.com": "flurry",
- "hockeyapp.net": "hockeyapp",
- "app-measurement.com": "firebase",
- "appsflyer.com": "appsflyer",
- "appmetrica.yandex.com": "yandex_appmetrica",
- "adjust.com": "adjust",
- "mobileapptracking.com": "branch",
- "edgecastcdn.net": "markmonitor",
- "appcenter.ms": "appcenter",
- "unityads.unity3d.com": "unity_ads",
- "azure.com": "azure",
- "bttn.io": "button"
- }
-}
diff --git a/client/src/helpers/trackers/trackers.json b/client/src/helpers/trackers/trackers.json
index 485b759e..8afb5aeb 100644
--- a/client/src/helpers/trackers/trackers.json
+++ b/client/src/helpers/trackers/trackers.json
@@ -1,5 +1,5 @@
{
- "timeUpdated": "2023-02-09T12:31:34.007Z",
+ "timeUpdated": "2023-03-08T00:09:48.692Z",
"categories": {
"0": "audio_video_player",
"1": "comments",
@@ -6772,55 +6772,64 @@
"name": "Facebook",
"categoryId": 4,
"url": "https://www.facebook.com",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_beacon": {
"name": "Facebook Beacon",
"categoryId": 7,
"url": "http://www.facebook.com/beacon/faq.php",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_cdn": {
"name": "Facebook CDN",
"categoryId": 9,
"url": "https://www.facebook.com",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_connect": {
"name": "Facebook Connect",
"categoryId": 6,
"url": "https://developers.facebook.com/connect.php",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_conversion_tracking": {
"name": "Facebook Conversion Tracking",
"categoryId": 4,
"url": "http://www.facebook.com/",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_custom_audience": {
"name": "Facebook Custom Audience",
"categoryId": 4,
"url": "https://www.facebook.com",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_graph": {
"name": "Facebook Social Graph",
"categoryId": 7,
"url": "https://developers.facebook.com/docs/reference/api/",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_impressions": {
"name": "Facebook Impressions",
"categoryId": 4,
"url": "https://www.facebook.com/",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facebook_social_plugins": {
"name": "Facebook Social Plugins",
"categoryId": 7,
"url": "https://developers.facebook.com/plugins",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"facetz.dca": {
"name": "Facetz.DCA",
@@ -8909,7 +8918,8 @@
"name": "Instagram",
"categoryId": 8,
"url": "https://www.facebook.com/",
- "companyId": "facebook"
+ "companyId": "meta",
+ "source": "AdGuard"
},
"instant_check_mate": {
"name": "Instant Check Mate",
@@ -19215,11 +19225,39 @@
"url": "http://www.zypmedia.com/",
"companyId": "zypmedia"
},
- "slack": {
- "name": "Slack",
+ "adguard_dns": {
+ "name": "AdGuard DNS",
"categoryId": 8,
- "url": "https://www.slack.com/",
- "companyId": "salesforce",
+ "url": "https://adguard-dns.io/",
+ "companyId": "adguard",
+ "source": "AdGuard"
+ },
+ "adguard_vpn": {
+ "name": "AdGuard VPN",
+ "categoryId": 8,
+ "url": "https://adguard-vpn.com/",
+ "companyId": "adguard",
+ "source": "AdGuard"
+ },
+ "appcenter": {
+ "name": "Microsoft App Center",
+ "categoryId": 5,
+ "url": "https://appcenter.ms/",
+ "companyId": null,
+ "source": "AdGuard"
+ },
+ "alibaba_cloud": {
+ "name": "Alibaba Cloud",
+ "categoryId": 10,
+ "url": "https://www.alibabacloud.com/",
+ "companyId": "alibaba",
+ "source": "AdGuard"
+ },
+ "alibaba_ucbrowser": {
+ "name": "UC Browser",
+ "categoryId": 8,
+ "url": "https://ucweb.com/",
+ "companyId": "alibaba",
"source": "AdGuard"
},
"apple": {
@@ -19236,53 +19274,25 @@
"companyId": "apple",
"source": "AdGuard"
},
- "facebook_audience": {
- "name": "Facebook Audience Network",
- "categoryId": 4,
- "url": "https://www.facebook.com/business/products/audience-network",
- "companyId": "facebook",
+ "azure": {
+ "name": "Microsoft Azure",
+ "categoryId": 10,
+ "url": "https://azure.microsoft.com/",
+ "companyId": "microsoft",
"source": "AdGuard"
},
- "crashlytics": {
- "name": "Crashlytics",
- "categoryId": 101,
- "url": "https://crashlytics.com/",
- "companyId": null,
- "source": "AdGuard"
- },
- "showrss": {
- "name": "showRSS",
+ "azure_blob_storage": {
+ "name": "Azure Blob Storage",
"categoryId": 8,
- "url": "https://showrss.info/",
- "companyId": "showrss",
+ "url": "https://azure.microsoft.com/en-us/products/storage/blobs",
+ "companyId": "microsoft",
"source": "AdGuard"
},
- "hockeyapp": {
- "name": "HockeyApp",
- "categoryId": 101,
- "url": "https://hockeyapp.net/",
- "companyId": null,
- "source": "AdGuard"
- },
- "google_trust_services": {
- "name": "Google Trust Services",
- "categoryId": 5,
- "url": "https://pki.goog/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "firebase": {
- "name": "Firebase",
- "categoryId": 101,
- "url": "https://firebase.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "yandex_appmetrica": {
- "name": "Yandex AppMetrica",
- "categoryId": 101,
- "url": "https://appmetrica.yandex.com/",
- "companyId": "yandex",
+ "bitwarden": {
+ "name": "Bitwarden",
+ "categoryId": 8,
+ "url": "https://bitwarden.com/",
+ "companyId": "bitwarden",
"source": "AdGuard"
},
"branch": {
@@ -19292,18 +19302,25 @@
"companyId": "branch_metrics_inc",
"source": "AdGuard"
},
- "qualcomm": {
- "name": "Qualcomm",
- "categoryId": 8,
- "url": "https://www.qualcomm.com/",
- "companyId": "qualcomm",
+ "button": {
+ "name": "Button",
+ "categoryId": 4,
+ "url": "https://www.usebutton.com/",
+ "companyId": null,
"source": "AdGuard"
},
- "solaredge": {
- "name": "SolarEdge Technologies, Inc.",
- "categoryId": 8,
- "url": "https://www.solaredge.com/",
- "companyId": "solaredge",
+ "crashlytics": {
+ "name": "Crashlytics",
+ "categoryId": 101,
+ "url": "https://crashlytics.com/",
+ "companyId": null,
+ "source": "AdGuard"
+ },
+ "edgio": {
+ "name": "Edgio",
+ "categoryId": 9,
+ "url": "https://edg.io/",
+ "companyId": "edgio",
"source": "AdGuard"
},
"element": {
@@ -19313,39 +19330,46 @@
"companyId": "element",
"source": "AdGuard"
},
- "outlook": {
- "name": "Microsoft Outlook",
+ "facebook_audience": {
+ "name": "Facebook Audience Network",
+ "categoryId": 4,
+ "url": "https://www.facebook.com/business/products/audience-network",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "firebase": {
+ "name": "Firebase",
+ "categoryId": 101,
+ "url": "https://firebase.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "gmail": {
+ "name": "Gmail",
"categoryId": 13,
- "url": "https://outlook.live.com/",
- "companyId": "microsoft",
+ "url": "https://mail.google.com/",
+ "companyId": "google",
"source": "AdGuard"
},
- "appcenter": {
- "name": "Microsoft App Center",
+ "google_trust_services": {
+ "name": "Google Trust Services",
"categoryId": 5,
- "url": "https://appcenter.ms/",
+ "url": "https://pki.goog/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "hockeyapp": {
+ "name": "HockeyApp",
+ "categoryId": 101,
+ "url": "https://hockeyapp.net/",
"companyId": null,
"source": "AdGuard"
},
- "unity_ads": {
- "name": "Unity Ads",
- "categoryId": 4,
- "url": "https://unity.com/solutions/mobile-business/monetize-your-game",
- "companyId": null,
- "source": "AdGuard"
- },
- "azure": {
- "name": "Microsoft Azure",
- "categoryId": 10,
- "url": "https://azure.microsoft.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "button": {
- "name": "Button",
- "categoryId": 4,
- "url": "https://www.usebutton.com/",
- "companyId": null,
+ "kik": {
+ "name": "Kik",
+ "categoryId": 7,
+ "url": "https://kik.com/",
+ "companyId": "kik",
"source": "AdGuard"
},
"lets_encrypt": {
@@ -19355,11 +19379,11 @@
"companyId": "lets_encrypt",
"source": "AdGuard"
},
- "plex": {
- "name": "Plex",
- "categoryId": 0,
- "url": "https://www.plex.tv/",
- "companyId": "plex",
+ "lgtv": {
+ "name": "LG TV",
+ "categoryId": 8,
+ "url": "https://www.lg.com/",
+ "companyId": "lgcorp",
"source": "AdGuard"
},
"matrix": {
@@ -19368,6 +19392,195 @@
"url": "https://matrix.org/",
"companyId": "matrix",
"source": "AdGuard"
+ },
+ "medialab": {
+ "name": "MediaLab.AI Inc.",
+ "categoryId": 8,
+ "url": "https://medialab.la/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "meganz": {
+ "name": "Mega Ltd.",
+ "categoryId": 8,
+ "url": "https://mega.io/",
+ "companyId": "meganz",
+ "source": "AdGuard"
+ },
+ "msedge": {
+ "name": "Microsoft Edge",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/en-us/edge",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "mozilla": {
+ "name": "Mozilla Foundation",
+ "categoryId": 8,
+ "url": "https://www.mozilla.org/",
+ "companyId": "mozilla",
+ "source": "AdGuard"
+ },
+ "nab": {
+ "name": "National Australia Bank",
+ "categoryId": 8,
+ "url": "https://www.nab.com.au/",
+ "companyId": "nab",
+ "source": "AdGuard"
+ },
+ "notion": {
+ "name": "Notion",
+ "categoryId": 8,
+ "url": "https://www.notion.so/",
+ "companyId": "notion",
+ "source": "AdGuard"
+ },
+ "ntppool": {
+ "name": "Network Time Protocol",
+ "categoryId": 5,
+ "url": "https://ntp.org/",
+ "companyId": "ntppool",
+ "source": "AdGuard"
+ },
+ "oppo": {
+ "name": "OPPO",
+ "categoryId": 101,
+ "url": "https://www.oppo.com/",
+ "companyId": "oppo",
+ "source": "AdGuard"
+ },
+ "outlook": {
+ "name": "Microsoft Outlook",
+ "categoryId": 13,
+ "url": "https://outlook.live.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "oztam": {
+ "name": "OzTAM",
+ "categoryId": 8,
+ "url": "https://oztam.com.au/",
+ "companyId": "oztam",
+ "source": "AdGuard"
+ },
+ "plex": {
+ "name": "Plex",
+ "categoryId": 0,
+ "url": "https://www.plex.tv/",
+ "companyId": "plex",
+ "source": "AdGuard"
+ },
+ "qualcomm": {
+ "name": "Qualcomm",
+ "categoryId": 8,
+ "url": "https://www.qualcomm.com/",
+ "companyId": "qualcomm",
+ "source": "AdGuard"
+ },
+ "recaptcha": {
+ "name": "reCAPTCHA",
+ "categoryId": 8,
+ "url": "https://www.google.com/recaptcha/about/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "sectigo": {
+ "name": "Sectigo Limited",
+ "categoryId": 5,
+ "url": "https://www.solaredge.com/",
+ "companyId": "sectigo",
+ "source": "AdGuard"
+ },
+ "showrss": {
+ "name": "showRSS",
+ "categoryId": 8,
+ "url": "https://showrss.info/",
+ "companyId": "showrss",
+ "source": "AdGuard"
+ },
+ "similarweb": {
+ "name": "SimilarWeb",
+ "categoryId": 6,
+ "url": "https://www.similarweb.com/",
+ "companyId": "similarweb",
+ "source": "AdGuard"
+ },
+ "slack": {
+ "name": "Slack",
+ "categoryId": 8,
+ "url": "https://www.slack.com/",
+ "companyId": "salesforce",
+ "source": "AdGuard"
+ },
+ "solaredge": {
+ "name": "SolarEdge Technologies, Inc.",
+ "categoryId": 8,
+ "url": "https://www.solaredge.com/",
+ "companyId": "solaredge",
+ "source": "AdGuard"
+ },
+ "telstra": {
+ "name": "Telstra",
+ "categoryId": 8,
+ "url": "https://www.telstra.com.au/",
+ "companyId": "telstra",
+ "source": "AdGuard"
+ },
+ "unity_ads": {
+ "name": "Unity Ads",
+ "categoryId": 4,
+ "url": "https://unity.com/solutions/mobile-business/monetize-your-game",
+ "companyId": null,
+ "source": "AdGuard"
+ },
+ "vscode": {
+ "name": "Visual Studio Code",
+ "categoryId": 8,
+ "url": "https://code.visualstudio.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "whatsapp": {
+ "name": "WhatsApp",
+ "categoryId": 8,
+ "url": "https://www.whatsapp.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "windows_maps": {
+ "name": "Windows Maps",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/store/apps/9wzdncrdtbvb",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "windows_notifications": {
+ "name": "The Windows Push Notification Services",
+ "categoryId": 8,
+ "url": "https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "windows_time": {
+ "name": "Windows Time Service",
+ "categoryId": 8,
+ "url": "https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/how-the-windows-time-service-works",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "windowsupdate": {
+ "name": "Windows Update",
+ "categoryId": 9,
+ "url": "https://support.microsoft.com/en-us/windows/windows-update-faq-8a903416-6f45-0718-f5c7-375e92dddeb2",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "yandex_appmetrica": {
+ "name": "Yandex AppMetrica",
+ "categoryId": 101,
+ "url": "https://appmetrica.yandex.com/",
+ "companyId": "yandex",
+ "source": "AdGuard"
}
},
"trackerDomains": {
@@ -23698,53 +23911,190 @@
"zwaar.net": "zwaar",
"zwaar.org": "zwaar",
"extend.tv": "zypmedia",
- "slack.com": "slack",
- "slackb.com": "slack",
- "slack-edge.com": "slack",
- "slack-imgs.com": "slack",
+ "adtidy.org": "adguard",
+ "agrd.io": "adguard",
"adguard.app": "adguard",
"adguard.io": "adguard",
"adguard.org": "adguard",
- "adguard-dns.com": "adguard",
- "adguard-dns.io": "adguard",
- "adguard-vpn.com": "adguard",
- "adguardvpn.com": "adguard",
- "adguard-vpn.online": "adguard",
- "nflximg.com": "netflix",
- "element.io": "element",
- "riot.im": "element",
+ "adguard-dns.com": "adguard_dns",
+ "adguard-dns.io": "adguard_dns",
+ "adguardvpn.com": "adguard_vpn",
+ "adguard-vpn.com": "adguard_vpn",
+ "adguard-vpn.online": "adguard_vpn",
+ "adjust.net.in": "adjust",
+ "adj.st": "adjust",
+ "adjust.io": "adjust",
+ "adjust.world": "adjust",
+ "apptrace.com": "adjust",
"akadns.net": "akamai_technologies",
"akamaiedge.net": "akamai_technologies",
+ "akaquill.net": "akamai_technologies",
+ "aliapp.org": "alibaba.com",
+ "alibabachengdun.com": "alibaba.com",
+ "alibabausercontent.com": "alibaba.com",
+ "aliexpress.com": "alibaba.com",
+ "alikunlun.com": "alibaba.com",
+ "aliyuncs.com": "alibaba.com",
+ "alibabacloud.com": "alibaba_cloud",
+ "alibabadns.com": "alibaba_cloud",
+ "aliyun.com": "alibaba_cloud",
+ "ucweb.com": "alibaba_ucbrowser",
+ "alipayobjects.com": "alipay.com",
+ "amazoncrl.com": "amazon",
+ "aamazoncognito.com": "amazon",
+ "amazonbrowserapp.es": "amazon",
+ "amazonbrowserapp.co.uk": "amazon",
+ "amazon.sa": "amazon",
+ "amazon.nl": "amazon",
+ "amazon.in": "amazon",
+ "amazon.com.mx": "amazon",
+ "amazon.com.au": "amazon",
+ "amazon-corp.com": "amazon",
+ "a2z.com": "amazon",
+ "amazontrust.com": "amazon_cdn",
+ "associates-amazon.com": "amazon_cdn",
+ "amazonpay.in": "amazon_payments",
+ "amazonvideo.com": "amazon_video",
+ "taobao.com": "taobao",
+ "appcenter.ms": "appcenter",
+ "iadsdk.apple.com": "apple_ads",
+ "me.com": "apple",
"apple.news": "apple",
"apple-dns.net": "apple",
"aaplimg.com": "apple",
"icloud.com": "apple",
+ "itunes.com": "apple",
"icloud-content.com": "apple",
"mzstatic.com": "apple",
- "matrix.org": "matrix",
- "l-msedge.net": "microsoft",
- "iadsdk.apple.com": "apple_ads",
- "showrss.info": "showrss",
- "solaredge.com": "solaredge",
- "crashlytics.com": "crashlytics",
- "flurry.com": "flurry",
- "hockeyapp.net": "hockeyapp",
- "app-measurement.com": "firebase",
- "appmetrica.yandex.com": "yandex_appmetrica",
- "letsencrypt.org": "lets_encrypt",
- "lencr.org": "lets_encrypt",
- "mobileapptracking.com": "branch",
- "plex.tv": "plex",
- "plex.direct": "plex",
- "edgecastcdn.net": "markmonitor",
- "appcenter.ms": "appcenter",
- "unityads.unity3d.com": "unity_ads",
+ "cdn-apple.com": "apple",
+ "apple-mapkit.com": "apple",
+ "icons.axm-usercontent-apple.com": "apple",
+ "apple-cloudkit.com": "apple",
+ "apzones.com": "apple",
+ "apple-livephotoskit.com": "apple",
+ "safebrowsing.apple": "apple",
+ "safebrowsing.g.applimg.com": "apple",
+ "applvn.com": "applovin",
+ "applovin.com": "applovin",
+ "blob.core.windows.net": "azure_blob_storage",
"azure.com": "azure",
"trafficmanager.net": "azure",
- "hotmail.com": "outlook",
+ "bitwarden.com": "bitwarden",
+ "mobileapptracking.com": "branch",
"bttn.io": "button",
+ "cloudflare-dns.com": "cloudflare",
+ "crashlytics.com": "crashlytics",
+ "phicdn.net": "digicert_trust_seal",
+ "alphacdn.net": "edgio",
+ "edg.io": "edgio",
+ "edgecast.com": "edgio",
+ "edgecastcdn.net": "edgio",
+ "edgecastdns.net": "edgio",
+ "sigmacdn.net": "edgio",
+ "element.io": "element",
+ "riot.im": "element",
+ "app-measurement.com": "firebase",
+ "flipboard.com": "flipboard",
+ "flurry.com": "flurry",
+ "ghcr.io": "github",
+ "github.dev": "github",
+ "gmail.com": "gmail",
+ "googlehosted.com": "google_appspot",
+ "gvt1.com": "google_servers",
+ "gvt2.com": "google_servers",
+ "gvt3.com": "google_servers",
"pki.goog": "google_trust_services",
+ "hockeyapp.net": "hockeyapp",
+ "kik.com": "kik",
+ "apikik.com": "kik",
+ "kik-live.com": "kik",
+ "slatic.net": "lazada",
+ "lencr.org": "lets_encrypt",
+ "letsencrypt.org": "lets_encrypt",
+ "lgsmartad.com": "lgtv",
+ "lgtvcommon.com": "lgtv",
+ "lgtvsdp.com": "lgtv",
+ "lge.com": "lgtv",
+ "lg.com": "lgtv",
+ "markmonitor.com": "markmonitor",
+ "matrix.org": "matrix",
+ "medialab.la": "medialab",
+ "media-lab.ai": "medialab",
+ "mega.co.nz": "meganz",
+ "mega.io": "meganz",
+ "mega.nz": "meganz",
+ "e-msedge.net": "msedge",
+ "l-msedge.net": "msedge",
+ "firefox.com": "mozilla",
+ "mozaws.net": "mozilla",
+ "mozgcp.net": "mozilla",
+ "mozilla.com": "mozilla",
+ "mozilla.net": "mozilla",
+ "mozilla.org": "mozilla",
+ "nflximg.com": "netflix",
+ "nab.com": "nab",
+ "nab.com.au": "nab",
+ "nab.net": "nab",
+ "nabgroup.com": "nab",
+ "national.com.au": "nab",
+ "nationalaustraliabank.com.au": "nab",
+ "nationalbank.com.au": "nab",
+ "notion.so": "notion",
+ "ntp.org": "ntppool",
+ "ntppool.org": "ntppool",
+ "oppomobile.com": "oppo",
+ "heytapmobi.com": "oppo",
+ "heytapmobile.com": "oppo",
+ "heytapdl.com": "oppo",
+ "allawnos.com": "oppo",
+ "allawntech.com": "oppo",
+ "hotmail.com": "outlook",
+ "outlook.com": "outlook",
+ "oztam.com.au": "oztam",
+ "plex.tv": "plex",
+ "plex.direct": "plex",
"xtracloud.net": "qualcomm",
- "qualcomm.com": "qualcomm"
+ "qualcomm.com": "qualcomm",
+ "recaptcha.net": "recaptcha",
+ "sectigo.com": "sectigo",
+ "showrss.info": "showrss",
+ "similarweb.io": "similarweb",
+ "similarweb.com": "similarweb",
+ "slack.com": "slack",
+ "slackb.com": "slack",
+ "slack-edge.com": "slack",
+ "slack-imgs.com": "slack",
+ "addlive.io": "snap",
+ "feelinsonice.com": "snap",
+ "sc-cdn.net": "snap",
+ "sc-corp.net": "snap",
+ "sc-gw.com": "snap",
+ "sc-jpl.com": "snap",
+ "sc-prod.net": "snap",
+ "snap-dev.net": "snap",
+ "snapads.com": "snap",
+ "snapkit.com": "snap",
+ "solaredge.com": "solaredge",
+ "telstra.com.au": "telstra",
+ "telstra.com": "telstra",
+ "usertrust.com": "trustlogo",
+ "unityads.unity3d.com": "unity_ads",
+ "exp-tas.com": "vscode",
+ "vscode-unpkg.net": "vscode",
+ "v0cdn.net": "vscode",
+ "vscode-cdn.net": "vscode",
+ "whatsapp.net": "whatsapp",
+ "whatsapp.com": "whatsapp",
+ "maps.windows.com": "windows_maps",
+ "client.wns.windows.com": "windows_notifications",
+ "time.windows.com": "windows_time",
+ "windowsupdate.com": "windowsupdate",
+ "ya.ru": "yandex",
+ "yandex.by": "yandex",
+ "yandex.com": "yandex",
+ "yandex.com.tr": "yandex",
+ "yandex.fr": "yandex",
+ "yandex.kz": "yandex",
+ "appmetrica.yandex.com": "yandex_appmetrica"
}
}
\ No newline at end of file
diff --git a/client/src/helpers/trackers/whotracksme.json b/client/src/helpers/trackers/whotracksme.json
deleted file mode 100644
index bc8e7fed..00000000
--- a/client/src/helpers/trackers/whotracksme.json
+++ /dev/null
@@ -1,23534 +0,0 @@
-{
- "timeUpdated": "2022-10-15T00:14:03.765Z",
- "categories": {
- "0": "audio_video_player",
- "1": "comments",
- "2": "customer_interaction",
- "3": "pornvertising",
- "4": "advertising",
- "5": "essential",
- "6": "site_analytics",
- "7": "social_media",
- "8": "misc",
- "9": "cdn",
- "10": "hosting",
- "11": "unknown",
- "12": "extensions",
- "13": "email",
- "14": "consent",
- "15": "telemetry"
- },
- "trackers": {
- "163": {
- "name": "163",
- "categoryId": 4,
- "url": "http://www.163.com/",
- "companyId": "163"
- },
- "1000mercis": {
- "name": "1000mercis",
- "categoryId": 6,
- "url": "http://www.1000mercis.com/",
- "companyId": "1000mercis"
- },
- "161media": {
- "name": "Platform161",
- "categoryId": 4,
- "url": "https://platform161.com/",
- "companyId": "platform161"
- },
- "1822direkt.de": {
- "name": "1822direkt.de",
- "categoryId": 8,
- "url": "https://www.1822direkt.de/",
- "companyId": null
- },
- "1dmp.io": {
- "name": "1DMP",
- "categoryId": 4,
- "url": "https://1dmp.io/",
- "companyId": "1dmp"
- },
- "1plusx": {
- "name": "1plusX",
- "categoryId": 6,
- "url": "https://www.1plusx.com/",
- "companyId": "1plusx"
- },
- "1sponsor": {
- "name": "1sponsor",
- "categoryId": 4,
- "url": "http://fr.1sponsor.com/",
- "companyId": "1sponsor"
- },
- "1tag": {
- "name": "1tag",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "1und1": {
- "name": "1&1 Internet",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "24-ads.com": {
- "name": "24-ADS GmbH",
- "categoryId": 4,
- "url": "http://www.24-ads.com/",
- "companyId": null
- },
- "24_7": {
- "name": "[24]7",
- "categoryId": 2,
- "url": "http://www.247-inc.com/",
- "companyId": "24_7"
- },
- "24log": {
- "name": "24log",
- "categoryId": 6,
- "url": "http://24log.ru/",
- "companyId": "24log"
- },
- "24smi": {
- "name": "24СМИ",
- "categoryId": 8,
- "url": "https://24smi.org/",
- "companyId": null
- },
- "2leep": {
- "name": "2leep",
- "categoryId": 4,
- "url": "http://2leep.com/",
- "companyId": "2leep"
- },
- "33across": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://33across.com/",
- "companyId": "33across"
- },
- "3dstats": {
- "name": "3DStats",
- "categoryId": 6,
- "url": "http://www.3dstats.com/",
- "companyId": "3dstats"
- },
- "4chan": {
- "name": "4Chan",
- "categoryId": 8,
- "url": "https://www.4chan.org/",
- "companyId": null
- },
- "4finance_com": {
- "name": "4finance.com",
- "categoryId": 2,
- "url": "http://4finance.com/",
- "companyId": null
- },
- "4w_marketplace": {
- "name": "4w Marketplace",
- "categoryId": 4,
- "url": "http://www.4wmarketplace.com/",
- "companyId": "4w_marketplace"
- },
- "500friends": {
- "name": "500friends",
- "categoryId": 2,
- "url": "http://500friends.com/",
- "companyId": "500friends"
- },
- "51.la": {
- "name": "51.La",
- "categoryId": 6,
- "url": "http://www.51.la/",
- "companyId": "51.la"
- },
- "5min_media": {
- "name": "5min Media",
- "categoryId": 0,
- "url": "http://www.5min.com/",
- "companyId": "verizon"
- },
- "6sense": {
- "name": "6Sense",
- "categoryId": 6,
- "url": "http://home.grepdata.com",
- "companyId": "6sense"
- },
- "77tracking": {
- "name": "77Tracking",
- "categoryId": 6,
- "url": "http://www.77agency.com/",
- "companyId": "77agency"
- },
- "7tv.de": {
- "name": "7tv.de",
- "categoryId": 0,
- "url": "https://www.7tv.de/",
- "companyId": null
- },
- "888media": {
- "name": "888media",
- "categoryId": 4,
- "url": "http://888media.net/",
- "companyId": "888_media"
- },
- "8digits": {
- "name": "8digits",
- "categoryId": 6,
- "url": "http://8digits.com/",
- "companyId": "8digits"
- },
- "94j7afz2nr.xyz": {
- "name": "94j7afz2nr.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "99stats": {
- "name": "99stats",
- "categoryId": 6,
- "url": "http://www.99stats.com/",
- "companyId": "99stats"
- },
- "a3cloud_net": {
- "name": "a3cloud.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "a8": {
- "name": "A8",
- "categoryId": 4,
- "url": "http://www.a8.net/",
- "companyId": "a8"
- },
- "aaxads.com": {
- "name": "Acceptable Ads Exchange",
- "categoryId": 4,
- "url": "https://aax.media/",
- "companyId": null
- },
- "ab_tasty": {
- "name": "AB Tasty",
- "categoryId": 6,
- "url": "https://en.abtasty.com",
- "companyId": "ab_tasty"
- },
- "ablida": {
- "name": "ablida",
- "categoryId": 4,
- "url": "https://www.ablida.de/",
- "companyId": null
- },
- "accelia": {
- "name": "Accelia",
- "categoryId": 4,
- "url": "http://www.durasite.net/",
- "companyId": "accelia"
- },
- "accengage": {
- "name": "Accengage",
- "categoryId": 4,
- "url": "https://www.accengage.com/",
- "companyId": "accengage"
- },
- "accessanalyzer": {
- "name": "AccessAnalyzer",
- "categoryId": 6,
- "url": "http://ax.xrea.com/",
- "companyId": "accessanalyzer"
- },
- "accesstrade": {
- "name": "AccessTrade",
- "categoryId": 4,
- "url": "http://accesstrade.net/",
- "companyId": "accesstrade"
- },
- "accord_group": {
- "name": "Accord Group",
- "categoryId": 4,
- "url": "http://www.accordgroup.co.uk/",
- "companyId": "accord_group"
- },
- "accordant_media": {
- "name": "Accordant Media",
- "categoryId": 4,
- "url": "http://www.accordantmedia.com/",
- "companyId": "accordant_media"
- },
- "accuen_media": {
- "name": "Accuen Media",
- "categoryId": 4,
- "url": "http://www.accuenmedia.com/",
- "companyId": "accuen_media"
- },
- "acestream.net": {
- "name": "ActStream",
- "categoryId": 12,
- "url": "http://www.acestream.org/",
- "companyId": null
- },
- "acint.net": {
- "name": "Artificial Computation Intelligence",
- "categoryId": 6,
- "url": "https://www.acint.net/",
- "companyId": "acint"
- },
- "acloudimages": {
- "name": "Acloudimages",
- "categoryId": 4,
- "url": "http://adsterra.com",
- "companyId": "adsterra"
- },
- "acpm.fr": {
- "name": "ACPM",
- "categoryId": 6,
- "url": "http://www.acpm.fr/",
- "companyId": null
- },
- "acquia.com": {
- "name": "Acquia",
- "categoryId": 6,
- "url": "https://www.acquia.com/",
- "companyId": null
- },
- "acrweb": {
- "name": "ACRWEB",
- "categoryId": 7,
- "url": "http://www.ziyu.net/",
- "companyId": "acrweb"
- },
- "actionpay": {
- "name": "actionpay",
- "categoryId": 4,
- "url": "http://actionpay.ru/",
- "companyId": "actionpay"
- },
- "active_agent": {
- "name": "Active Agent",
- "categoryId": 4,
- "url": "http://www.active-agent.com/",
- "companyId": "active_agent"
- },
- "active_campaign": {
- "name": "Active Campaign",
- "categoryId": 6,
- "url": "https://www.activecampaign.com",
- "companyId": "active_campaign"
- },
- "active_performance": {
- "name": "Active Performance",
- "categoryId": 4,
- "url": "http://www.active-performance.de/",
- "companyId": "active_performance"
- },
- "activeconversion": {
- "name": "ActiveConversion",
- "categoryId": 4,
- "url": "http://www.activeconversion.com/",
- "companyId": "activeconversion"
- },
- "activecore": {
- "name": "activecore",
- "categoryId": 6,
- "url": "http://activecore.jp/",
- "companyId": "activecore"
- },
- "activemeter": {
- "name": "ActiveMeter",
- "categoryId": 4,
- "url": "http://www.activemeter.com/",
- "companyId": "activeconversion"
- },
- "activengage": {
- "name": "ActivEngage",
- "categoryId": 2,
- "url": "http://www.activengage.com",
- "companyId": "activengage"
- },
- "acton": {
- "name": "Act-On Beacon",
- "categoryId": 4,
- "url": "http://www.actonsoftware.com/",
- "companyId": "act-on"
- },
- "acuity_ads": {
- "name": "Acuity Ads",
- "categoryId": 4,
- "url": "http://www.acuityads.com/",
- "companyId": "acuity_ads"
- },
- "acxiom": {
- "name": "Acxiom",
- "categoryId": 4,
- "url": "http://www.acxiom.com",
- "companyId": "acxiom"
- },
- "ad-blocker.org": {
- "name": "ad-blocker.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-center": {
- "name": "Ad-Center",
- "categoryId": 6,
- "url": "http://www.ad-center.com",
- "companyId": "ad-center"
- },
- "ad-delivery.net": {
- "name": "ad-delivery.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-sys": {
- "name": "Ad-Sys",
- "categoryId": 4,
- "url": "http://www.ad-sys.com/",
- "companyId": "ad-sys"
- },
- "ad.agio": {
- "name": "Ad.agio",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "ad2click": {
- "name": "Ad2Click",
- "categoryId": 4,
- "url": "http://www.ad2click.com/",
- "companyId": "ad2click_media"
- },
- "ad2games": {
- "name": "ad2games",
- "categoryId": 4,
- "url": "http://web.ad2games.com/",
- "companyId": "ad2games"
- },
- "ad360": {
- "name": "Ad360",
- "categoryId": 4,
- "url": "http://ad360.vn",
- "companyId": "ad360"
- },
- "ad4game": {
- "name": "ad4game",
- "categoryId": 4,
- "url": "http://www.ad4game.com/",
- "companyId": "ad4game"
- },
- "ad4mat": {
- "name": "ad4mat",
- "categoryId": 4,
- "url": "http://ad4mat.info",
- "companyId": "ad4mat"
- },
- "ad6media": {
- "name": "ad6media",
- "categoryId": 4,
- "url": "https://www.ad6media.fr/",
- "companyId": "ad6media"
- },
- "ad_decisive": {
- "name": "Ad Decisive",
- "categoryId": 4,
- "url": "http://www.lagardere-global-advertising.com/",
- "companyId": "lagardere_advertising"
- },
- "ad_dynamo": {
- "name": "Ad Dynamo",
- "categoryId": 4,
- "url": "http://www.addynamo.com/",
- "companyId": "ad_dynamo"
- },
- "ad_ebis": {
- "name": "AD EBiS",
- "categoryId": 4,
- "url": "http://www.ebis.ne.jp/en/",
- "companyId": "ad_ebis"
- },
- "ad_lightning": {
- "name": "Ad Lightning",
- "categoryId": 4,
- "url": "https://www.adlightning.com/",
- "companyId": "ad_lightning"
- },
- "ad_magnet": {
- "name": "Ad Magnet",
- "categoryId": 4,
- "url": "http://www.admagnet.com/",
- "companyId": "ad_magnet"
- },
- "ad_spirit": {
- "name": "Ad Spirit",
- "categoryId": 4,
- "url": "http://www.adspirit.de",
- "companyId": "adspirit"
- },
- "adac_de": {
- "name": "adac.de",
- "categoryId": 8,
- "url": "http://adac.de/",
- "companyId": null
- },
- "adacado": {
- "name": "Adacado",
- "categoryId": 4,
- "url": "http://www.adacado.com/",
- "companyId": "adacado"
- },
- "adadyn": {
- "name": "Adadyn",
- "categoryId": 4,
- "url": "http://ozonemedia.com/index.html",
- "companyId": "adadyn"
- },
- "adality_gmbh": {
- "name": "adality GmbH",
- "categoryId": 4,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "adalliance.io": {
- "name": "Ad Alliance",
- "categoryId": 4,
- "url": "https://www.ad-alliance.de/",
- "companyId": null
- },
- "adalyser.com": {
- "name": "Adalyser",
- "categoryId": 6,
- "url": "https://www.adalyser.com/",
- "companyId": "onesoon"
- },
- "adaos": {
- "name": "ADAOS",
- "categoryId": 4,
- "url": "http://www.24-interactive.com",
- "companyId": "24_interactive"
- },
- "adap.tv": {
- "name": "Adap.tv",
- "categoryId": 4,
- "url": "http://www.adap.tv/",
- "companyId": "verizon"
- },
- "adaptiveblue_smartlinks": {
- "name": "AdaptiveBlue SmartLinks",
- "categoryId": 2,
- "url": "http://www.adaptiveblue.com/smartlinks.html",
- "companyId": "telfie"
- },
- "adara_analytics": {
- "name": "ADARA Analytics",
- "categoryId": 4,
- "url": "http://www.adaramedia.com/",
- "companyId": "adara_analytics"
- },
- "adasia_holdings": {
- "name": "AdAsia Holdings",
- "categoryId": 4,
- "url": "https://adasiaholdings.com/",
- "companyId": "adasia_holdings"
- },
- "adbetclickin.pink": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "http://adbetnet.com/",
- "companyId": null
- },
- "adbetnet.com": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "https://adbetnet.com/",
- "companyId": null
- },
- "adblade.com": {
- "name": "Adblade",
- "categoryId": 4,
- "url": "https://adblade.com/",
- "companyId": "adblade"
- },
- "adbooth": {
- "name": "Adbooth",
- "categoryId": 4,
- "url": "http://www.adbooth.com/",
- "companyId": "adbooth_media_group"
- },
- "adbox": {
- "name": "AdBox",
- "categoryId": 4,
- "url": "http://www.adbox.lv/",
- "companyId": "adbox"
- },
- "adbrain": {
- "name": "Adbrain",
- "categoryId": 6,
- "url": "https://www.adbrain.com/",
- "companyId": "adbrain"
- },
- "adbrite": {
- "name": "AdBrite",
- "categoryId": 4,
- "url": "http://www.adbrite.com/",
- "companyId": "centro"
- },
- "adbull": {
- "name": "AdBull",
- "categoryId": 4,
- "url": "http://www.adbull.com/",
- "companyId": "adbull"
- },
- "adbutler": {
- "name": "AdButler",
- "categoryId": 4,
- "url": "https://www.adbutler.com/d",
- "companyId": "sparklit_networks"
- },
- "adc_media": {
- "name": "ad:C media",
- "categoryId": 4,
- "url": "http://www.adcmedia.de/en/",
- "companyId": "ad:c_media"
- },
- "adcash": {
- "name": "Adcash",
- "categoryId": 4,
- "url": "http://www.adcash.com",
- "companyId": "adcash"
- },
- "adchakra": {
- "name": "AdChakra",
- "categoryId": 6,
- "url": "http://adchakra.com/",
- "companyId": "adchakra"
- },
- "adchina": {
- "name": "AdChina",
- "categoryId": 4,
- "url": "http://www.adchina.com/",
- "companyId": "alibaba"
- },
- "adcito": {
- "name": "Adcito",
- "categoryId": 4,
- "url": "http://adcito.com/",
- "companyId": "adcito"
- },
- "adclear": {
- "name": "AdClear",
- "categoryId": 4,
- "url": "http://www.adclear.de/en/home.html",
- "companyId": "adclear"
- },
- "adclerks": {
- "name": "Adclerks",
- "categoryId": 4,
- "url": "https://adclerks.com/",
- "companyId": "adclerks"
- },
- "adclickmedia": {
- "name": "AdClickMedia",
- "categoryId": 4,
- "url": "http://www.adclickmedia.com/",
- "companyId": "adclickmedia"
- },
- "adclickzone": {
- "name": "AdClickZone",
- "categoryId": 4,
- "url": "http://www.adclickzone.com/",
- "companyId": "adclickzone"
- },
- "adcloud": {
- "name": "adcloud",
- "categoryId": 4,
- "url": "https://ad-cloud.jp",
- "companyId": "adcloud"
- },
- "adcolony": {
- "name": "AdColony",
- "categoryId": 4,
- "url": "thttp://www.admarvel.com/",
- "companyId": "adcolony"
- },
- "adconion": {
- "name": "Adconion",
- "categoryId": 4,
- "url": "http://www.adconion.com/",
- "companyId": "singtel"
- },
- "adcrowd": {
- "name": "Adcrowd",
- "categoryId": 4,
- "url": "https://www.adcrowd.com",
- "companyId": "adcrowd"
- },
- "adcurve": {
- "name": "AdCurve",
- "categoryId": 4,
- "url": "http://www.shop2market.com/",
- "companyId": "adcurve"
- },
- "add_to_calendar": {
- "name": "Add To Calendar",
- "categoryId": 2,
- "url": "http://addtocalendar.com/",
- "companyId": "addtocalendar"
- },
- "addaptive": {
- "name": "Addaptive",
- "categoryId": 4,
- "url": "http://www.datapointmedia.com/",
- "companyId": "addaptive"
- },
- "addefend": {
- "name": "AdDefend",
- "categoryId": 4,
- "url": "https://www.addefend.com/",
- "companyId": null
- },
- "addfreestats": {
- "name": "AddFreeStats",
- "categoryId": 6,
- "url": "http://www.addfreestats.com/",
- "companyId": "3dstats"
- },
- "addinto": {
- "name": "AddInto",
- "categoryId": 2,
- "url": "http://www.addinto.com/",
- "companyId": "addinto"
- },
- "addshoppers": {
- "name": "AddShoppers",
- "categoryId": 7,
- "url": "http://www.addshoppers.com/",
- "companyId": "addshoppers"
- },
- "addthis": {
- "name": "AddThis",
- "categoryId": 4,
- "url": "http://www.addthis.com/",
- "companyId": "oracle"
- },
- "addvalue": {
- "name": "Addvalue",
- "categoryId": 6,
- "url": "http://www.addvalue.de/en/",
- "companyId": "addvalue.de"
- },
- "addyon": {
- "name": "AddyON",
- "categoryId": 4,
- "url": "http://www.addyon.com/homepage.php",
- "companyId": "addyon"
- },
- "adeasy": {
- "name": "AdEasy",
- "categoryId": 4,
- "url": "http://www.adeasy.ru/",
- "companyId": "adeasy"
- },
- "adelphic": {
- "name": "Adelphic",
- "categoryId": 6,
- "url": "http://www.adelphic.com/",
- "companyId": "adelphic"
- },
- "adengage": {
- "name": "AdEngage",
- "categoryId": 4,
- "url": "http://www.adengage.com",
- "companyId": "synacor"
- },
- "adespresso": {
- "name": "AdEspresso",
- "categoryId": 4,
- "url": "http://adespresso.com",
- "companyId": "adespresso"
- },
- "adexcite": {
- "name": "AdExcite",
- "categoryId": 4,
- "url": "http://adexcite.com",
- "companyId": "adexcite"
- },
- "adextent": {
- "name": "AdExtent",
- "categoryId": 4,
- "url": "http://www.adextent.com/",
- "companyId": "adextent"
- },
- "adf.ly": {
- "name": "AdF.ly",
- "categoryId": 4,
- "url": "http://adf.ly/",
- "companyId": "adf.ly"
- },
- "adfalcon": {
- "name": "AdFalcon",
- "categoryId": 4,
- "url": "http://www.adfalcon.com/",
- "companyId": "adfalcon"
- },
- "adfocus": {
- "name": "AdFocus",
- "categoryId": 4,
- "url": "http://adfoc.us/",
- "companyId": "adfoc.us"
- },
- "adforgames": {
- "name": "AdForGames",
- "categoryId": 4,
- "url": "http://www.adforgames.com/",
- "companyId": "adforgames"
- },
- "adform": {
- "name": "Adform",
- "categoryId": 4,
- "url": "http://www.adform.com",
- "companyId": "adform"
- },
- "adfox": {
- "name": "AdFox",
- "categoryId": 4,
- "url": "http://adfox.ru",
- "companyId": "yandex"
- },
- "adfreestyle": {
- "name": "adFreestyle",
- "categoryId": 4,
- "url": "http://www.adfreestyle.pl/",
- "companyId": "adfreestyle"
- },
- "adfront": {
- "name": "AdFront",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "adfrontiers": {
- "name": "AdFrontiers",
- "categoryId": 4,
- "url": "http://www.adfrontiers.com/",
- "companyId": "adfrontiers"
- },
- "adgear": {
- "name": "AdGear",
- "categoryId": 4,
- "url": "http://adgear.com/",
- "companyId": "samsung"
- },
- "adgebra": {
- "name": "Adgebra",
- "categoryId": 4,
- "url": "https://adgebra.in/",
- "companyId": "adgebra"
- },
- "adgenie": {
- "name": "adGENIE",
- "categoryId": 4,
- "url": "http://www.adgenie.co.uk/",
- "companyId": "ve"
- },
- "adgile": {
- "name": "Adgile",
- "categoryId": 4,
- "url": "http://www.adgile.com/",
- "companyId": "adgile_media"
- },
- "adglare.net": {
- "name": "Adglare",
- "categoryId": 4,
- "url": "https://www.adglare.com/",
- "companyId": null
- },
- "adglue": {
- "name": "Adglue",
- "categoryId": 4,
- "url": "http://admans.de/de.html",
- "companyId": "admans"
- },
- "adgoal": {
- "name": "adgoal",
- "categoryId": 4,
- "url": "http://www.adgoal.de/",
- "companyId": "adgoal"
- },
- "adgorithms": {
- "name": "Adgorithms",
- "categoryId": 4,
- "url": "http://www.adgorithms.com/",
- "companyId": "albert"
- },
- "adgoto": {
- "name": "ADGoto",
- "categoryId": 4,
- "url": "http://adgoto.com/",
- "companyId": "adgoto"
- },
- "adguard": {
- "name": "Adguard",
- "categoryId": 12,
- "url": "https://adguard.com/",
- "companyId": null
- },
- "adhands": {
- "name": "AdHands",
- "categoryId": 4,
- "url": "http://promo.adhands.ru/",
- "companyId": "adhands"
- },
- "adhese": {
- "name": "Adhese",
- "categoryId": 4,
- "url": "http://adhese.com",
- "companyId": "adhese"
- },
- "adhitz": {
- "name": "AdHitz",
- "categoryId": 4,
- "url": "http://www.adhitz.com/",
- "companyId": "adhitz"
- },
- "adhood": {
- "name": "adhood",
- "categoryId": 4,
- "url": "http://www.adhood.com/",
- "companyId": "adhood"
- },
- "adify": {
- "name": "Adify",
- "categoryId": 4,
- "url": "http://www.adify.com/",
- "companyId": "cox_enterpries"
- },
- "adikteev": {
- "name": "Adikteev",
- "categoryId": 4,
- "url": "http://www.adikteev.com/",
- "companyId": "adikteev"
- },
- "adimpact": {
- "name": "Adimpact",
- "categoryId": 4,
- "url": "http://www.adimpact.com/",
- "companyId": "adimpact"
- },
- "adinch": {
- "name": "Adinch",
- "categoryId": 4,
- "url": "http://adinch.com/",
- "companyId": "adinch"
- },
- "adition": {
- "name": "Adition",
- "categoryId": 4,
- "url": "http://en.adition.com/",
- "companyId": "prosieben_sat1"
- },
- "adjal": {
- "name": "Adjal",
- "categoryId": 4,
- "url": "http://adjal.com/",
- "companyId": "marketing_adjal"
- },
- "adjs": {
- "name": "ADJS",
- "categoryId": 4,
- "url": "https://github.com/widgital/adjs",
- "companyId": "adjs"
- },
- "adjug": {
- "name": "AdJug",
- "categoryId": 4,
- "url": "http://www.adjug.com/",
- "companyId": "adjug"
- },
- "adjust": {
- "name": "Adjust",
- "categoryId": 6,
- "url": "https://www.adjust.com/",
- "companyId": "adjust"
- },
- "adk2": {
- "name": "adk2",
- "categoryId": 4,
- "url": "http://www.adk2.com/",
- "companyId": "adk2_plymedia"
- },
- "adklip": {
- "name": "adklip",
- "categoryId": 4,
- "url": "http://adklip.com",
- "companyId": "adklip"
- },
- "adknowledge": {
- "name": "Adknowledge",
- "categoryId": 4,
- "url": "http://www.adknowledge.com/",
- "companyId": "adknowledge"
- },
- "adkontekst": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://www.en.adkontekst.pl/",
- "companyId": "adkontekst"
- },
- "adkontekst.pl": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://netsprint.eu/",
- "companyId": "netsprint"
- },
- "adlabs": {
- "name": "AdLabs",
- "categoryId": 4,
- "url": "https://www.adlabs.ru/",
- "companyId": "adlabs"
- },
- "adlantic": {
- "name": "AdLantic",
- "categoryId": 4,
- "url": "http://www.adlantic.nl/",
- "companyId": "adlantic_online_advertising"
- },
- "adlantis": {
- "name": "AdLantis",
- "categoryId": 4,
- "url": "http://www.adlantis.jp/",
- "companyId": "adlantis"
- },
- "adless": {
- "name": "Adless",
- "categoryId": 4,
- "url": "https://www.adless.io/",
- "companyId": "adless"
- },
- "adlive_header_bidding": {
- "name": "Adlive Header Bidding",
- "categoryId": 4,
- "url": "http://adlive.io/",
- "companyId": "adlive"
- },
- "adloox": {
- "name": "Adloox",
- "categoryId": 4,
- "url": "http://www.adloox.com",
- "companyId": "adloox"
- },
- "admachine": {
- "name": "AdMachine",
- "categoryId": 4,
- "url": "https://admachine.co/",
- "companyId": null
- },
- "adman": {
- "name": "ADMAN",
- "categoryId": 4,
- "url": "http://www.adman.gr/",
- "companyId": "adman"
- },
- "adman_media": {
- "name": "ADman Media",
- "categoryId": 4,
- "url": "http://www.admanmedia.com/",
- "companyId": "ad_man_media"
- },
- "admantx.com": {
- "name": "ADmantX",
- "categoryId": 4,
- "url": "http://www.admantx.com/",
- "companyId": "expert_system_spa"
- },
- "admaster": {
- "name": "AdMaster",
- "categoryId": 4,
- "url": "http://admaster.net",
- "companyId": "admaster"
- },
- "admaster.cn": {
- "name": "AdMaster.cn",
- "categoryId": 4,
- "url": "http://www.admaster.com.cn/",
- "companyId": "admaster"
- },
- "admatic": {
- "name": "Admatic",
- "categoryId": 4,
- "url": "http://www.admatic.com.tr/#1page",
- "companyId": "admatic"
- },
- "admatrix": {
- "name": "Admatrix",
- "categoryId": 4,
- "url": "https://admatrix.jp/login#block01",
- "companyId": "admatrix"
- },
- "admax": {
- "name": "Admax",
- "categoryId": 4,
- "url": "http://www.admaxnetwork.com/index.php",
- "companyId": "komli"
- },
- "admaxim": {
- "name": "AdMaxim",
- "categoryId": 4,
- "url": "http://admaxim.com/",
- "companyId": "admaxim"
- },
- "admaya": {
- "name": "Admaya",
- "categoryId": 4,
- "url": "http://www.admaya.in/",
- "companyId": "admaya"
- },
- "admedia": {
- "name": "AdMedia",
- "categoryId": 4,
- "url": "http://admedia.com/",
- "companyId": "admedia"
- },
- "admedo_com": {
- "name": "Admedo",
- "categoryId": 4,
- "url": "http://admedo.com/",
- "companyId": "admedo"
- },
- "admeira.ch": {
- "name": "AdMeira",
- "categoryId": 4,
- "url": "http://admeira.ch/",
- "companyId": "admeira"
- },
- "admeld": {
- "name": "AdMeld",
- "categoryId": 4,
- "url": "http://www.admeld.com",
- "companyId": "google"
- },
- "admeo": {
- "name": "Admeo",
- "categoryId": 4,
- "url": "http://admeo.ru/",
- "companyId": "admeo.ru"
- },
- "admeta": {
- "name": "Admeta",
- "categoryId": 4,
- "url": "http://www.admeta.com/",
- "companyId": "admeta"
- },
- "admicro": {
- "name": "AdMicro",
- "categoryId": 4,
- "url": "http://www.admicro.vn/",
- "companyId": "admicro"
- },
- "admitad.com": {
- "name": "Admitad",
- "categoryId": 4,
- "url": "https://www.admitad.com/en/#",
- "companyId": "admitad"
- },
- "admixer.net": {
- "name": "Admixer",
- "categoryId": 4,
- "url": "https://admixer.net/",
- "companyId": "admixer"
- },
- "admized": {
- "name": "ADMIZED",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "admo.tv": {
- "name": "Admo.tv",
- "categoryId": 4,
- "url": "https://admo.tv/",
- "companyId": "admo.tv"
- },
- "admob": {
- "name": "AdMob",
- "categoryId": 4,
- "url": "http://www.admob.com/",
- "companyId": "google"
- },
- "admost": {
- "name": "adMOST",
- "categoryId": 4,
- "url": "http://www.admost.com/",
- "companyId": "admost"
- },
- "admotion": {
- "name": "Admotion",
- "categoryId": 4,
- "url": "http://www.admotionus.com/",
- "companyId": "admotion"
- },
- "admulti": {
- "name": "ADmulti",
- "categoryId": 4,
- "url": "http://admulti.com",
- "companyId": "admulti"
- },
- "adnegah": {
- "name": "Adnegah",
- "categoryId": 4,
- "url": "https://adnegah.net/",
- "companyId": "adnegah"
- },
- "adnet": {
- "name": "Adnet",
- "categoryId": 4,
- "url": "http://www.adnet.vn/",
- "companyId": "adnet"
- },
- "adnet.de": {
- "name": "adNET.de",
- "categoryId": 4,
- "url": "http://www.adnet.de",
- "companyId": "adnet.de"
- },
- "adnet_media": {
- "name": "Adnet Media",
- "categoryId": 4,
- "url": "http://www.adnetmedia.lt/",
- "companyId": "adnet_media"
- },
- "adnetwork.net": {
- "name": "AdNetwork.net",
- "categoryId": 4,
- "url": "http://www.adnetwork.net/",
- "companyId": "adnetwork.net"
- },
- "adnetworkperformance.com": {
- "name": "adnetworkperformance.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adnexio": {
- "name": "AdNexio",
- "categoryId": 4,
- "url": "http://adnexio.com/",
- "companyId": "adnexio"
- },
- "adnium.com": {
- "name": "Adnium",
- "categoryId": 4,
- "url": "https://adnium.com/",
- "companyId": null
- },
- "adnologies": {
- "name": "Adnologies",
- "categoryId": 4,
- "url": "http://www.adnologies.com/",
- "companyId": "adnologies_gmbh"
- },
- "adnow": {
- "name": "Adnow",
- "categoryId": 4,
- "url": "http://adnow.com/",
- "companyId": "adnow"
- },
- "adnymics": {
- "name": "Adnymics",
- "categoryId": 4,
- "url": "http://adnymics.com/en/",
- "companyId": "adnymics"
- },
- "adobe_audience_manager": {
- "name": "Adobe Audience Manager",
- "categoryId": 4,
- "url": "http://www.demdex.com/",
- "companyId": "adobe"
- },
- "adobe_dynamic_media": {
- "name": "Adobe Dynamic Media",
- "categoryId": 4,
- "url": "http://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_dynamic_tag_management": {
- "name": "Adobe Dynamic Tag Management",
- "categoryId": 5,
- "url": "https://dtm.adobe.com/sign_in",
- "companyId": "adobe"
- },
- "adobe_experience_cloud": {
- "name": "Adobe Experience Cloud",
- "categoryId": 6,
- "url": "https://www.adobe.com/experience-cloud.html",
- "companyId": "adobe"
- },
- "adobe_login": {
- "name": "Adobe Login",
- "categoryId": 2,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_tagmanager": {
- "name": "Adobe TagManager",
- "categoryId": 4,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_test_and_target": {
- "name": "Adobe Target",
- "categoryId": 4,
- "url": "https://www.adobe.com/marketing/target.html",
- "companyId": "adobe"
- },
- "adobe_typekit": {
- "name": "Adobe Typekit",
- "categoryId": 5,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adocean": {
- "name": "AdOcean",
- "categoryId": 4,
- "url": "http://adocean.cz/en",
- "companyId": "adocean"
- },
- "adometry": {
- "name": "Adometry",
- "categoryId": 4,
- "url": "http://www.adometry.com/",
- "companyId": "google"
- },
- "adomik": {
- "name": "Adomik",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adon_network": {
- "name": "AdOn Network",
- "categoryId": 4,
- "url": "http://www.adonnetwork.com/",
- "companyId": "adon_network"
- },
- "adonion": {
- "name": "AdOnion",
- "categoryId": 4,
- "url": "http://www.adonion.com/",
- "companyId": "adonion"
- },
- "adonly": {
- "name": "AdOnly",
- "categoryId": 4,
- "url": "https://gloadmarket.com/",
- "companyId": "adonly"
- },
- "adoperator": {
- "name": "AdOperator",
- "categoryId": 4,
- "url": "http://www.adoperator.com/start/",
- "companyId": "adoperator"
- },
- "adoric": {
- "name": "Adoric",
- "categoryId": 6,
- "url": "https://adoric.com/",
- "companyId": "adoric"
- },
- "adorika": {
- "name": "Adorika",
- "categoryId": 4,
- "url": "http://www.adorika.com/",
- "companyId": "adorika"
- },
- "adosia": {
- "name": "Adosia",
- "categoryId": 4,
- "url": "https://adosia.com",
- "companyId": "adosia"
- },
- "adotmob.com": {
- "name": "Adotmob",
- "categoryId": 4,
- "url": "https://adotmob.com/",
- "companyId": "adotmob"
- },
- "adotube": {
- "name": "AdoTube",
- "categoryId": 4,
- "url": "http://www.adotube.com",
- "companyId": "exponential_interactive"
- },
- "adparlor": {
- "name": "AdParlor",
- "categoryId": 4,
- "url": "http://www.adparlor.com/",
- "companyId": "fluent"
- },
- "adpartner": {
- "name": "adpartner",
- "categoryId": 4,
- "url": "http://adpartner.pro/",
- "companyId": "adpartner"
- },
- "adpeeps": {
- "name": "Ad Peeps",
- "categoryId": 4,
- "url": "http://www.adpeeps.com/",
- "companyId": "ad_peeps"
- },
- "adperfect": {
- "name": "AdPerfect",
- "categoryId": 4,
- "url": "http://www.adperfect.com/",
- "companyId": "adperfect"
- },
- "adperium": {
- "name": "AdPerium",
- "categoryId": 4,
- "url": "http://www.adperium.com/",
- "companyId": "adperium"
- },
- "adpilot": {
- "name": "AdPilot",
- "categoryId": 4,
- "url": "http://www.adpilotgroup.com/",
- "companyId": "adpilot"
- },
- "adplan": {
- "name": "AdPlan",
- "categoryId": 4,
- "url": "http://www.adplan.ne.jp/",
- "companyId": "adplan"
- },
- "adplus": {
- "name": "ADPLUS",
- "categoryId": 4,
- "url": "http://www.adplus.co.id/",
- "companyId": "adplus"
- },
- "adprofy": {
- "name": "AdProfy",
- "categoryId": 4,
- "url": "http://adprofy.com/",
- "companyId": "adprofy"
- },
- "adpulse": {
- "name": "AdPulse",
- "categoryId": 4,
- "url": "http://adpulse.ir/",
- "companyId": "adpulse.ir"
- },
- "adpv": {
- "name": "Adpv",
- "categoryId": 4,
- "url": "http://www.adpv.com/",
- "companyId": "adpv"
- },
- "adreactor": {
- "name": "AdReactor",
- "categoryId": 4,
- "url": "http://www.adreactor.com/",
- "companyId": "adreactor"
- },
- "adrecord": {
- "name": "Adrecord",
- "categoryId": 4,
- "url": "http://www.adrecord.com/",
- "companyId": "adrecord"
- },
- "adrecover": {
- "name": "AdRecover",
- "categoryId": 4,
- "url": "https://www.adrecover.com/",
- "companyId": "adpushup"
- },
- "adresult": {
- "name": "ADResult",
- "categoryId": 4,
- "url": "http://www.adresult.jp/",
- "companyId": "adresult"
- },
- "adriver": {
- "name": "AdRiver",
- "categoryId": 4,
- "url": "http://www.adriver.ru/",
- "companyId": "ad_river"
- },
- "adroll": {
- "name": "AdRoll",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_pixel": {
- "name": "AdRoll Pixel",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_roundtrip": {
- "name": "AdRoll Roundtrip",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adrom": {
- "name": "adRom",
- "categoryId": 4,
- "url": "http://www.adrom.net/",
- "companyId": null
- },
- "adru.net": {
- "name": "adru.net",
- "categoryId": 4,
- "url": "http://adru.net/",
- "companyId": "adru.net"
- },
- "adrunnr": {
- "name": "AdRunnr",
- "categoryId": 4,
- "url": "https://adrunnr.com/",
- "companyId": "adrunnr"
- },
- "adsame": {
- "name": "Adsame",
- "categoryId": 4,
- "url": "http://adsame.com/",
- "companyId": "adsame"
- },
- "adsbookie": {
- "name": "AdsBookie",
- "categoryId": 4,
- "url": "http://adsbookie.com/",
- "companyId": null
- },
- "adscale": {
- "name": "AdScale",
- "categoryId": 4,
- "url": "http://www.adscale.de/",
- "companyId": "stroer"
- },
- "adscience": {
- "name": "Adscience",
- "categoryId": 4,
- "url": "http://www.adscience.nl/",
- "companyId": "adscience"
- },
- "adsco.re": {
- "name": "Adscore",
- "categoryId": 4,
- "url": "https://www.adscore.com/",
- "companyId": null
- },
- "adsensecamp": {
- "name": "AdsenseCamp",
- "categoryId": 4,
- "url": "http://adsensecamp.com",
- "companyId": "adsensecamp"
- },
- "adserverpub": {
- "name": "AdServerPub",
- "categoryId": 4,
- "url": "http://www.adserverpub.com/",
- "companyId": "adserverpub"
- },
- "adservice_media": {
- "name": "Adservice Media",
- "categoryId": 4,
- "url": "http://www.adservicemedia.com/",
- "companyId": "adservice_media"
- },
- "adsfactor": {
- "name": "Adsfactor",
- "categoryId": 4,
- "url": "http://www.adsfactor.com/",
- "companyId": "pixels_asia"
- },
- "adside": {
- "name": "AdSide",
- "categoryId": 4,
- "url": "http://www.adside.com/",
- "companyId": "adside"
- },
- "adskeeper": {
- "name": "AdsKeeper",
- "categoryId": 4,
- "url": "http://adskeeper.co.uk/",
- "companyId": "adskeeper"
- },
- "adskom": {
- "name": "ADSKOM",
- "categoryId": 4,
- "url": "http://adskom.com/",
- "companyId": "adskom"
- },
- "adslot": {
- "name": "Adslot",
- "categoryId": 4,
- "url": "http://www.adslot.com/",
- "companyId": "adslot"
- },
- "adsnative": {
- "name": "adsnative",
- "categoryId": 4,
- "url": "http://www.adsnative.com/",
- "companyId": "adsnative"
- },
- "adsniper.ru": {
- "name": "AdSniper",
- "categoryId": 4,
- "url": "http://ad-sniper.com/",
- "companyId": "adsniper"
- },
- "adspeed": {
- "name": "AdSpeed",
- "categoryId": 4,
- "url": "http://www.adspeed.com/",
- "companyId": "adspeed"
- },
- "adspyglass": {
- "name": "AdSpyglass",
- "categoryId": 4,
- "url": "https://www.adspyglass.com/",
- "companyId": "adspyglass"
- },
- "adstage": {
- "name": "AdStage",
- "categoryId": 4,
- "url": "http://www.adstage.io/",
- "companyId": "adstage"
- },
- "adstanding": {
- "name": "AdStanding",
- "categoryId": 4,
- "url": "http://www.adstanding.com/en/",
- "companyId": "adstanding"
- },
- "adstars": {
- "name": "Adstars",
- "categoryId": 4,
- "url": "http://adstars.co.id",
- "companyId": "adstars"
- },
- "adstir": {
- "name": "adstir",
- "categoryId": 4,
- "url": "https://en.ad-stir.com/",
- "companyId": "united_inc"
- },
- "adsupply": {
- "name": "AdSupply",
- "categoryId": 4,
- "url": "http://www.adsupply.com/",
- "companyId": "adsupply"
- },
- "adswizz": {
- "name": "AdsWizz",
- "categoryId": 4,
- "url": "http://www.adswizz.com/",
- "companyId": "adswizz"
- },
- "adtaily": {
- "name": "AdTaily",
- "categoryId": 4,
- "url": "http://www.adtaily.pl/",
- "companyId": "adtaily"
- },
- "adtarget.me": {
- "name": "Adtarget.me",
- "categoryId": 4,
- "url": "http://www.adtarget.me/",
- "companyId": "adtarget.me"
- },
- "adtech": {
- "name": "ADTECH",
- "categoryId": 6,
- "url": "http://www.adtechus.com/",
- "companyId": "verizon"
- },
- "adtegrity": {
- "name": "Adtegrity",
- "categoryId": 4,
- "url": "http://www.adtegrity.com/",
- "companyId": "adtegrity"
- },
- "adtelligence.de": {
- "name": "Adtelligence",
- "categoryId": 4,
- "url": "https://adtelligence.com/",
- "companyId": null
- },
- "adtheorent": {
- "name": "Adtheorent",
- "categoryId": 4,
- "url": "http://adtheorent.com/",
- "companyId": "adtheorant"
- },
- "adthink": {
- "name": "Adthink",
- "categoryId": 4,
- "url": "https://adthink.com/",
- "companyId": "adthink"
- },
- "adtiger": {
- "name": "AdTiger",
- "categoryId": 4,
- "url": "http://www.adtiger.de/",
- "companyId": "adtiger"
- },
- "adtima": {
- "name": "Adtima",
- "categoryId": 4,
- "url": "http://adtima.vn/",
- "companyId": "adtima"
- },
- "adtng.com": {
- "name": "adtng.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "adtoma": {
- "name": "Adtoma",
- "categoryId": 4,
- "url": "http://www.adtoma.com/",
- "companyId": "adtoma"
- },
- "adtr02.com": {
- "name": "adtr02.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adtraction": {
- "name": "Adtraction",
- "categoryId": 4,
- "url": "http://adtraction.com/",
- "companyId": "adtraction"
- },
- "adtraxx": {
- "name": "AdTraxx",
- "categoryId": 4,
- "url": "https://www1.adtraxx.de/",
- "companyId": "adtrax"
- },
- "adtriba.com": {
- "name": "AdTriba",
- "categoryId": 6,
- "url": "https://www.adtriba.com/",
- "companyId": null
- },
- "adtrue": {
- "name": "Adtrue",
- "categoryId": 4,
- "url": "http://adtrue.com/",
- "companyId": "adtrue"
- },
- "adtrustmedia": {
- "name": "AdTrustMedia",
- "categoryId": 4,
- "url": "https://adtrustmedia.com/",
- "companyId": "adtrustmedia"
- },
- "adtube": {
- "name": "AdTube",
- "categoryId": 4,
- "url": "http://adtube.ir/",
- "companyId": "adtube"
- },
- "adult_webmaster_empire": {
- "name": "Adult Webmaster Empire",
- "categoryId": 3,
- "url": "http://www.awempire.com/",
- "companyId": "adult_webmaster_empire"
- },
- "adultadworld": {
- "name": "AdultAdWorld",
- "categoryId": 3,
- "url": "http://adultadworld.com/",
- "companyId": "adult_adworld"
- },
- "adup-tech.com": {
- "name": "AdUp Technology",
- "categoryId": 4,
- "url": "https://www.adup-tech.com/",
- "companyId": "adup_technology"
- },
- "advaction": {
- "name": "Advaction",
- "categoryId": 4,
- "url": "http://advaction.ru/",
- "companyId": "advaction"
- },
- "advalo": {
- "name": "Advalo",
- "categoryId": 4,
- "url": "https://www.advalo.com",
- "companyId": "advalo"
- },
- "advanced_hosters": {
- "name": "Advanced Hosters",
- "categoryId": 9,
- "url": "https://advancedhosters.com/",
- "companyId": null
- },
- "advark": {
- "name": "Advark",
- "categoryId": 4,
- "url": "https://advarkads.com/",
- "companyId": "advark"
- },
- "adventori": {
- "name": "ADventori",
- "categoryId": 8,
- "url": "https://www.adventori.com/",
- "companyId": "adventori"
- },
- "adverline": {
- "name": "Adverline",
- "categoryId": 4,
- "url": "http://www.adverline.com/",
- "companyId": "adverline"
- },
- "adversal": {
- "name": "Adversal",
- "categoryId": 4,
- "url": "https://www.adversal.com/",
- "companyId": "adversal"
- },
- "adverserve": {
- "name": "adverServe",
- "categoryId": 4,
- "url": "http://www.adverserve.com/",
- "companyId": "adverserve"
- },
- "adverteerdirect": {
- "name": "Adverteerdirect",
- "categoryId": 4,
- "url": "http://www.adverteerdirect.nl/",
- "companyId": "adverteerdirect"
- },
- "adverticum": {
- "name": "Adverticum",
- "categoryId": 4,
- "url": "https://adverticum.net/english/",
- "companyId": "adverticum"
- },
- "advertise.com": {
- "name": "Advertise.com",
- "categoryId": 4,
- "url": "http://advertise.com/",
- "companyId": "advertise.com"
- },
- "advertisespace": {
- "name": "AdvertiseSpace",
- "categoryId": 4,
- "url": "http://www.advertisespace.com/",
- "companyId": "advertisespace"
- },
- "advertising.com": {
- "name": "Verizon Media",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/",
- "companyId": "verizon"
- },
- "advertlets": {
- "name": "Advertlets",
- "categoryId": 4,
- "url": "http://www.advertlets.com/",
- "companyId": "advertlets"
- },
- "advertserve": {
- "name": "AdvertServe",
- "categoryId": 4,
- "url": "https://secure.advertserve.com/",
- "companyId": "advertserve"
- },
- "advidi": {
- "name": "Advidi",
- "categoryId": 4,
- "url": "http://advidi.com/",
- "companyId": "advidi"
- },
- "advmaker.ru": {
- "name": "advmaker.ru",
- "categoryId": 4,
- "url": "http://advmaker.ru/",
- "companyId": "advmaker.ru"
- },
- "advolution": {
- "name": "Advolution",
- "categoryId": 4,
- "url": "http://www.advolution.de",
- "companyId": "advolution"
- },
- "adwebster": {
- "name": "adwebster",
- "categoryId": 4,
- "url": "http://adwebster.com",
- "companyId": "adwebster"
- },
- "adwit": {
- "name": "Adwit",
- "categoryId": 4,
- "url": "http://www.adwitserver.com",
- "companyId": "adwit"
- },
- "adworx.at": {
- "name": "ADworx",
- "categoryId": 4,
- "url": "http://www.adworx.at/",
- "companyId": "ors"
- },
- "adworxs.net": {
- "name": "adworxs.net",
- "categoryId": 4,
- "url": "http://www.adworxs.net/?lang=en",
- "companyId": null
- },
- "adxion": {
- "name": "adXion",
- "categoryId": 4,
- "url": "http://www.adxion.com",
- "companyId": "adxion"
- },
- "adxpansion": {
- "name": "AdXpansion",
- "categoryId": 3,
- "url": "http://www.adxpansion.com/",
- "companyId": "adxpansion"
- },
- "adxpose": {
- "name": "AdXpose",
- "categoryId": 4,
- "url": "http://www.adxpose.com/home.page",
- "companyId": "comscore"
- },
- "adxprtz.com": {
- "name": "adxprtz.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adyoulike": {
- "name": "Adyoulike",
- "categoryId": 4,
- "url": "http://www.adyoulike.com/",
- "companyId": "adyoulike"
- },
- "adzerk": {
- "name": "Adzerk",
- "categoryId": 4,
- "url": "http://adzerk.com/",
- "companyId": "adzerk"
- },
- "adzly": {
- "name": "adzly",
- "categoryId": 4,
- "url": "http://www.adzly.com/",
- "companyId": "adzly"
- },
- "aemediatraffic": {
- "name": "Aemediatraffic",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "aerify_media": {
- "name": "Aerify Media",
- "categoryId": 4,
- "url": "http://aerifymedia.com/",
- "companyId": "aerify_media"
- },
- "aeris_weather": {
- "name": "Aeris Weather",
- "categoryId": 2,
- "url": "https://www.aerisweather.com/",
- "companyId": "aerisweather"
- },
- "affectv": {
- "name": "Hybrid Theory",
- "categoryId": 4,
- "url": "https://hybridtheory.com/",
- "companyId": "affectv"
- },
- "affiliate-b": {
- "name": "Affiliate-B",
- "categoryId": 4,
- "url": "https://www.affiliate-b.com/",
- "companyId": "affiliate_b"
- },
- "affiliate4you": {
- "name": "Affiliate4You",
- "categoryId": 4,
- "url": "http://www.affiliate4you.nl/",
- "companyId": "family_blend"
- },
- "affiliatebuzz": {
- "name": "AffiliateBuzz",
- "categoryId": 4,
- "url": "http://www.affiliatebuzz.com/",
- "companyId": "affiliatebuzz"
- },
- "affiliatefuture": {
- "name": "AffiliateFuture",
- "categoryId": 4,
- "url": "http://www.affiliatefuture.com",
- "companyId": "affiliatefuture"
- },
- "affiliatelounge": {
- "name": "AffiliateLounge",
- "categoryId": 4,
- "url": "http://www.affiliatelounge.com/",
- "companyId": "betsson_group_affiliates"
- },
- "affiliation_france": {
- "name": "Affiliation France",
- "categoryId": 4,
- "url": "http://www.affiliation-france.com/",
- "companyId": "affiliation-france"
- },
- "affiliator": {
- "name": "Affiliator",
- "categoryId": 4,
- "url": "http://www.affiliator.com/",
- "companyId": "affiliator"
- },
- "affiliaweb": {
- "name": "Affiliaweb",
- "categoryId": 4,
- "url": "http://affiliaweb.fr/",
- "companyId": "affiliaweb"
- },
- "affilinet": {
- "name": "affilinet",
- "categoryId": 4,
- "url": "https://www.affili.net/",
- "companyId": "axel_springer"
- },
- "affimax": {
- "name": "AffiMax",
- "categoryId": 4,
- "url": "https://www.affimax.de",
- "companyId": "affimax"
- },
- "affinity": {
- "name": "Affinity",
- "categoryId": 4,
- "url": "http://www.affinity.com/",
- "companyId": "affinity"
- },
- "affinity.by": {
- "name": "Affinity.by",
- "categoryId": 4,
- "url": "http://affinity.by",
- "companyId": "affinity_digital_agency"
- },
- "affiz_cpm": {
- "name": "Affiz CPM",
- "categoryId": 4,
- "url": "http://cpm.affiz.com/home",
- "companyId": "affiz_cpm"
- },
- "afftrack": {
- "name": "Afftrack",
- "categoryId": 6,
- "url": "http://www.afftrack.com/",
- "companyId": "afftrack"
- },
- "afgr2.com": {
- "name": "afgr2.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "afilio": {
- "name": "Afilio",
- "categoryId": 6,
- "url": "http://afilio.com.br/",
- "companyId": "afilio"
- },
- "afs_analystics": {
- "name": "AFS Analystics",
- "categoryId": 6,
- "url": "https://www.afsanalytics.com/",
- "companyId": "afs_analytics"
- },
- "aftonbladet_ads": {
- "name": "Aftonbladet Ads",
- "categoryId": 4,
- "url": "http://annonswebb.aftonbladet.se/",
- "companyId": "aftonbladet"
- },
- "aftv-serving.bid": {
- "name": "aftv-serving.bid",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aggregate_knowledge": {
- "name": "Aggregate Knowledge",
- "categoryId": 4,
- "url": "http://www.aggregateknowledge.com/",
- "companyId": "neustar"
- },
- "agilone": {
- "name": "AgilOne",
- "categoryId": 6,
- "url": "http://www.agilone.com/",
- "companyId": "agilone"
- },
- "agora": {
- "name": "Agora",
- "categoryId": 4,
- "url": "https://www.agora.pl/",
- "companyId": "agora_sa"
- },
- "ahalogy": {
- "name": "Ahalogy",
- "categoryId": 7,
- "url": "http://www.ahalogy.com/",
- "companyId": "ahalogy"
- },
- "ai_media_group": {
- "name": "Ai Media Group",
- "categoryId": 4,
- "url": "http://aimediagroup.com/",
- "companyId": "ai_media_group"
- },
- "aidata": {
- "name": "Aidata",
- "categoryId": 4,
- "url": "http://aidata.me/",
- "companyId": "aidata"
- },
- "aim4media": {
- "name": "Aim4Media",
- "categoryId": 4,
- "url": "http://aim4media.com",
- "companyId": "aim4media"
- },
- "airbnb": {
- "name": "Airbnb",
- "categoryId": 6,
- "url": "https://affiliate.withairbnb.com/",
- "companyId": null
- },
- "airbrake": {
- "name": "Airbrake",
- "categoryId": 4,
- "url": "https://airbrake.io/",
- "companyId": "airbrake"
- },
- "airpr.com": {
- "name": "AirPR",
- "categoryId": 6,
- "url": "https://airpr.com/",
- "companyId": "airpr"
- },
- "airpush": {
- "name": "Airpush",
- "categoryId": 4,
- "url": "http://www.airpush.com/",
- "companyId": "airpush"
- },
- "akamai_technologies": {
- "name": "Akamai Technologies",
- "categoryId": 9,
- "url": "https://www.akamai.com/",
- "companyId": "akamai"
- },
- "akamoihd.net": {
- "name": "akamoihd.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "akane": {
- "name": "AkaNe",
- "categoryId": 4,
- "url": "http://akane-ad.com/",
- "companyId": "akane"
- },
- "akanoo": {
- "name": "Akanoo",
- "categoryId": 6,
- "url": "http://www.akanoo.com/",
- "companyId": "akanoo"
- },
- "akavita": {
- "name": "Akavita",
- "categoryId": 4,
- "url": "http://www.akavita.by/en",
- "companyId": "akavita"
- },
- "al_bawaba_advertising": {
- "name": "Al Bawaba Advertising",
- "categoryId": 4,
- "url": "http://www.albawaba.com/advertising",
- "companyId": "al_bawaba"
- },
- "albacross": {
- "name": "Albacross",
- "categoryId": 4,
- "url": "https://albacross.com",
- "companyId": "albacross"
- },
- "aldi-international.com": {
- "name": "aldi-international.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "alenty": {
- "name": "Alenty",
- "categoryId": 4,
- "url": "http://www.alenty.com/",
- "companyId": "appnexus"
- },
- "alephd.com": {
- "name": "alephd",
- "categoryId": 4,
- "url": "https://www.alephd.com/",
- "companyId": "verizon"
- },
- "alexa_metrics": {
- "name": "Alexa Metrics",
- "categoryId": 6,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "alexa_traffic_rank": {
- "name": "Alexa Traffic Rank",
- "categoryId": 4,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "algolia.net": {
- "name": "algolia",
- "categoryId": 4,
- "url": "https://www.algolia.com/",
- "companyId": null
- },
- "algovid.com": {
- "name": "algovid.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "alibaba.com": {
- "name": "Alibaba",
- "categoryId": 8,
- "url": "http://www.alibaba.com/",
- "companyId": "alibaba"
- },
- "alipay.com": {
- "name": "Alipay",
- "categoryId": 2,
- "url": "https://www.alipay.com/",
- "companyId": "alibaba"
- },
- "alivechat": {
- "name": "AliveChat",
- "categoryId": 2,
- "url": "http://www.websitealive.com/",
- "companyId": "websitealive"
- },
- "allegro.pl": {
- "name": "Allegro",
- "categoryId": 8,
- "url": "https://allegro.pl",
- "companyId": "allegro.pl"
- },
- "allin": {
- "name": "Allin",
- "categoryId": 6,
- "url": "http://allin.com.br/",
- "companyId": "allin"
- },
- "allo-pages.fr": {
- "name": "Allo-Pages",
- "categoryId": 2,
- "url": "http://www.allo-pages.fr/",
- "companyId": "links_lab"
- },
- "allotraffic": {
- "name": "AlloTraffic",
- "categoryId": 4,
- "url": "http://www.allotraffic.com/",
- "companyId": "allotraffic"
- },
- "allure_media": {
- "name": "Allure Media",
- "categoryId": 4,
- "url": "http://www.alluremedia.com.au",
- "companyId": "allure_media"
- },
- "allyes": {
- "name": "Allyes",
- "categoryId": 4,
- "url": "http://www.allyes.com/",
- "companyId": "allyes"
- },
- "alooma": {
- "name": "Alooma",
- "categoryId": 4,
- "url": "https://www.alooma.com/",
- "companyId": "alooma"
- },
- "altitude_digital": {
- "name": "Altitude Digital",
- "categoryId": 4,
- "url": "http://www.altitudedigital.com/",
- "companyId": "altitude_digital"
- },
- "amadesa": {
- "name": "Amadesa",
- "categoryId": 4,
- "url": "http://www.amadesa.com/",
- "companyId": "amadesa"
- },
- "amazon": {
- "name": "Amazon.com",
- "categoryId": 8,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_adsystem": {
- "name": "Amazon Advertising",
- "categoryId": 4,
- "url": "https://advertising.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_associates": {
- "name": "Amazon Associates",
- "categoryId": 4,
- "url": "http://aws.amazon.com/associates/",
- "companyId": "amazon_associates"
- },
- "amazon_cdn": {
- "name": "Amazon CDN",
- "categoryId": 9,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_cloudfront": {
- "name": "Amazon CloudFront",
- "categoryId": 10,
- "url": "https://aws.amazon.com/cloudfront/?nc1=h_ls",
- "companyId": "amazon_associates"
- },
- "amazon_mobile_ads": {
- "name": "Amazon Mobile Ads",
- "categoryId": 4,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_payments": {
- "name": "Amazon Payments",
- "categoryId": 2,
- "url": "https://pay.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_video": {
- "name": "Amazon Instant Video",
- "categoryId": 0,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_web_services": {
- "name": "Amazon Web Services",
- "categoryId": 10,
- "url": "https://aws.amazon.com/",
- "companyId": "amazon_associates"
- },
- "ambient_digital": {
- "name": "Ambient Digital",
- "categoryId": 4,
- "url": "http://www.adnetwork.vn/",
- "companyId": "ambient_digital"
- },
- "amgload.net": {
- "name": "amgload.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "amoad": {
- "name": "AMoAd",
- "categoryId": 4,
- "url": "http://www.amoad.com/",
- "companyId": "amoad"
- },
- "amobee": {
- "name": "Amobee",
- "categoryId": 4,
- "url": "https://www.amobee.com/",
- "companyId": "singtel"
- },
- "amp_platform": {
- "name": "AMP Platform",
- "categoryId": 4,
- "url": "http://www.collective.com/",
- "companyId": "collective"
- },
- "amplitude": {
- "name": "Amplitude",
- "categoryId": 6,
- "url": "https://amplitude.com/",
- "companyId": "amplitude"
- },
- "ampproject.org": {
- "name": "AMP Project",
- "categoryId": 8,
- "url": "https://www.ampproject.org/",
- "companyId": "google"
- },
- "anametrix": {
- "name": "Anametrix",
- "categoryId": 6,
- "url": "http://anametrix.com/",
- "companyId": "anametrix"
- },
- "ancestry_cdn": {
- "name": "Ancestry CDN",
- "categoryId": 9,
- "url": "https://www.ancestry.com/",
- "companyId": "ancestry"
- },
- "ancora": {
- "name": "Ancora",
- "categoryId": 6,
- "url": "http://www.ancoramediasolutions.com/",
- "companyId": "ancora"
- },
- "anetwork": {
- "name": "Anetwork",
- "categoryId": 4,
- "url": "http://anetwork.ir/",
- "companyId": "anetwork"
- },
- "aniview.com": {
- "name": "AniView",
- "categoryId": 4,
- "url": "https://www.aniview.com/",
- "companyId": null
- },
- "anonymousads": {
- "name": "AnonymousAds",
- "categoryId": 4,
- "url": "https://a-ads.com/",
- "companyId": "anonymousads"
- },
- "anormal_tracker": {
- "name": "Anormal Tracker",
- "categoryId": 6,
- "url": "http://anormal-tracker.de/",
- "companyId": "anormal-tracker"
- },
- "answers_cloud_service": {
- "name": "Answers Cloud Service",
- "categoryId": 1,
- "url": "http://www.answers.com/",
- "companyId": "answers.com"
- },
- "ants": {
- "name": "Ants",
- "categoryId": 7,
- "url": "http://ants.vn/en/",
- "companyId": "ants"
- },
- "anvato": {
- "name": "Anvato",
- "categoryId": 0,
- "url": "https://www.anvato.com/",
- "companyId": "google"
- },
- "anyclip": {
- "name": "AnyClip",
- "categoryId": 0,
- "url": "https://anyclip.com",
- "companyId": "anyclip"
- },
- "aol_be_on": {
- "name": "AOL Be On",
- "categoryId": 4,
- "url": "http://beon.aolnetworks.com/",
- "companyId": "verizon"
- },
- "aol_cdn": {
- "name": "AOL CDN",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "aol_images_cdn": {
- "name": "AOL Images CDN",
- "categoryId": 5,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "apa.at": {
- "name": "Apa",
- "categoryId": 8,
- "url": "http://www.apa.at/Site/index.de.html",
- "companyId": "apa"
- },
- "apester": {
- "name": "Apester",
- "categoryId": 4,
- "url": "http://apester.com/",
- "companyId": "apester"
- },
- "apicit.net": {
- "name": "apicit.net",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aplus_analytics": {
- "name": "Aplus Analytics",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "appcues": {
- "name": "Appcues",
- "categoryId": 2,
- "url": "https://www.appcues.com/",
- "companyId": null
- },
- "appdynamics": {
- "name": "AppDynamics",
- "categoryId": 6,
- "url": "http://www.appdynamics.com",
- "companyId": "appdynamics"
- },
- "appier": {
- "name": "Appier",
- "categoryId": 4,
- "url": "http://www.appier.com/en/index.html",
- "companyId": "appier"
- },
- "applifier": {
- "name": "Applifier",
- "categoryId": 4,
- "url": "http://www.applifier.com/",
- "companyId": "applifier"
- },
- "applovin": {
- "name": "AppLovin",
- "categoryId": 4,
- "url": "https://www.applovin.com",
- "companyId": "applovin"
- },
- "appmetrx": {
- "name": "AppMetrx",
- "categoryId": 4,
- "url": "http://www.engago.com",
- "companyId": "engago_technologies"
- },
- "appnexus": {
- "name": "AppNexus",
- "categoryId": 4,
- "url": "http://www.appnexus.com/",
- "companyId": "appnexus"
- },
- "appsflyer": {
- "name": "AppsFlyer",
- "categoryId": 6,
- "url": "https://www.appsflyer.com/",
- "companyId": "appsflyer"
- },
- "apptv": {
- "name": "appTV",
- "categoryId": 4,
- "url": "http://www.apptv.com/",
- "companyId": "apptv"
- },
- "apture": {
- "name": "Apture",
- "categoryId": 2,
- "url": "http://www.apture.com/",
- "companyId": "google"
- },
- "arcpublishing": {
- "name": "Arc Publishing",
- "categoryId": 6,
- "url": "https://www.arcpublishing.com/",
- "companyId": "arc_publishing"
- },
- "ard.de": {
- "name": "ard.de",
- "categoryId": 0,
- "url": null,
- "companyId": null
- },
- "are_you_a_human": {
- "name": "Are You a Human",
- "categoryId": 6,
- "url": "https://areyouahuman.com/",
- "companyId": "distil_networks"
- },
- "arkoselabs.com": {
- "name": "Arkose Labs",
- "categoryId": 6,
- "url": "https://www.arkoselabs.com/",
- "companyId": null
- },
- "art19": {
- "name": "Art19",
- "categoryId": 4,
- "url": "https://art19.com/",
- "companyId": "art19"
- },
- "artimedia": {
- "name": "Artimedia",
- "categoryId": 4,
- "url": "http://arti-media.net/en/",
- "companyId": "artimedia"
- },
- "artlebedev.ru": {
- "name": "Art.Lebedev",
- "categoryId": 8,
- "url": "https://www.artlebedev.ru/",
- "companyId": "art.lebedev_studio"
- },
- "aruba_media_marketing": {
- "name": "Aruba Media Marketing",
- "categoryId": 4,
- "url": "http://www.arubamediamarketing.it/",
- "companyId": "aruba_media_marketing"
- },
- "arvato_canvas_fp": {
- "name": "Arvato Canvas FP",
- "categoryId": 6,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "asambeauty.com": {
- "name": "asambeauty.com",
- "categoryId": 8,
- "url": "https://www.asambeauty.com/",
- "companyId": null
- },
- "ask.com": {
- "name": "Ask.com",
- "categoryId": 7,
- "url": null,
- "companyId": null
- },
- "aspnetcdn": {
- "name": "Microsoft Ajax CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "astronomer": {
- "name": "Astronomer",
- "categoryId": 6,
- "url": "https://www.astronomer.io",
- "companyId": "astronomer"
- },
- "at_internet": {
- "name": "AT Internet",
- "categoryId": 6,
- "url": "http://www.xiti.com/",
- "companyId": "at_internet"
- },
- "atedra": {
- "name": "Atedra",
- "categoryId": 4,
- "url": "http://www.atedra.com/",
- "companyId": "atedra"
- },
- "atg_group": {
- "name": "ATG Ad Tech Group",
- "categoryId": 4,
- "url": "https://ad-tech-group.com/",
- "companyId": null
- },
- "atg_optimization": {
- "name": "ATG Optimization",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/",
- "companyId": "oracle"
- },
- "atg_recommendations": {
- "name": "ATG Recommendations",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/recommendations/",
- "companyId": "oracle"
- },
- "atlas": {
- "name": "Atlas",
- "categoryId": 4,
- "url": "https://atlassolutions.com",
- "companyId": "facebook"
- },
- "atlas_profitbuilder": {
- "name": "Atlas ProfitBuilder",
- "categoryId": 4,
- "url": "http://www.atlassolutions.com/",
- "companyId": "atlas"
- },
- "atlassian.net": {
- "name": "Atlassian",
- "categoryId": 2,
- "url": "https://www.atlassian.com/",
- "companyId": "atlassian"
- },
- "atlassian_marketplace": {
- "name": "Atlassian Marketplace",
- "categoryId": 9,
- "url": "https://marketplace.atlassian.com/",
- "companyId": "atlassian"
- },
- "atomz_search": {
- "name": "Atomz Search",
- "categoryId": 2,
- "url": "http://atomz.com/",
- "companyId": "atomz"
- },
- "atsfi_de": {
- "name": "atsfi.de",
- "categoryId": 11,
- "url": "http://www.axelspringer.de/en/index.html",
- "companyId": "axel_springer"
- },
- "attracta": {
- "name": "Attracta",
- "categoryId": 4,
- "url": "http://www.attracta.com/",
- "companyId": "attracta"
- },
- "attraqt": {
- "name": "Attraqt",
- "categoryId": 6,
- "url": "http://www.locayta.com/",
- "companyId": "attraqt"
- },
- "audience2media": {
- "name": "Audience2Media",
- "categoryId": 4,
- "url": "http://www.audience2media.com/",
- "companyId": "audience2media"
- },
- "audience_ad_network": {
- "name": "Audience Ad Network",
- "categoryId": 4,
- "url": "http://www.audienceadnetwork.com",
- "companyId": "bridgeline_digital"
- },
- "audience_science": {
- "name": "Audience Science",
- "categoryId": 4,
- "url": "http://www.audiencescience.com/",
- "companyId": "audiencescience"
- },
- "audiencerate": {
- "name": "AudienceRate",
- "categoryId": 4,
- "url": "http://www.audiencerate.com/",
- "companyId": "audiencerate"
- },
- "audiencesquare.com": {
- "name": "Audience Square",
- "categoryId": 4,
- "url": "http://www.audiencesquare.fr/",
- "companyId": "audience_square"
- },
- "auditude": {
- "name": "Auditude",
- "categoryId": 0,
- "url": "http://www.auditude.com/",
- "companyId": "adobe"
- },
- "audtd.com": {
- "name": "Auditorius",
- "categoryId": 4,
- "url": "http://www.auditorius.ru/",
- "companyId": "auditorius"
- },
- "augur": {
- "name": "Augur",
- "categoryId": 6,
- "url": "https://www.augur.io/",
- "companyId": "augur"
- },
- "aumago": {
- "name": "Aumago",
- "categoryId": 4,
- "url": "http://www.aumago.com/",
- "companyId": "aumago"
- },
- "aurea_clicktracks": {
- "name": "Aurea ClickTracks",
- "categoryId": 4,
- "url": "http://www.clicktracks.com/",
- "companyId": "aurea"
- },
- "ausgezeichnet_org": {
- "name": "ausgezeichnet.org",
- "categoryId": 2,
- "url": "http://ausgezeichnet.org/",
- "companyId": null
- },
- "australia.gov": {
- "name": "Australia.gov",
- "categoryId": 4,
- "url": "http://www.australia.gov.au/",
- "companyId": "australian_government"
- },
- "auth0": {
- "name": "Auth0 Inc.",
- "categoryId": 6,
- "url": "https://auth0.com/",
- "companyId": "auth0"
- },
- "autoid": {
- "name": "AutoID",
- "categoryId": 6,
- "url": "http://www.autoid.com/",
- "companyId": "autoid"
- },
- "autonomy": {
- "name": "Autonomy",
- "categoryId": 4,
- "url": "http://www.optimost.com/",
- "companyId": "hp"
- },
- "autonomy_campaign": {
- "name": "Autonomy Campaign",
- "categoryId": 4,
- "url": "http://www.autonomy.com/",
- "companyId": "hp"
- },
- "autopilothq": {
- "name": "Auto Pilot",
- "categoryId": 4,
- "url": "https://www.autopilothq.com/",
- "companyId": "autopilothq"
- },
- "autoscout24.com": {
- "name": "Autoscout24",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "avail": {
- "name": "Avail",
- "categoryId": 4,
- "url": "http://avail.com",
- "companyId": "richrelevance"
- },
- "avanser": {
- "name": "AVANSER",
- "categoryId": 2,
- "url": "http://www.avanser.com.au/",
- "companyId": "avanser"
- },
- "avant_metrics": {
- "name": "Avant Metrics",
- "categoryId": 6,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avantlink": {
- "name": "AvantLink",
- "categoryId": 4,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avazu_network": {
- "name": "Avazu Network",
- "categoryId": 4,
- "url": "http://www.avazudsp.net/",
- "companyId": "avazu_network"
- },
- "avenseo": {
- "name": "Avenseo",
- "categoryId": 4,
- "url": "http://avenseo.com",
- "companyId": "avenseo"
- },
- "avid_media": {
- "name": "Avid Media",
- "categoryId": 0,
- "url": "http://www.avidglobalmedia.com/",
- "companyId": "avid_media"
- },
- "avocet": {
- "name": "Avocet",
- "categoryId": 8,
- "url": "https://avocet.io/",
- "companyId": "avocet"
- },
- "aweber": {
- "name": "AWeber",
- "categoryId": 4,
- "url": "http://www.aweber.com/",
- "companyId": "aweber_communications"
- },
- "awin": {
- "name": "AWIN",
- "categoryId": 4,
- "url": "https://www.awin.com",
- "companyId": "axel_springer"
- },
- "axill": {
- "name": "Axill",
- "categoryId": 4,
- "url": "http://www.axill.com/",
- "companyId": "axill"
- },
- "azadify": {
- "name": "Azadify",
- "categoryId": 4,
- "url": "http://azadify.com/engage/index.php",
- "companyId": "azadify"
- },
- "azureedge.net": {
- "name": "Azure CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "b2bcontext": {
- "name": "B2BContext",
- "categoryId": 4,
- "url": "http://b2bcontext.ru/",
- "companyId": "b2bcontext"
- },
- "b2bvideo": {
- "name": "B2Bvideo",
- "categoryId": 4,
- "url": "http://b2bvideo.ru/",
- "companyId": "b2bvideo"
- },
- "babator.com": {
- "name": "Babator",
- "categoryId": 6,
- "url": "https://www.babator.com/",
- "companyId": null
- },
- "back_beat_media": {
- "name": "Back Beat Media",
- "categoryId": 4,
- "url": "http://www.backbeatmedia.com",
- "companyId": "backbeat_media"
- },
- "backtype_widgets": {
- "name": "BackType Widgets",
- "categoryId": 4,
- "url": "http://www.backtype.com/widgets",
- "companyId": "backtype"
- },
- "bahn_de": {
- "name": "Deutsche Bahn",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baidu_ads": {
- "name": "Baidu Ads",
- "categoryId": 4,
- "url": "http://www.baidu.com/",
- "companyId": "baidu"
- },
- "baidu_static": {
- "name": "Baidu Static",
- "categoryId": 8,
- "url": "https://www.baidu.com/",
- "companyId": "baidu"
- },
- "baletingo.com": {
- "name": "baletingo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bangdom.com": {
- "name": "BangBros",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bankrate": {
- "name": "Bankrate",
- "categoryId": 4,
- "url": "https://www.bankrate.com/",
- "companyId": "bankrate"
- },
- "banner_connect": {
- "name": "Banner Connect",
- "categoryId": 4,
- "url": "http://www.bannerconnect.net/",
- "companyId": "bannerconnect"
- },
- "bannerflow.com": {
- "name": "Bannerflow",
- "categoryId": 4,
- "url": "https://www.bannerflow.com/",
- "companyId": "bannerflow"
- },
- "bannerplay": {
- "name": "BannerPlay",
- "categoryId": 4,
- "url": "http://www.bannerplay.com/",
- "companyId": "bannerplay"
- },
- "bannersnack": {
- "name": "Bannersnack",
- "categoryId": 4,
- "url": "http://www.bannersnack.com/",
- "companyId": "bannersnack"
- },
- "barilliance": {
- "name": "Barilliance",
- "categoryId": 4,
- "url": "http://www.barilliance.com/",
- "companyId": "barilliance"
- },
- "barometer": {
- "name": "Barometer",
- "categoryId": 2,
- "url": "http://getbarometer.com/",
- "companyId": "barometer"
- },
- "basilic.io": {
- "name": "basilic.io",
- "categoryId": 6,
- "url": "https://basilic.io/",
- "companyId": null
- },
- "batanga_network": {
- "name": "Batanga Network",
- "categoryId": 4,
- "url": "http://www.batanganetwork.com/",
- "companyId": "batanga_network"
- },
- "batch_media": {
- "name": "Batch Media",
- "categoryId": 4,
- "url": "http://batch.ba/",
- "companyId": "prosieben_sat1"
- },
- "bauer_media": {
- "name": "Bauer Media",
- "categoryId": 4,
- "url": "http://www.bauermedia.com",
- "companyId": "bauer_media"
- },
- "baur.de": {
- "name": "baur.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baynote_observer": {
- "name": "Baynote Observer",
- "categoryId": 4,
- "url": "http://www.baynote.com/",
- "companyId": "baynote"
- },
- "bazaarvoice": {
- "name": "Bazaarvoice",
- "categoryId": 2,
- "url": "http://www.bazaarvoice.com/",
- "companyId": "bazaarvoice"
- },
- "bbci": {
- "name": "BBC",
- "categoryId": 10,
- "url": "https://bbc.co.uk",
- "companyId": null
- },
- "bd4travel": {
- "name": "bd4travel",
- "categoryId": 4,
- "url": "https://bd4travel.com/",
- "companyId": "bd4travel"
- },
- "be_opinion": {
- "name": "Be Opinion",
- "categoryId": 2,
- "url": "http://beopinion.com/",
- "companyId": "be_opinion"
- },
- "beachfront": {
- "name": "Beachfront Media",
- "categoryId": 4,
- "url": "http://beachfrontmedia.com/",
- "companyId": null
- },
- "beacon_ad_network": {
- "name": "Beacon Ad Network",
- "categoryId": 4,
- "url": "http://beaconads.com/",
- "companyId": "beacon_ad_network"
- },
- "beampulse.com": {
- "name": "BeamPulse",
- "categoryId": 4,
- "url": "https://en.beampulse.com/",
- "companyId": null
- },
- "beanstalk_data": {
- "name": "Beanstalk Data",
- "categoryId": 4,
- "url": "http://www.beanstalkdata.com/",
- "companyId": "beanstalk_data"
- },
- "bebi": {
- "name": "Bebi Media",
- "categoryId": 4,
- "url": "https://www.bebi.com/",
- "companyId": "bebi_media"
- },
- "beeketing.com": {
- "name": "Beeketing",
- "categoryId": 4,
- "url": "https://beeketing.com/",
- "companyId": "beeketing"
- },
- "beeline.ru": {
- "name": "Beeline",
- "categoryId": 4,
- "url": "https://moskva.beeline.ru/",
- "companyId": null
- },
- "beeswax": {
- "name": "Beeswax",
- "categoryId": 4,
- "url": "http://beeswax.com/",
- "companyId": "beeswax"
- },
- "beezup": {
- "name": "BeezUP",
- "categoryId": 4,
- "url": "http://www.beezup.co.uk/",
- "companyId": "beezup"
- },
- "begun": {
- "name": "Begun",
- "categoryId": 4,
- "url": "http://begun.ru/",
- "companyId": "begun"
- },
- "behavioralengine": {
- "name": "BehavioralEngine",
- "categoryId": 4,
- "url": "http://www.behavioralengine.com/",
- "companyId": "behavioralengine"
- },
- "belboon_gmbh": {
- "name": "belboon GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "belco": {
- "name": "Belco",
- "categoryId": 2,
- "url": "https://www.belco.io/",
- "companyId": "belco"
- },
- "belstat": {
- "name": "BelStat",
- "categoryId": 6,
- "url": "http://www.belstat.com/",
- "companyId": "belstat"
- },
- "bemobile.ua": {
- "name": "Bemobile",
- "categoryId": 10,
- "url": "http://bemobile.ua/en/",
- "companyId": "bemobile"
- },
- "bench_platform": {
- "name": "Bench Platform",
- "categoryId": 4,
- "url": "https://benchplatform.com",
- "companyId": "bench_platform"
- },
- "betterttv": {
- "name": "BetterTTV",
- "categoryId": 7,
- "url": "https://nightdev.com/betterttv/",
- "companyId": "nightdev"
- },
- "betweendigital.com": {
- "name": "Between Digital",
- "categoryId": 4,
- "url": "http://betweendigital.ru/ssp",
- "companyId": "between_digital"
- },
- "bid.run": {
- "name": "Bid Run",
- "categoryId": 4,
- "url": "http://bid.run/",
- "companyId": "bid.run"
- },
- "bidgear": {
- "name": "BidGear",
- "categoryId": 6,
- "url": "https://bidgear.com/",
- "companyId": "bidgear"
- },
- "bidswitch": {
- "name": "Bidswitch",
- "categoryId": 4,
- "url": "http://www.iponweb.com/",
- "companyId": "iponweb"
- },
- "bidtellect": {
- "name": "Bidtellect",
- "categoryId": 4,
- "url": "https://www.bidtellect.com/",
- "companyId": "bidtellect"
- },
- "bidtheatre": {
- "name": "BidTheatre",
- "categoryId": 4,
- "url": "http://www.bidtheatre.com/",
- "companyId": "bidtheatre"
- },
- "bidvertiser": {
- "name": "BidVertiser",
- "categoryId": 4,
- "url": "http://www.bidvertiser.com/",
- "companyId": "bidvertiser"
- },
- "big_mobile": {
- "name": "Big Mobile",
- "categoryId": 4,
- "url": "http://www.bigmobile.com/",
- "companyId": "big_mobile"
- },
- "bigcommerce.com": {
- "name": "BigCommerce",
- "categoryId": 6,
- "url": "https://www.bigcommerce.com/",
- "companyId": "bigcommerce"
- },
- "bigmir.net": {
- "name": "bigmir",
- "categoryId": 6,
- "url": "https://www.bigmir.net/",
- "companyId": "bigmir-internet"
- },
- "bigpoint": {
- "name": "Bigpoint",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bild": {
- "name": "Bild.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bilgin_pro": {
- "name": "Bilgin Pro",
- "categoryId": 4,
- "url": "http://bilgin.pro/",
- "companyId": "bilginpro"
- },
- "bilin": {
- "name": "Bilin",
- "categoryId": 4,
- "url": "http://www.bilintechnology.com/",
- "companyId": "bilin"
- },
- "bing_ads": {
- "name": "Bing Ads",
- "categoryId": 4,
- "url": "https://bingads.microsoft.com/",
- "companyId": "microsoft"
- },
- "bing_maps": {
- "name": "Bing Maps",
- "categoryId": 2,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "binlayer": {
- "name": "BinLayer",
- "categoryId": 4,
- "url": "http://binlayer.com/",
- "companyId": "binlayer"
- },
- "binotel": {
- "name": "Binotel",
- "categoryId": 4,
- "url": "http://www.binotel.ua/",
- "companyId": "binotel"
- },
- "bisnode": {
- "name": "Bisnode",
- "categoryId": 4,
- "url": "http://www.esendra.fi/",
- "companyId": "bisnode"
- },
- "bitcoin_miner": {
- "name": "Bitcoin Miner",
- "categoryId": 2,
- "url": "http://www.bitcoinplus.com/",
- "companyId": "bitcoin_plus"
- },
- "bitly": {
- "name": "Bitly",
- "categoryId": 6,
- "url": "https://bitly.com/",
- "companyId": null
- },
- "bitrix": {
- "name": "Bitrix24",
- "categoryId": 4,
- "url": "https://www.bitrix24.com/",
- "companyId": "bitrix24"
- },
- "bizcn": {
- "name": "Bizcn",
- "categoryId": 4,
- "url": "http://www.bizcn.com/",
- "companyId": "bizcn"
- },
- "blackdragon": {
- "name": "BlackDragon",
- "categoryId": 4,
- "url": "http://www.jd.com/",
- "companyId": "jing_dong"
- },
- "blau.de": {
- "name": "Blau",
- "categoryId": 8,
- "url": "https://www.blau.de/",
- "companyId": null
- },
- "blink_new_media": {
- "name": "Blink New Media",
- "categoryId": 4,
- "url": "http://engagebdr.com/",
- "companyId": "engage_bdr"
- },
- "blis": {
- "name": "Blis",
- "categoryId": 6,
- "url": "http://www.blis.com/index.php",
- "companyId": "blis"
- },
- "blogad": {
- "name": "BlogAD",
- "categoryId": 4,
- "url": "http://www.blogad.com.tw/",
- "companyId": "blogad"
- },
- "blogbang": {
- "name": "BlogBang",
- "categoryId": 4,
- "url": "http://www.blogbang.com/",
- "companyId": "blogbang"
- },
- "blogcatalog": {
- "name": "BlogCatalog",
- "categoryId": 2,
- "url": "http://www.blogcatalog.com/",
- "companyId": "blogcatalog"
- },
- "blogcounter": {
- "name": "BlogCounter",
- "categoryId": 6,
- "url": "http://blogcounter.com/",
- "companyId": "adfire_gmbh"
- },
- "blogfoster.com": {
- "name": "Blogfoster",
- "categoryId": 8,
- "url": "http://www.blogfoster.com/",
- "companyId": "blogfoster"
- },
- "bloggerads": {
- "name": "BloggerAds",
- "categoryId": 4,
- "url": "http://www.bloggerads.net/",
- "companyId": "bloggerads"
- },
- "blogher": {
- "name": "BlogHer Ads",
- "categoryId": 4,
- "url": "https://www.blogher.com/",
- "companyId": "penske_media_corp"
- },
- "blogimg.jp": {
- "name": "blogimg.jp",
- "categoryId": 9,
- "url": "https://line.me/",
- "companyId": "line"
- },
- "blogsmithmedia.com": {
- "name": "blogsmithmedia.com",
- "categoryId": 8,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "blogspot_com": {
- "name": "blogspot.com",
- "categoryId": 8,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "bloomreach": {
- "name": "BloomReach",
- "categoryId": 4,
- "url": "https://www.bloomreach.com/en",
- "companyId": "bloomreach"
- },
- "blue_cherry_group": {
- "name": "Blue Cherry Group",
- "categoryId": 4,
- "url": "http://www.bluecherrygroup.com",
- "companyId": "blue_cherry_group"
- },
- "blue_seed": {
- "name": "Blue Seed",
- "categoryId": 4,
- "url": "http://blueseed.tv/#/en/platform",
- "companyId": "blue_seed"
- },
- "blueconic.net": {
- "name": "BlueConic Plugin",
- "categoryId": 6,
- "url": "https://www.blueconic.com/",
- "companyId": "blueconic"
- },
- "bluecore": {
- "name": "Bluecore",
- "categoryId": 4,
- "url": "https://www.bluecore.com/",
- "companyId": "triggermail"
- },
- "bluekai": {
- "name": "BlueKai",
- "categoryId": 4,
- "url": "http://www.bluekai.com/",
- "companyId": "oracle"
- },
- "bluelithium": {
- "name": "Bluelithium",
- "categoryId": 4,
- "url": "http://www.bluelithium.com/",
- "companyId": "verizon"
- },
- "bluemetrix": {
- "name": "Bluemetrix",
- "categoryId": 4,
- "url": "http://www.bluemetrix.ie/",
- "companyId": "bluemetrix"
- },
- "bluenewsupdate.info": {
- "name": "bluenewsupdate.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bluestreak": {
- "name": "BlueStreak",
- "categoryId": 4,
- "url": "http://www.bluestreak.com/",
- "companyId": "dentsu_aegis_network"
- },
- "bluetriangle": {
- "name": "Blue Triangle",
- "categoryId": 6,
- "url": "https://www.bluetriangle.com/",
- "companyId": "blue_triangle"
- },
- "bodelen.com": {
- "name": "bodelen.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "bol_affiliate_program": {
- "name": "BOL Affiliate Program",
- "categoryId": 4,
- "url": "http://www.bol.com",
- "companyId": "bol.com"
- },
- "bold": {
- "name": "Bold",
- "categoryId": 4,
- "url": "https://boldcommerce.com/",
- "companyId": "bold"
- },
- "boldchat": {
- "name": "Boldchat",
- "categoryId": 2,
- "url": "http://www.boldchat.com/",
- "companyId": "boldchat"
- },
- "boltdns.net": {
- "name": "boltdns.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bombora": {
- "name": "Bombora",
- "categoryId": 6,
- "url": "http://bombora.com/",
- "companyId": "bombora"
- },
- "bongacams.com": {
- "name": "bongacams.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bonial": {
- "name": "Bonial Connect",
- "categoryId": 2,
- "url": "http://www.bonial.com/",
- "companyId": null
- },
- "boo-box": {
- "name": "boo-box",
- "categoryId": 4,
- "url": "http://boo-box.com/",
- "companyId": "boo-box"
- },
- "booking.com": {
- "name": "Booking.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "boost_box": {
- "name": "Boost Box",
- "categoryId": 6,
- "url": "http://www.boostbox.com.br/",
- "companyId": "boost_box"
- },
- "booster_video": {
- "name": "Booster Video",
- "categoryId": 0,
- "url": "https://boostervideo.ru/",
- "companyId": "booster_video"
- },
- "bootstrap": {
- "name": "Bootstrap CDN",
- "categoryId": 9,
- "url": "http://getbootstrap.com/",
- "companyId": "bootstrap_cdn"
- },
- "borrango.com": {
- "name": "borrango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "botscanner": {
- "name": "BotScanner",
- "categoryId": 6,
- "url": "http://botscanner.com",
- "companyId": "botscanner"
- },
- "boudja.com": {
- "name": "boudja.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bounce_exchange": {
- "name": "Bounce Exchange",
- "categoryId": 4,
- "url": "http://bounceexchange.com",
- "companyId": "bounce_exchange"
- },
- "bouncex": {
- "name": "BounceX",
- "categoryId": 4,
- "url": "https://www.bouncex.com/",
- "companyId": null
- },
- "box_uk": {
- "name": "Box UK",
- "categoryId": 6,
- "url": "http://www.clickdensity.com",
- "companyId": "box_uk"
- },
- "boxever": {
- "name": "Boxever",
- "categoryId": 4,
- "url": "https://www.boxever.com/",
- "companyId": "boxever"
- },
- "brainient": {
- "name": "Brainient",
- "categoryId": 4,
- "url": "http://www.brainient.com/",
- "companyId": "brainient"
- },
- "brainsins": {
- "name": "BrainSINS",
- "categoryId": 4,
- "url": "http://www.brainsins.com/",
- "companyId": "brainsins"
- },
- "branch_metrics": {
- "name": "Branch",
- "categoryId": 4,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc"
- },
- "brand_affinity": {
- "name": "Brand Affinity",
- "categoryId": 4,
- "url": "http://brandaffinity.net/about",
- "companyId": "yoonla"
- },
- "brand_networks": {
- "name": "Brand Networks",
- "categoryId": 4,
- "url": "http://www.xa.net/",
- "companyId": "brand_networks"
- },
- "brandmetrics.com": {
- "name": "Brandmetrics.com",
- "categoryId": 4,
- "url": "https://www.brandmetrics.com/",
- "companyId": null
- },
- "brandreach": {
- "name": "BrandReach",
- "categoryId": 4,
- "url": "http://www.brandreach.com/",
- "companyId": "brandreach"
- },
- "brandscreen": {
- "name": "Brandscreen",
- "categoryId": 4,
- "url": "http://www.brandscreen.com/",
- "companyId": "zenovia"
- },
- "brandwire.tv": {
- "name": "BrandWire",
- "categoryId": 4,
- "url": "https://brandwire.tv/",
- "companyId": null
- },
- "branica": {
- "name": "Branica",
- "categoryId": 4,
- "url": "http://www.branica.com/",
- "companyId": "branica"
- },
- "braze": {
- "name": "Braze",
- "categoryId": 6,
- "url": "https://www.braze.com/",
- "companyId": "braze_inc"
- },
- "brealtime": {
- "name": "EMX Digital",
- "categoryId": 4,
- "url": "https://emxdigital.com/",
- "companyId": null
- },
- "bridgetrack": {
- "name": "BridgeTrack",
- "categoryId": 4,
- "url": "http://www.bridgetrack.com/",
- "companyId": "bridgetrack"
- },
- "brightcove": {
- "name": "Brightcove",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightcove_player": {
- "name": "Brightcove Player",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightedge": {
- "name": "BrightEdge",
- "categoryId": 4,
- "url": "http://www.brightedge.com/",
- "companyId": "brightedge"
- },
- "brightfunnel": {
- "name": "BrightFunnel",
- "categoryId": 6,
- "url": "http://www.brightfunnel.com/",
- "companyId": "brightfunnel"
- },
- "brightonclick.com": {
- "name": "brightonclick.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "brightroll": {
- "name": "BrightRoll",
- "categoryId": 4,
- "url": "http://www.brightroll.com/",
- "companyId": "verizon"
- },
- "brilig": {
- "name": "Brilig",
- "categoryId": 4,
- "url": "http://www.brilig.com/",
- "companyId": "dentsu_aegis_network"
- },
- "brillen.de": {
- "name": "brillen.de",
- "categoryId": 8,
- "url": "https://www.brillen.de/",
- "companyId": null
- },
- "broadstreet": {
- "name": "Broadstreet",
- "categoryId": 4,
- "url": "http://broadstreetads.com/",
- "companyId": "broadstreet"
- },
- "bronto": {
- "name": "Bronto",
- "categoryId": 4,
- "url": "http://bronto.com/",
- "companyId": "bronto"
- },
- "brow.si": {
- "name": "Brow.si",
- "categoryId": 4,
- "url": "https://brow.si/",
- "companyId": "brow.si"
- },
- "browser-statistik": {
- "name": "Browser-Statistik",
- "categoryId": 6,
- "url": "http://www.browser-statistik.de/",
- "companyId": "browser-statistik"
- },
- "browser_update": {
- "name": "Browser Update",
- "categoryId": 2,
- "url": "http://www.browser-update.org/",
- "companyId": "browser-update"
- },
- "btncdn.com": {
- "name": "btncdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "bubblestat": {
- "name": "Bubblestat",
- "categoryId": 4,
- "url": "http://www.bubblestat.com/",
- "companyId": "bubblestat"
- },
- "buddy_media": {
- "name": "Buddy Media",
- "categoryId": 7,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "buffer_button": {
- "name": "Buffer Button",
- "categoryId": 7,
- "url": "http://www.bufferapp.com/",
- "companyId": "buffer"
- },
- "bugherd.com": {
- "name": "BugHerd",
- "categoryId": 2,
- "url": "https://bugherd.com",
- "companyId": "bugherd"
- },
- "bugsnag": {
- "name": "Bugsnag",
- "categoryId": 6,
- "url": "https://bugsnag.com",
- "companyId": "bugsnag"
- },
- "bulkhentai.com": {
- "name": "bulkhentai.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bumlam.com": {
- "name": "bumlam.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bunchbox": {
- "name": "Bunchbox",
- "categoryId": 6,
- "url": "https://app.bunchbox.co/login",
- "companyId": "bunchbox"
- },
- "burda": {
- "name": "BurdaForward",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burda_digital_systems": {
- "name": "Burda Digital Systems",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burst_media": {
- "name": "Burst Media",
- "categoryId": 4,
- "url": "http://www.burstmedia.com/",
- "companyId": "rhythmone"
- },
- "burt": {
- "name": "Burt",
- "categoryId": 4,
- "url": "http://www.burtcorp.com/",
- "companyId": "burt"
- },
- "businessonline_analytics": {
- "name": "BusinessOnLine Analytics",
- "categoryId": 6,
- "url": "http://www.businessol.com/",
- "companyId": "businessonline"
- },
- "buysellads": {
- "name": "BuySellAds",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "buzzadexchange.com": {
- "name": "buzzadexchange.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "buzzador": {
- "name": "Buzzador",
- "categoryId": 7,
- "url": "http://www.buzzador.com",
- "companyId": "buzzador"
- },
- "buzzfeed": {
- "name": "BuzzFeed",
- "categoryId": 2,
- "url": "http://www.buzzfeed.com",
- "companyId": "buzzfeed"
- },
- "bwbx.io": {
- "name": "Bloomberg CDN",
- "categoryId": 9,
- "url": "https://www.bloomberg.com/",
- "companyId": null
- },
- "bypass": {
- "name": "Bypass",
- "categoryId": 4,
- "url": "http://bypass.jp/",
- "companyId": "united_inc"
- },
- "c1_exchange": {
- "name": "C1 Exchange",
- "categoryId": 4,
- "url": "http://c1exchange.com/",
- "companyId": "c1_exchange"
- },
- "c3_metrics": {
- "name": "C3 Metrics",
- "categoryId": 6,
- "url": "http://c3metrics.com/",
- "companyId": "c3_metrics"
- },
- "c8_network": {
- "name": "C8 Network",
- "categoryId": 4,
- "url": "http://c8.net.ua/",
- "companyId": "c8_network"
- },
- "cackle.me": {
- "name": "Cackle",
- "categoryId": 3,
- "url": "https://cackle.me/",
- "companyId": null
- },
- "cadreon": {
- "name": "Cadreon",
- "categoryId": 4,
- "url": "http://www.cadreon.com/",
- "companyId": "cadreon"
- },
- "call_page": {
- "name": "Call Page",
- "categoryId": 2,
- "url": "https://www.callpage.io/",
- "companyId": "call_page"
- },
- "callbackhunter": {
- "name": "CallbackHunter",
- "categoryId": 2,
- "url": "http://callbackhunter.com/main",
- "companyId": "callbackhunter"
- },
- "callbox": {
- "name": "CallBox",
- "categoryId": 2,
- "url": "http://www.centuryinteractive.com",
- "companyId": "callbox"
- },
- "callibri": {
- "name": "Callibri",
- "categoryId": 4,
- "url": "https://callibri.ru/",
- "companyId": "callibri"
- },
- "callrail": {
- "name": "CallRail",
- "categoryId": 2,
- "url": "http://www.callrail.com/",
- "companyId": "callrail"
- },
- "calltracking": {
- "name": "Calltracking",
- "categoryId": 2,
- "url": "https://calltracking.ru",
- "companyId": "calltracking"
- },
- "caltat.com": {
- "name": "Caltat",
- "categoryId": 2,
- "url": "https://caltat.com/",
- "companyId": null
- },
- "cam-content.com": {
- "name": "Cam-Content.com",
- "categoryId": 3,
- "url": "https://www.cam-content.com/",
- "companyId": null
- },
- "camakaroda.com": {
- "name": "camakaroda.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "campus_explorer": {
- "name": "Campus Explorer",
- "categoryId": 6,
- "url": "http://www.campusexplorer.com/",
- "companyId": "campus_explorer"
- },
- "canddi": {
- "name": "CANDDI",
- "categoryId": 6,
- "url": "https://www.canddi.com/",
- "companyId": "canddi"
- },
- "canvas": {
- "name": "Canvas",
- "categoryId": 2,
- "url": "https://www.canvas.net/",
- "companyId": null
- },
- "capitaldata": {
- "name": "CapitalData",
- "categoryId": 6,
- "url": "https://www.capitaldata.fr/",
- "companyId": "highco"
- },
- "captora": {
- "name": "Captora",
- "categoryId": 4,
- "url": "http://www.captora.com/",
- "companyId": "captora"
- },
- "capture_media": {
- "name": "Capture Media",
- "categoryId": 4,
- "url": "http://capturemedia.ch/",
- "companyId": "capture_media"
- },
- "capturly": {
- "name": "Capturly",
- "categoryId": 6,
- "url": "http://capturly.com/",
- "companyId": "capturly"
- },
- "carambola": {
- "name": "Carambola",
- "categoryId": 4,
- "url": "http://carambo.la/",
- "companyId": "carambola"
- },
- "carbonads": {
- "name": "Carbon Ads",
- "categoryId": 4,
- "url": "https://www.carbonads.net/",
- "companyId": "buysellads.com"
- },
- "cardinal": {
- "name": "Cardinal",
- "categoryId": 6,
- "url": "https://www.cardinalcommerce.com/",
- "companyId": "visa"
- },
- "cardlytics": {
- "name": "Cardlytics",
- "categoryId": 6,
- "url": "http://www.cardlytics.com/",
- "companyId": null
- },
- "carrot_quest": {
- "name": "Carrot Quest",
- "categoryId": 6,
- "url": "http://www.carrotquest.io/",
- "companyId": "carrot_quest"
- },
- "cartstack": {
- "name": "CartStack",
- "categoryId": 2,
- "url": "http://cartstack.com/",
- "companyId": "cartstack"
- },
- "caspion": {
- "name": "Caspion",
- "categoryId": 6,
- "url": "http://caspion.com/",
- "companyId": "caspion"
- },
- "castle": {
- "name": "Castle",
- "categoryId": 2,
- "url": "https://castle.io",
- "companyId": "castle"
- },
- "catchpoint": {
- "name": "Catchpoint",
- "categoryId": 6,
- "url": "http://www.catchpoint.com/",
- "companyId": "catchpoint_systems"
- },
- "cbox": {
- "name": "Cbox",
- "categoryId": 2,
- "url": "http://cbox.ws",
- "companyId": "cbox"
- },
- "cbs_interactive": {
- "name": "CBS Interactive",
- "categoryId": 0,
- "url": "http://www.cbsinteractive.com/",
- "companyId": "cbs_interactive"
- },
- "ccm_benchmark": {
- "name": "CCM Benchmark",
- "categoryId": 4,
- "url": "http://www.ccmbenchmark.com/",
- "companyId": null
- },
- "cdk_digital_marketing": {
- "name": "CDK Digital Marketing",
- "categoryId": 4,
- "url": "http://www.cobaltgroup.com",
- "companyId": "cdk_digital_marketing"
- },
- "cdn-net.com": {
- "name": "cdn-net.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdn13.com": {
- "name": "cdn13.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "cdn77": {
- "name": "CDN77",
- "categoryId": 9,
- "url": "https://www.cdn77.com/",
- "companyId": null
- },
- "cdnetworks.net": {
- "name": "cdnetworks.net",
- "categoryId": 9,
- "url": "https://www.cdnetworks.com/",
- "companyId": null
- },
- "cdnnetwok_xyz": {
- "name": "cdnnetwok.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "cdnondemand.org": {
- "name": "cdnondemand.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnsure.com": {
- "name": "cdnsure.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnvideo.com": {
- "name": "CDNvideo",
- "categoryId": 9,
- "url": "https://www.cdnvideo.com/",
- "companyId": "cdnvideo"
- },
- "cdnwidget.com": {
- "name": "cdnwidget.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "cedexis_radar": {
- "name": "Cedexis Radar",
- "categoryId": 6,
- "url": "http://www.cedexis.com/products_radar.html",
- "companyId": "cedexis"
- },
- "celebrus": {
- "name": "Celebrus",
- "categoryId": 6,
- "url": "https://www.celebrus.com/",
- "companyId": "celebrus"
- },
- "celtra": {
- "name": "Celtra",
- "categoryId": 0,
- "url": "http://www.celtra.com/",
- "companyId": "celtra"
- },
- "cendyn": {
- "name": "Cendyn",
- "categoryId": 4,
- "url": "http://www.cendyn.com/",
- "companyId": "cendyn"
- },
- "centraltag": {
- "name": "CentralTag",
- "categoryId": 4,
- "url": "http://www.centraltag.com/",
- "companyId": "centraltag"
- },
- "centro": {
- "name": "Centro",
- "categoryId": 4,
- "url": "http://centro.net/",
- "companyId": "centro"
- },
- "cerberus_speed-trap": {
- "name": "Cerberus Speed-Trap",
- "categoryId": 6,
- "url": "http://cerberusip.com/",
- "companyId": "cerberus"
- },
- "certainsource": {
- "name": "CertainSource",
- "categoryId": 4,
- "url": "http://www.ewaydirect.com",
- "companyId": "certainsource"
- },
- "certifica_metric": {
- "name": "Certifica Metric",
- "categoryId": 4,
- "url": "http://www.comscore.com/Products_Services/Product_Index/Certifica_Metric",
- "companyId": "comscore"
- },
- "certona": {
- "name": "Certona",
- "categoryId": 4,
- "url": "http://www.certona.com/products/recommendation.php",
- "companyId": "certona"
- },
- "chameleon": {
- "name": "Chameleon",
- "categoryId": 4,
- "url": "http://chameleon.ad/",
- "companyId": "chamaleon"
- },
- "chango": {
- "name": "Chango",
- "categoryId": 4,
- "url": "http://www.chango.com/",
- "companyId": "rubicon_project"
- },
- "channel_intelligence": {
- "name": "Channel Intelligence",
- "categoryId": 4,
- "url": "http://www.channelintelligence.com/",
- "companyId": "google"
- },
- "channel_pilot_solutions": {
- "name": "ChannelPilot Solutions",
- "categoryId": 6,
- "url": "https://www.channelpilot.de/",
- "companyId": null
- },
- "channeladvisor": {
- "name": "ChannelAdvisor",
- "categoryId": 4,
- "url": "http://www.channeladvisor.com/",
- "companyId": "channeladvisor"
- },
- "channelfinder": {
- "name": "ChannelFinder",
- "categoryId": 4,
- "url": "http://www.kpicentral.com/",
- "companyId": "kaleidoscope_promotions"
- },
- "chaordic": {
- "name": "Chaordic",
- "categoryId": 4,
- "url": "https://www.chaordic.com.br/",
- "companyId": "chaordic"
- },
- "chartbeat": {
- "name": "ChartBeat",
- "categoryId": 6,
- "url": "http://chartbeat.com/",
- "companyId": "chartbeat"
- },
- "chaser": {
- "name": "Chaser",
- "categoryId": 2,
- "url": "http://chaser.ru/",
- "companyId": "chaser"
- },
- "chat_beacon": {
- "name": "Chat Beacon",
- "categoryId": 2,
- "url": "https://www.chatbeacon.io/",
- "companyId": "chat_beacon"
- },
- "chatango": {
- "name": "Chatango",
- "categoryId": 2,
- "url": "http://www.chatango.com/",
- "companyId": "chatango"
- },
- "chatra": {
- "name": "Chatra",
- "categoryId": 2,
- "url": "https://chatra.io",
- "companyId": "chatra"
- },
- "chaturbate.com": {
- "name": "chaturbate.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "chatwing": {
- "name": "ChatWing",
- "categoryId": 2,
- "url": "http://chatwing.com/",
- "companyId": "chatwing"
- },
- "checkmystats": {
- "name": "CheckMyStats",
- "categoryId": 4,
- "url": "http://checkmystats.com.au",
- "companyId": "checkmystats"
- },
- "chefkoch_de": {
- "name": "chefkoch.de",
- "categoryId": 8,
- "url": "http://chefkoch.de/",
- "companyId": null
- },
- "chin_media": {
- "name": "Chin Media",
- "categoryId": 4,
- "url": "http://www.chinmedia.vn/#",
- "companyId": "chin_media"
- },
- "chinesean": {
- "name": "ChineseAN",
- "categoryId": 4,
- "url": "http://www.chinesean.com/",
- "companyId": "chinesean"
- },
- "chitika": {
- "name": "Chitika",
- "categoryId": 4,
- "url": "http://chitika.com/",
- "companyId": "chitika"
- },
- "choicestream": {
- "name": "ChoiceStream",
- "categoryId": 4,
- "url": "http://www.choicestream.com/",
- "companyId": "choicestream"
- },
- "chute": {
- "name": "Chute",
- "categoryId": 5,
- "url": "https://www.getchute.com/",
- "companyId": "esw_capital"
- },
- "circit": {
- "name": "circIT",
- "categoryId": 6,
- "url": "http://www.circit.de/",
- "companyId": null
- },
- "circulate": {
- "name": "Circulate",
- "categoryId": 6,
- "url": "http://circulate.com/",
- "companyId": "circulate"
- },
- "city_spark": {
- "name": "City Spark",
- "categoryId": 4,
- "url": "http://www.cityspark.com/",
- "companyId": "city_spark"
- },
- "cityads": {
- "name": "CityAds",
- "categoryId": 4,
- "url": "http://cityads.ru/",
- "companyId": "cityads"
- },
- "ciuvo.com": {
- "name": "ciuvo.com",
- "categoryId": 12,
- "url": "https://www.ciuvo.com/",
- "companyId": null
- },
- "civey_widgets": {
- "name": "Civey Widgets",
- "categoryId": 2,
- "url": "https://civey.com/",
- "companyId": "civey"
- },
- "civicscience.com": {
- "name": "CivicScience",
- "categoryId": 6,
- "url": "https://civicscience.com/",
- "companyId": "civicscience"
- },
- "ciwebgroup": {
- "name": "CIWebGroup",
- "categoryId": 4,
- "url": "http://www.ciwebgroup.com/",
- "companyId": "ciwebgroup"
- },
- "clcknads.pro": {
- "name": "clcknads.pro",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "clear_pier": {
- "name": "ClearPier",
- "categoryId": 4,
- "url": "http://clearpier.com/",
- "companyId": "clear_pier"
- },
- "clearbit.com": {
- "name": "Clearbit",
- "categoryId": 6,
- "url": "https://clearbit.com/",
- "companyId": "clearbit"
- },
- "clearsale": {
- "name": "clearsale",
- "categoryId": 4,
- "url": "https://www.clear.sale/",
- "companyId": null
- },
- "clearstream.tv": {
- "name": "Clearstream.TV",
- "categoryId": 4,
- "url": "http://clearstream.tv/",
- "companyId": "clearstream.tv"
- },
- "clerk.io": {
- "name": "Clerk.io",
- "categoryId": 4,
- "url": "https://clerk.io/",
- "companyId": "clerk.io"
- },
- "clever_push": {
- "name": "Clever Push",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_push"
- },
- "clever_tap": {
- "name": "CleverTap",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_tap"
- },
- "cleversite": {
- "name": "Cleversite",
- "categoryId": 2,
- "url": "http://cleversite.ru/",
- "companyId": "cleversite"
- },
- "click360": {
- "name": "Click360",
- "categoryId": 6,
- "url": "https://www.click360.io/",
- "companyId": "click360"
- },
- "click_and_chat": {
- "name": "Click and Chat",
- "categoryId": 2,
- "url": "http://www.clickandchat.com/",
- "companyId": "clickandchat"
- },
- "click_back": {
- "name": "Click Back",
- "categoryId": 4,
- "url": "http://www.clickback.com/",
- "companyId": "clickback"
- },
- "clickaider": {
- "name": "ClickAider",
- "categoryId": 4,
- "url": "http://clickaider.com/",
- "companyId": "clickaider"
- },
- "clickbank": {
- "name": "ClickBank",
- "categoryId": 4,
- "url": "http://www.clickbank.com/",
- "companyId": "clickbank"
- },
- "clickbank_proads": {
- "name": "ClickBank ProAds",
- "categoryId": 4,
- "url": "http://www.cbproads.com/",
- "companyId": "clickbank_proads"
- },
- "clickbooth": {
- "name": "Clickbooth",
- "categoryId": 4,
- "url": "http://www.clickbooth.com/",
- "companyId": "clickbooth"
- },
- "clickcease": {
- "name": "ClickCease",
- "categoryId": 2,
- "url": "https://www.clickcease.com/",
- "companyId": "click_cease"
- },
- "clickcertain": {
- "name": "ClickCertain",
- "categoryId": 4,
- "url": "http://www.clickcertain.com",
- "companyId": "clickcertain"
- },
- "clickdesk": {
- "name": "ClickDesk",
- "categoryId": 2,
- "url": "https://www.clickdesk.com/",
- "companyId": "clickdesk"
- },
- "clickdimensions": {
- "name": "ClickDimensions",
- "categoryId": 4,
- "url": "http://www.clickdimensions.com/",
- "companyId": "clickdimensions"
- },
- "clickequations": {
- "name": "ClickEquations",
- "categoryId": 4,
- "url": "http://www.clickequations.com/",
- "companyId": "acquisio"
- },
- "clickexperts": {
- "name": "ClickExperts",
- "categoryId": 4,
- "url": "http://clickexperts.com/corp/index.php?lang=en",
- "companyId": "clickexperts"
- },
- "clickforce": {
- "name": "ClickForce",
- "categoryId": 4,
- "url": "http://www.clickforce.com.tw/",
- "companyId": "clickforce"
- },
- "clickinc": {
- "name": "ClickInc",
- "categoryId": 4,
- "url": "http://www.clickinc.com",
- "companyId": "clickinc"
- },
- "clickintext": {
- "name": "ClickInText",
- "categoryId": 4,
- "url": "http://www.clickintext.com/",
- "companyId": "clickintext"
- },
- "clickky": {
- "name": "Clickky",
- "categoryId": 4,
- "url": "http://www.clickky.biz/",
- "companyId": "clickky"
- },
- "clickmeter": {
- "name": "ClickMeter",
- "categoryId": 4,
- "url": "http://www.clickmeter.com",
- "companyId": "clickmeter"
- },
- "clickonometrics": {
- "name": "Clickonometrics",
- "categoryId": 4,
- "url": "http://clickonometrics.pl/",
- "companyId": "clickonometrics"
- },
- "clickpoint": {
- "name": "Clickpoint",
- "categoryId": 4,
- "url": "http://clickpoint.com/",
- "companyId": "clickpoint"
- },
- "clickprotector": {
- "name": "ClickProtector",
- "categoryId": 6,
- "url": "http://www.clickprotector.com/",
- "companyId": "clickprotector"
- },
- "clickreport": {
- "name": "ClickReport",
- "categoryId": 6,
- "url": "http://clickreport.com/",
- "companyId": "clickreport"
- },
- "clicks_thru_networks": {
- "name": "Clicks Thru Networks",
- "categoryId": 4,
- "url": "http://www.clicksthrunetwork.com/",
- "companyId": "clicksthrunetwork"
- },
- "clicksor": {
- "name": "Clicksor",
- "categoryId": 4,
- "url": "http://clicksor.com/",
- "companyId": "clicksor"
- },
- "clicktale": {
- "name": "ClickTale",
- "categoryId": 6,
- "url": "http://www.clicktale.com/",
- "companyId": "clicktale"
- },
- "clicktripz": {
- "name": "ClickTripz",
- "categoryId": 4,
- "url": "https://www.clicktripz.com",
- "companyId": "clicktripz"
- },
- "clickwinks": {
- "name": "Clickwinks",
- "categoryId": 4,
- "url": "http://www.clickwinks.com/",
- "companyId": "clickwinks"
- },
- "clicky": {
- "name": "Clicky",
- "categoryId": 6,
- "url": "http://getclicky.com/",
- "companyId": "clicky"
- },
- "clickyab": {
- "name": "Clickyab",
- "categoryId": 4,
- "url": "https://www.clickyab.com/",
- "companyId": "clickyab"
- },
- "clicmanager": {
- "name": "ClicManager",
- "categoryId": 4,
- "url": "http://www.clicmanager.fr/",
- "companyId": "clicmanager"
- },
- "clip_syndicate": {
- "name": "Clip Syndicate",
- "categoryId": 4,
- "url": "http://www.clipsyndicate.com/",
- "companyId": "clip_syndicate"
- },
- "clixgalore": {
- "name": "clixGalore",
- "categoryId": 4,
- "url": "http://www.clixgalore.com/",
- "companyId": "clixgalore"
- },
- "clixmetrix": {
- "name": "ClixMetrix",
- "categoryId": 4,
- "url": "http://www.clixmetrix.com/",
- "companyId": "clixmedia"
- },
- "clixsense": {
- "name": "ClixSense",
- "categoryId": 4,
- "url": "http://www.clixsense.com/",
- "companyId": "clixsense"
- },
- "cloud-media.fr": {
- "name": "CloudMedia",
- "categoryId": 4,
- "url": "https://cloudmedia.fr/",
- "companyId": null
- },
- "cloudflare": {
- "name": "CloudFlare",
- "categoryId": 9,
- "url": "https://www.cloudflare.com/",
- "companyId": "cloudflare"
- },
- "cloudimage.io": {
- "name": "Cloudimage.io",
- "categoryId": 9,
- "url": "https://www.cloudimage.io/en/home",
- "companyId": "scaleflex_sas"
- },
- "cloudinary": {
- "name": "Cloudinary",
- "categoryId": 9,
- "url": "https://cloudinary.com/",
- "companyId": null
- },
- "clove_network": {
- "name": "Clove Network",
- "categoryId": 4,
- "url": "http://www.clovenetwork.com/",
- "companyId": "clove_network"
- },
- "clustrmaps": {
- "name": "ClustrMaps",
- "categoryId": 4,
- "url": "http://www.clustrmaps.com/",
- "companyId": "clustrmaps"
- },
- "cnbc": {
- "name": "CNBC",
- "categoryId": 8,
- "url": "https://www.cnbc.com/",
- "companyId": "nbcuniversal"
- },
- "cnetcontent.com": {
- "name": "Cnetcontent",
- "categoryId": 8,
- "url": "http://cnetcontent.com/",
- "companyId": "cbs_interactive"
- },
- "cnstats": {
- "name": "CNStats",
- "categoryId": 6,
- "url": "http://cnstats.ru/",
- "companyId": "cnstats"
- },
- "cnzz.com": {
- "name": "Umeng",
- "categoryId": 6,
- "url": "http://www.umeng.com/",
- "companyId": "umeng"
- },
- "coadvertise": {
- "name": "COADVERTISE",
- "categoryId": 4,
- "url": "http://www.coadvertise.com/",
- "companyId": "coadvertise"
- },
- "cobrowser": {
- "name": "CoBrowser",
- "categoryId": 2,
- "url": "https://www.cobrowser.net/",
- "companyId": "cobrowser.net"
- },
- "codeonclick.com": {
- "name": "codeonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cogocast": {
- "name": "CogoCast",
- "categoryId": 4,
- "url": "http://www.cogocast.com",
- "companyId": "cogocast"
- },
- "coin_have": {
- "name": "Coin Have",
- "categoryId": 4,
- "url": "https://coin-have.com/",
- "companyId": "coin_have"
- },
- "coin_traffic": {
- "name": "Coin Traffic",
- "categoryId": 2,
- "url": "https://cointraffic.io/",
- "companyId": "coin_traffic"
- },
- "coinhive": {
- "name": "Coinhive",
- "categoryId": 8,
- "url": "https://coinhive.com/",
- "companyId": "coinhive"
- },
- "coinurl": {
- "name": "CoinURL",
- "categoryId": 4,
- "url": "https://coinurl.com/",
- "companyId": "coinurl"
- },
- "coll1onf.com": {
- "name": "coll1onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "coll2onf.com": {
- "name": "coll2onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "collarity": {
- "name": "Collarity",
- "categoryId": 4,
- "url": "http://www.collarity.com/",
- "companyId": "collarity"
- },
- "columbia_online": {
- "name": "Columbia Online",
- "categoryId": 4,
- "url": "https://www.colombiaonline.com/",
- "companyId": "columbia_online"
- },
- "combotag": {
- "name": "ComboTag",
- "categoryId": 4,
- "url": "https://www.combotag.com/",
- "companyId": null
- },
- "comcast_technology_solutions": {
- "name": "Comcast Technology Solutions",
- "categoryId": 0,
- "url": "https://www.comcasttechnologysolutions.com/",
- "companyId": "comcast_technology_solutions"
- },
- "comm100": {
- "name": "Comm100",
- "categoryId": 2,
- "url": "http://www.comm100.com/",
- "companyId": "comm100"
- },
- "commerce_sciences": {
- "name": "Commerce Sciences",
- "categoryId": 4,
- "url": "http://commercesciences.com/",
- "companyId": "commerce_sciences"
- },
- "commercehub": {
- "name": "CommerceHub",
- "categoryId": 4,
- "url": "http://www.mercent.com/",
- "companyId": "commercehub"
- },
- "commercialvalue.org": {
- "name": "commercialvalue.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "commission_junction": {
- "name": "CJ Affiliate",
- "categoryId": 4,
- "url": "http://www.cj.com/",
- "companyId": "conversant"
- },
- "communicator_corp": {
- "name": "Communicator Corp",
- "categoryId": 4,
- "url": "http://www.communicatorcorp.com/",
- "companyId": "communicator_corp"
- },
- "communigator": {
- "name": "CommuniGator",
- "categoryId": 6,
- "url": "http://www.wowanalytics.co.uk/",
- "companyId": "communigator"
- },
- "competexl": {
- "name": "CompeteXL",
- "categoryId": 6,
- "url": "http://www.compete.com/help/s12",
- "companyId": "wpp"
- },
- "complex_media_network": {
- "name": "Complex Media",
- "categoryId": 4,
- "url": "https://www.complex.com/",
- "companyId": "verizon"
- },
- "comprigo": {
- "name": "comprigo",
- "categoryId": 12,
- "url": "https://www.comprigo.com/",
- "companyId": null
- },
- "comscore": {
- "name": "ComScore, Inc.",
- "categoryId": 6,
- "url": "https://www.comscore.com/",
- "companyId": "comscore"
- },
- "conative.de": {
- "name": "CoNative",
- "categoryId": 4,
- "url": "http://www.conative.de/",
- "companyId": null
- },
- "condenastdigital.com": {
- "name": "Condé Nast Digital",
- "categoryId": 8,
- "url": "http://www.condenast.com/",
- "companyId": "conde_nast"
- },
- "conduit": {
- "name": "Conduit",
- "categoryId": 4,
- "url": "http://www.conduit.com/",
- "companyId": "conduit"
- },
- "confirmit": {
- "name": "Confirmit",
- "categoryId": 4,
- "url": "http://confirmit.com/",
- "companyId": "confirmit"
- },
- "congstar.de": {
- "name": "congstar.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "connatix.com": {
- "name": "Connatix",
- "categoryId": 4,
- "url": "https://connatix.com/",
- "companyId": "connatix"
- },
- "connectad": {
- "name": "ConnectAd",
- "categoryId": 4,
- "url": "https://connectad.io/",
- "companyId": "connectad"
- },
- "connecto": {
- "name": "Connecto",
- "categoryId": 6,
- "url": "http://www.connecto.io/",
- "companyId": "connecto"
- },
- "connexity": {
- "name": "Connexity",
- "categoryId": 4,
- "url": "http://www.connexity.com",
- "companyId": "shopzilla"
- },
- "connextra": {
- "name": "Connextra",
- "categoryId": 4,
- "url": "http://connextra.com/",
- "companyId": "connextra"
- },
- "constant_contact": {
- "name": "Constant Contact",
- "categoryId": 4,
- "url": "http://www.constantcontact.com/index.jsp",
- "companyId": "constant_contact"
- },
- "consumable": {
- "name": "Consumable",
- "categoryId": 4,
- "url": "http://consumable.com/index.html",
- "companyId": "giftconnect"
- },
- "contact_at_once": {
- "name": "Contact At Once!",
- "categoryId": 2,
- "url": "http://www.contactatonce.com/",
- "companyId": "contact_at_once!"
- },
- "contact_impact": {
- "name": "Contact Impact",
- "categoryId": 4,
- "url": "https://www.contactimpact.de/",
- "companyId": "axel_springer"
- },
- "contactme": {
- "name": "ContactMe",
- "categoryId": 4,
- "url": "http://www.contactme.com",
- "companyId": "contactme"
- },
- "contaxe": {
- "name": "Contaxe",
- "categoryId": 5,
- "url": "http://www.contaxe.com/",
- "companyId": "contaxe"
- },
- "content.ad": {
- "name": "Content.ad",
- "categoryId": 4,
- "url": "https://www.content.ad/",
- "companyId": "content.ad"
- },
- "content_insights": {
- "name": "Content Insights",
- "categoryId": 6,
- "url": "https://contentinsights.com/",
- "companyId": "content_insights"
- },
- "contentexchange.me": {
- "name": "Content Exchange",
- "categoryId": 6,
- "url": "https://www.contentexchange.me/",
- "companyId": "i.r.v."
- },
- "contentful_gmbh": {
- "name": "Contentful GmbH",
- "categoryId": 9,
- "url": "https://www.contentful.com/",
- "companyId": "contentful_gmbh"
- },
- "contentpass": {
- "name": "ContentPass",
- "categoryId": 6,
- "url": "https://www.contentpass.de/",
- "companyId": "contentpass"
- },
- "contentsquare.net": {
- "name": "ContentSquare",
- "categoryId": 4,
- "url": "https://www.contentsquare.com/",
- "companyId": "content_square"
- },
- "contentwrx": {
- "name": "Contentwrx",
- "categoryId": 6,
- "url": "http://contentwrx.com/",
- "companyId": "contentwrx"
- },
- "context": {
- "name": "C|ON|TEXT",
- "categoryId": 4,
- "url": "http://c-on-text.com",
- "companyId": "c_on_text"
- },
- "context.ad": {
- "name": "Context.ad",
- "categoryId": 4,
- "url": "http://contextad.pl/",
- "companyId": "context.ad"
- },
- "continum_net": {
- "name": "continum.net",
- "categoryId": 10,
- "url": "http://continum.net/",
- "companyId": null
- },
- "contribusource": {
- "name": "Contribusource",
- "categoryId": 4,
- "url": "https://www.contribusource.com/",
- "companyId": "contribusource"
- },
- "convergetrack": {
- "name": "ConvergeTrack",
- "categoryId": 6,
- "url": "http://www.convergedirect.com/technology/convergetrack.shtml",
- "companyId": "convergedirect"
- },
- "conversant": {
- "name": "Conversant",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "conversio": {
- "name": "CM Commerce",
- "categoryId": 6,
- "url": "https://cm-commerce.com/",
- "companyId": "conversio"
- },
- "conversion_logic": {
- "name": "Conversion Logic",
- "categoryId": 6,
- "url": "http://www.conversionlogic.com/",
- "companyId": "conversion_logic"
- },
- "conversionruler": {
- "name": "ConversionRuler",
- "categoryId": 4,
- "url": "http://www.conversionruler.com/",
- "companyId": "market_ruler"
- },
- "conversions_box": {
- "name": "Conversions Box",
- "categoryId": 7,
- "url": "http://www.conversionsbox.com/",
- "companyId": "conversions_box"
- },
- "conversions_on_demand": {
- "name": "Conversions On Demand",
- "categoryId": 5,
- "url": "https://www.conversionsondemand.com/",
- "companyId": "conversions_on_demand"
- },
- "conversive": {
- "name": "Conversive",
- "categoryId": 4,
- "url": "http://www.conversive.nl/",
- "companyId": "conversive"
- },
- "convert": {
- "name": "Convert",
- "categoryId": 6,
- "url": "https://www.convert.com/",
- "companyId": "convert"
- },
- "convertfox": {
- "name": "ConvertFox",
- "categoryId": 2,
- "url": "https://convertfox.com/",
- "companyId": "convertfox"
- },
- "convertro": {
- "name": "Convertro",
- "categoryId": 4,
- "url": "http://www.convertro.com/",
- "companyId": "verizon"
- },
- "conviva": {
- "name": "Conviva",
- "categoryId": 6,
- "url": "http://www.conviva.com/",
- "companyId": "conviva"
- },
- "cookie_consent": {
- "name": "Cookie Consent",
- "categoryId": 5,
- "url": "https://silktide.com/",
- "companyId": "silktide"
- },
- "cookie_script": {
- "name": "Cookie Script",
- "categoryId": 5,
- "url": "https://cookie-script.com/",
- "companyId": "cookie_script"
- },
- "cookiebot": {
- "name": "Cookiebot",
- "categoryId": 5,
- "url": "https://www.cookiebot.com/en/",
- "companyId": "cybot"
- },
- "cookieq": {
- "name": "CookieQ",
- "categoryId": 5,
- "url": "http://cookieq.com/CookieQ",
- "companyId": "baycloud"
- },
- "cooliris": {
- "name": "Cooliris",
- "categoryId": 2,
- "url": "http://www.cooliris.com",
- "companyId": "cooliris"
- },
- "copacet": {
- "name": "Copacet",
- "categoryId": 4,
- "url": "http://copacet.com/",
- "companyId": "copacet"
- },
- "coreaudience": {
- "name": "CoreAudience",
- "categoryId": 4,
- "url": "http://www.redaril.com/",
- "companyId": "hearst"
- },
- "coremotives": {
- "name": "CoreMotives",
- "categoryId": 4,
- "url": "http://coremotives.com/",
- "companyId": "coremotives"
- },
- "coull": {
- "name": "Coull",
- "categoryId": 4,
- "url": "http://coull.com/",
- "companyId": "coull"
- },
- "cpm_rocket": {
- "name": "CPM Rocket",
- "categoryId": 4,
- "url": "http://www.cpmrocket.com/",
- "companyId": "cpm_rocket"
- },
- "cpmprofit": {
- "name": "CPMProfit",
- "categoryId": 4,
- "url": "http://www.cpmprofit.com/",
- "companyId": "cpmprofit"
- },
- "cpmstar": {
- "name": "CPMStar",
- "categoryId": 4,
- "url": "http://www.cpmstar.com",
- "companyId": "cpmstar"
- },
- "cpx.to": {
- "name": "Captify",
- "categoryId": 4,
- "url": "https://www.captify.co.uk/",
- "companyId": "captify"
- },
- "cq_counter": {
- "name": "CQ Counter",
- "categoryId": 6,
- "url": "http://www.cqcounter.com/",
- "companyId": "cq_counter"
- },
- "cqq5id8n.com": {
- "name": "cqq5id8n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cquotient.com": {
- "name": "CQuotient",
- "categoryId": 6,
- "url": "https://www.demandware.com/#cquotient",
- "companyId": "salesforce"
- },
- "craftkeys": {
- "name": "CraftKeys",
- "categoryId": 4,
- "url": "http://craftkeys.com/",
- "companyId": "craftkeys"
- },
- "crakmedia_network": {
- "name": "Crakmedia Network",
- "categoryId": 4,
- "url": "http://crakmedia.com/",
- "companyId": "crakmedia_network"
- },
- "crankyads": {
- "name": "CrankyAds",
- "categoryId": 4,
- "url": "http://www.crankyads.com",
- "companyId": "crankyads"
- },
- "crazy_egg": {
- "name": "Crazy Egg",
- "categoryId": 6,
- "url": "http://crazyegg.com/",
- "companyId": "crazy_egg"
- },
- "creafi": {
- "name": "Creafi",
- "categoryId": 4,
- "url": "http://www.creafi.com/en/home/",
- "companyId": "crazy4media"
- },
- "createjs": {
- "name": "CreateJS",
- "categoryId": 9,
- "url": "https://createjs.com/",
- "companyId": null
- },
- "creative_commons": {
- "name": "Creative Commons",
- "categoryId": 8,
- "url": "https://creativecommons.org/",
- "companyId": "creative_commons_corp"
- },
- "crimsonhexagon_com": {
- "name": "Brandwatch",
- "categoryId": 6,
- "url": "https://www.brandwatch.com/",
- "companyId": "brandwatch"
- },
- "crimtan": {
- "name": "Crimtan",
- "categoryId": 4,
- "url": "http://www.crimtan.com/",
- "companyId": "crimtan"
- },
- "crisp": {
- "name": "Crisp",
- "categoryId": 2,
- "url": "https://crisp.chat/",
- "companyId": "crisp"
- },
- "criteo": {
- "name": "Criteo",
- "categoryId": 4,
- "url": "http://www.criteo.com/",
- "companyId": "criteo"
- },
- "crm4d": {
- "name": "CRM4D",
- "categoryId": 6,
- "url": "https://crm4d.com/",
- "companyId": "crm4d"
- },
- "crossengage": {
- "name": "CrossEngage",
- "categoryId": 6,
- "url": "https://www.crossengage.io/",
- "companyId": "crossengage"
- },
- "crosspixel": {
- "name": "Cross Pixel",
- "categoryId": 4,
- "url": "http://crosspixel.net/",
- "companyId": "cross_pixel"
- },
- "crosssell.info": {
- "name": "econda Cross Sell",
- "categoryId": 4,
- "url": "https://www.econda.de/en/solutions/personalization/cross-sell/",
- "companyId": "econda"
- },
- "crossss": {
- "name": "Crossss",
- "categoryId": 4,
- "url": "http://crossss.ru/",
- "companyId": "crossss"
- },
- "crowd_ignite": {
- "name": "Crowd Ignite",
- "categoryId": 4,
- "url": "http://get.crowdignite.com/",
- "companyId": "gorilla_nation_media"
- },
- "crowd_science": {
- "name": "Crowd Science",
- "categoryId": 4,
- "url": "http://www.crowdscience.com/",
- "companyId": "crowd_science"
- },
- "crowdprocess": {
- "name": "CrowdProcess",
- "categoryId": 2,
- "url": "https://crowdprocess.com",
- "companyId": "crowdprocess"
- },
- "crowdynews": {
- "name": "Crowdynews",
- "categoryId": 7,
- "url": "http://www.crowdynews.com/",
- "companyId": "crowdynews"
- },
- "crownpeak": {
- "name": "Crownpeak",
- "categoryId": 5,
- "url": "https://www.crownpeak.com/",
- "companyId": "crownpeak"
- },
- "cryptoloot_miner": {
- "name": "CryptoLoot Miner",
- "categoryId": 4,
- "url": "https://crypto-loot.com/",
- "companyId": "cryptoloot"
- },
- "ctnetwork": {
- "name": "CTnetwork",
- "categoryId": 4,
- "url": "http://ctnetwork.hu/",
- "companyId": "ctnetwork"
- },
- "ctrlshift": {
- "name": "CtrlShift",
- "categoryId": 4,
- "url": "http://www.adzcentral.com/",
- "companyId": "ctrlshift"
- },
- "cubed": {
- "name": "Cubed",
- "categoryId": 6,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "cuelinks": {
- "name": "CueLinks",
- "categoryId": 4,
- "url": "http://www.cuelinks.com/",
- "companyId": "cuelinks"
- },
- "cup_interactive": {
- "name": "Cup Interactive",
- "categoryId": 4,
- "url": "http://www.cupinteractive.com/",
- "companyId": "cup_interactive"
- },
- "curse.com": {
- "name": "Curse",
- "categoryId": 8,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "cursecdn.com": {
- "name": "Curse CDN",
- "categoryId": 9,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "customer.io": {
- "name": "Customer.io",
- "categoryId": 2,
- "url": "http://www.customer.io/",
- "companyId": "customer.io"
- },
- "customerly": {
- "name": "Customerly",
- "categoryId": 2,
- "url": "https://www.customerly.io/",
- "companyId": "customerly"
- },
- "cxense": {
- "name": "cXense",
- "categoryId": 4,
- "url": "http://www.cxense.com/",
- "companyId": "cxense"
- },
- "cxo.name": {
- "name": "Chip Analytics",
- "categoryId": 6,
- "url": "http://www.chip.de/",
- "companyId": null
- },
- "cyber_wing": {
- "name": "Cyber Wing",
- "categoryId": 4,
- "url": "http://www.cyberwing.co.jp/",
- "companyId": "cyberwing"
- },
- "cybersource": {
- "name": "CyberSource",
- "categoryId": 6,
- "url": "https://www.cybersource.com/en-gb.html",
- "companyId": "visa"
- },
- "cygnus": {
- "name": "Cygnus",
- "categoryId": 4,
- "url": "http://www.cygnus.com/",
- "companyId": "cygnus"
- },
- "da-ads.com": {
- "name": "da-ads.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dailymail.co.uk": {
- "name": "Daily Mail",
- "categoryId": 8,
- "url": "http://www.dailymail.co.uk/home/index.html",
- "companyId": "dmg_media"
- },
- "dailymotion": {
- "name": "Dailymotion",
- "categoryId": 8,
- "url": "https://vivendi.com/",
- "companyId": "vivendi"
- },
- "dailymotion_advertising": {
- "name": "Dailymotion Advertising",
- "categoryId": 4,
- "url": "http://advertising.dailymotion.com/",
- "companyId": "vivendi"
- },
- "daisycon": {
- "name": "Daisycon",
- "categoryId": 4,
- "url": "http://www.daisycon.com",
- "companyId": "daisycon"
- },
- "dantrack.net": {
- "name": "DANtrack",
- "categoryId": 4,
- "url": "http://media.dantrack.net/privacy/",
- "companyId": "dentsu_aegis_network"
- },
- "darwin_marketing": {
- "name": "Darwin Marketing",
- "categoryId": 4,
- "url": "http://www.darwinmarketing.com/",
- "companyId": "darwin_marketing"
- },
- "dashboard_ad": {
- "name": "Dashboard Ad",
- "categoryId": 4,
- "url": "http://www.dashboardad.com/",
- "companyId": "premium_access"
- },
- "datacaciques.com": {
- "name": "DataCaciques",
- "categoryId": 6,
- "url": "http://www.datacaciques.com/",
- "companyId": null
- },
- "datacoral": {
- "name": "Datacoral",
- "categoryId": 4,
- "url": "https://datacoral.com/",
- "companyId": "datacoral"
- },
- "datacrushers": {
- "name": "Datacrushers",
- "categoryId": 6,
- "url": "https://www.datacrushers.com/",
- "companyId": "datacrushers"
- },
- "datadome": {
- "name": "DataDome",
- "categoryId": 6,
- "url": "https://datadome.co/",
- "companyId": "datadome"
- },
- "datalicious_datacollector": {
- "name": "Datalicious DataCollector",
- "categoryId": 6,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalicious_supertag": {
- "name": "Datalicious SuperTag",
- "categoryId": 5,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalogix": {
- "name": "Datalogix",
- "categoryId": 4,
- "url": "https://www.oracle.com/corporate/acquisitions/datalogix/",
- "companyId": "oracle"
- },
- "datamind.ru": {
- "name": "DataMind",
- "categoryId": 4,
- "url": "http://datamind.ru/",
- "companyId": "datamind"
- },
- "datatables": {
- "name": "DataTables",
- "categoryId": 2,
- "url": "https://datatables.net/",
- "companyId": null
- },
- "datawrkz": {
- "name": "Datawrkz",
- "categoryId": 4,
- "url": "http://datawrkz.com/",
- "companyId": "datawrkz"
- },
- "dataxpand": {
- "name": "Dataxpand",
- "categoryId": 4,
- "url": "http://dataxpand.com/",
- "companyId": "dataxpand"
- },
- "dataxu": {
- "name": "DataXu",
- "categoryId": 4,
- "url": "http://www.dataxu.com/",
- "companyId": "dataxu"
- },
- "datds.net": {
- "name": "datds.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "datonics": {
- "name": "Datonics",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "datran": {
- "name": "Pulsepoint",
- "categoryId": 4,
- "url": "https://www.pulsepoint.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "davebestdeals.com": {
- "name": "davebestdeals.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dawandastatic.com": {
- "name": "Dawanda CDN",
- "categoryId": 8,
- "url": "https://dawanda.com/",
- "companyId": null
- },
- "dc_stormiq": {
- "name": "DC StormIQ",
- "categoryId": 4,
- "url": "http://www.dc-storm.com/",
- "companyId": "dc_storm"
- },
- "dcbap.com": {
- "name": "dcbap.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dcmn.com": {
- "name": "DCMN",
- "categoryId": 4,
- "url": "https://www.dcmn.com/",
- "companyId": null
- },
- "de_persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.nl",
- "companyId": "de_persgroep"
- },
- "deadline_funnel": {
- "name": "Deadline Funnel",
- "categoryId": 6,
- "url": "https://deadlinefunnel.com/",
- "companyId": "deadline_funnel"
- },
- "dealer.com": {
- "name": "Dealer.com",
- "categoryId": 6,
- "url": "http://www.dealer.com/",
- "companyId": "dealer.com"
- },
- "decibel_insight": {
- "name": "Decibel Insight",
- "categoryId": 6,
- "url": "https://www.decibelinsight.com/",
- "companyId": "decibel_insight"
- },
- "dedicated_media": {
- "name": "Dedicated Media",
- "categoryId": 4,
- "url": "http://www.dedicatedmedia.com/",
- "companyId": "dedicated_media"
- },
- "deep.bi": {
- "name": "Deep.BI",
- "categoryId": 6,
- "url": "http://www.deep.bi/#",
- "companyId": "deep.bi"
- },
- "deepintent.com": {
- "name": "DeepIntent",
- "categoryId": 4,
- "url": "https://www.deepintent.com/",
- "companyId": "deep_intent"
- },
- "defpush.com": {
- "name": "defpush.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "deichmann.com": {
- "name": "deichmann.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "delacon": {
- "name": "Delacon",
- "categoryId": 6,
- "url": "http://www.delacon.com.au/",
- "companyId": "delacon"
- },
- "delivr": {
- "name": "Delivr",
- "categoryId": 6,
- "url": "http://www.percentmobile.com/",
- "companyId": "delivr"
- },
- "delta_projects": {
- "name": "Delta Projects",
- "categoryId": 4,
- "url": "http://www.adaction.se/",
- "companyId": "delta_projects"
- },
- "deluxe": {
- "name": "Deluxe",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "delve_networks": {
- "name": "Delve Networks",
- "categoryId": 7,
- "url": "http://www.delvenetworks.com/",
- "companyId": "limelight_networks"
- },
- "demandbase": {
- "name": "Demandbase",
- "categoryId": 4,
- "url": "http://www.demandbase.com/",
- "companyId": "demandbase"
- },
- "demandmedia": {
- "name": "DemandMedia",
- "categoryId": 4,
- "url": "http://www.demandmedia.com",
- "companyId": "leaf_group"
- },
- "deqwas": {
- "name": "Deqwas",
- "categoryId": 6,
- "url": "http://www.deqwas.com/",
- "companyId": "deqwas"
- },
- "devatics": {
- "name": "Devatics",
- "categoryId": 2,
- "url": "http://www.devatics.co.uk/",
- "companyId": "devatics"
- },
- "developer_media": {
- "name": "Developer Media",
- "categoryId": 4,
- "url": "http://www.developermedia.com/",
- "companyId": "developer_media"
- },
- "deviantart.net": {
- "name": "deviantart.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dex_platform": {
- "name": "DEX Platform",
- "categoryId": 4,
- "url": "http://blueadvertise.com/",
- "companyId": "dex_platform"
- },
- "dgm": {
- "name": "dgm",
- "categoryId": 4,
- "url": "http://www.dgm-au.com/",
- "companyId": "apd"
- },
- "dialogtech": {
- "name": "Dialogtech",
- "categoryId": 6,
- "url": "https://www.dialogtech.com/",
- "companyId": "dialogtech"
- },
- "dianomi": {
- "name": "Dianomi",
- "categoryId": 4,
- "url": "http://www.dianomi.com/cms/",
- "companyId": "dianomi"
- },
- "didit_blizzard": {
- "name": "Didit Blizzard",
- "categoryId": 4,
- "url": "http://www.didit.com/blizzard",
- "companyId": "didit"
- },
- "didit_maestro": {
- "name": "Didit Maestro",
- "categoryId": 4,
- "url": "http://www.didit.com/maestro",
- "companyId": "didit"
- },
- "didomi": {
- "name": "Didomi",
- "categoryId": 5,
- "url": "https://www.didomi.io/en/",
- "companyId": "didomi"
- },
- "digg_widget": {
- "name": "Digg Widget",
- "categoryId": 2,
- "url": "http://digg.com/apple/Digg_Widget",
- "companyId": "buysellads.com"
- },
- "digicert_trust_seal": {
- "name": "Digicert Trust Seal",
- "categoryId": 5,
- "url": "http://www.digicert.com/",
- "companyId": "digicert"
- },
- "digidip": {
- "name": "Digidip",
- "categoryId": 4,
- "url": "http://www.digidip.net/",
- "companyId": "digidip"
- },
- "digiglitz": {
- "name": "Digiglitz",
- "categoryId": 6,
- "url": "http://www.digiglitz.com/",
- "companyId": "digiglitz"
- },
- "digilant": {
- "name": "Digilant",
- "categoryId": 4,
- "url": "https://www.digilant.com/",
- "companyId": "digilant"
- },
- "digioh": {
- "name": "Digioh",
- "categoryId": 4,
- "url": "https://digioh.com/",
- "companyId": null
- },
- "digital.gov": {
- "name": "Digital.gov",
- "categoryId": 6,
- "url": "https://digital.gov/",
- "companyId": "us_government"
- },
- "digital_control_room": {
- "name": "Digital Control Room",
- "categoryId": 5,
- "url": "http://www.cookiereports.com/",
- "companyId": "digital_control_room"
- },
- "digital_nomads": {
- "name": "Digital Nomads",
- "categoryId": 4,
- "url": "http://dnomads.net/",
- "companyId": null
- },
- "digital_remedy": {
- "name": "Digital Remedy",
- "categoryId": 4,
- "url": "https://www.digitalremedy.com/",
- "companyId": "digital_remedy"
- },
- "digital_river": {
- "name": "Digital River",
- "categoryId": 4,
- "url": "http://corporate.digitalriver.com",
- "companyId": "digital_river"
- },
- "digital_window": {
- "name": "Digital Window",
- "categoryId": 4,
- "url": "http://www.digitalwindow.com/",
- "companyId": "axel_springer"
- },
- "digiteka": {
- "name": "Digiteka",
- "categoryId": 4,
- "url": "http://digiteka.com/",
- "companyId": "digiteka"
- },
- "digitrust": {
- "name": "DigiTrust",
- "categoryId": 4,
- "url": "http://www.digitru.st/",
- "companyId": "iab"
- },
- "dihitt_badge": {
- "name": "diHITT Badge",
- "categoryId": 7,
- "url": "http://www.dihitt.com.br/",
- "companyId": "dihitt"
- },
- "dimml": {
- "name": "DimML",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "direct_keyword_link": {
- "name": "Direct Keyword Link",
- "categoryId": 4,
- "url": "http://www.keywordsconnect.com/",
- "companyId": "direct_keyword_link"
- },
- "directadvert": {
- "name": "Direct/ADVERT",
- "categoryId": 4,
- "url": "http://www.directadvert.ru/",
- "companyId": "directadvert"
- },
- "directrev": {
- "name": "DirectREV",
- "categoryId": 4,
- "url": "http://www.directrev.com/",
- "companyId": "directrev"
- },
- "discord": {
- "name": "Discord",
- "categoryId": 2,
- "url": "https://discordapp.com/",
- "companyId": null
- },
- "display_block": {
- "name": "display block",
- "categoryId": 4,
- "url": "https://www.displayblock.com/",
- "companyId": "display_block"
- },
- "disqus": {
- "name": "Disqus",
- "categoryId": 1,
- "url": "https://disqus.com/",
- "companyId": "zeta"
- },
- "disqus_ads": {
- "name": "Disqus Ads",
- "categoryId": 4,
- "url": "https://disqusads.com/",
- "companyId": "zeta"
- },
- "distil_tag": {
- "name": "Distil Networks",
- "categoryId": 5,
- "url": "https://www.distilnetworks.com/",
- "companyId": "distil_networks"
- },
- "districtm.io": {
- "name": "district m",
- "categoryId": 4,
- "url": "https://districtm.net/",
- "companyId": "district_m"
- },
- "distroscale": {
- "name": "Distroscale",
- "categoryId": 6,
- "url": "http://www.distroscale.com/",
- "companyId": "distroscale"
- },
- "div.show": {
- "name": "div.show",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "diva": {
- "name": "DiVa",
- "categoryId": 6,
- "url": "http://www.vertriebsassistent.de/",
- "companyId": "diva"
- },
- "divvit": {
- "name": "Divvit",
- "categoryId": 6,
- "url": "https://www.divvit.com/",
- "companyId": "divvit"
- },
- "dm2": {
- "name": "DM2",
- "categoryId": 4,
- "url": "http://digitalmediamanagement.com/",
- "companyId": "digital_media_management"
- },
- "dmg_media": {
- "name": "DMG Media",
- "categoryId": 8,
- "url": "https://www.dmgmedia.co.uk/",
- "companyId": "dmgt"
- },
- "dmm": {
- "name": "DMM",
- "categoryId": 3,
- "url": "http://www.dmm.co.jp",
- "companyId": "dmm.r18"
- },
- "dmwd": {
- "name": "DMWD",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dockvine": {
- "name": "dockvine",
- "categoryId": 2,
- "url": "https://www.dockvine.com",
- "companyId": "dockvine"
- },
- "docler": {
- "name": "Docler",
- "categoryId": 0,
- "url": "https://www.doclerholding.com/en/about/companies/33/",
- "companyId": "docler_ip"
- },
- "dogannet": {
- "name": "Dogannet",
- "categoryId": 4,
- "url": "http://s.dogannet.tv/",
- "companyId": "dogannet"
- },
- "domodomain": {
- "name": "DomoDomain",
- "categoryId": 6,
- "url": "http://www.domodomain.com/",
- "companyId": "intelligencefocus"
- },
- "donationtools": {
- "name": "iRobinHood",
- "categoryId": 12,
- "url": "http://www.irobinhood.org",
- "companyId": null
- },
- "doofinder.com": {
- "name": "doofinder",
- "categoryId": 2,
- "url": "https://www.doofinder.com/",
- "companyId": null
- },
- "doorbell.io": {
- "name": "Doorbell.io",
- "categoryId": 5,
- "url": "https://doorbell.io/",
- "companyId": "doorbell.io"
- },
- "dotandmedia": {
- "name": "DotAndMedia",
- "categoryId": 4,
- "url": "http://www.dotandmedia.com",
- "companyId": "dotandmedia"
- },
- "dotmailer": {
- "name": "dotMailer",
- "categoryId": 2,
- "url": "http://www.dotdigitalgroup.com/",
- "companyId": "dotdigital_group"
- },
- "dotmetrics.net": {
- "name": "Dotmetrics",
- "categoryId": 6,
- "url": "https://dotmetrics.net/",
- "companyId": null
- },
- "dotomi": {
- "name": "Dotomi",
- "categoryId": 4,
- "url": "http://www.dotomi.com/",
- "companyId": "conversant"
- },
- "double.net": {
- "name": "Double.net",
- "categoryId": 4,
- "url": "http://double.net/en/",
- "companyId": "double.net"
- },
- "doubleclick": {
- "name": "DoubleClick",
- "categoryId": 4,
- "url": "http://www.doubleclick.com",
- "companyId": "google"
- },
- "doubleclick_ad_buyer": {
- "name": "DoubleClick Ad Exchange-Buyer",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doubleclick_bid_manager": {
- "name": "DoubleClick Bid Manager",
- "categoryId": 4,
- "url": "http://www.invitemedia.com",
- "companyId": "google"
- },
- "doubleclick_floodlight": {
- "name": "DoubleClick Floodlight",
- "categoryId": 4,
- "url": "http://www.google.com/support/dfa/partner/bin/topic.py?topic=23943",
- "companyId": "google"
- },
- "doubleclick_spotlight": {
- "name": "DoubleClick Spotlight",
- "categoryId": 4,
- "url": "http://www.doubleclick.com/products/richmedia",
- "companyId": "google"
- },
- "doubleclick_video_stats": {
- "name": "Doubleclick Video Stats",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doublepimp": {
- "name": "DoublePimp",
- "categoryId": 3,
- "url": "http://www.doublepimp.com/",
- "companyId": "doublepimp"
- },
- "doubleverify": {
- "name": "DoubleVerify",
- "categoryId": 4,
- "url": "http://www.doubleverify.com/",
- "companyId": "doubleverify"
- },
- "dratio": {
- "name": "Dratio",
- "categoryId": 6,
- "url": "http://www.dratio.com/",
- "companyId": "dratio"
- },
- "drawbridge": {
- "name": "Drawbridge",
- "categoryId": 4,
- "url": "http://www.drawbrid.ge/",
- "companyId": "drawbridge"
- },
- "dreamlab.pl": {
- "name": "DreamLab.pl",
- "categoryId": 4,
- "url": "https://www.dreamlab.pl/",
- "companyId": "onet.pl"
- },
- "drift": {
- "name": "Drift",
- "categoryId": 2,
- "url": "https://www.drift.com/",
- "companyId": "drift"
- },
- "drip": {
- "name": "Drip",
- "categoryId": 2,
- "url": "https://www.getdrip.com",
- "companyId": "drip"
- },
- "dropbox.com": {
- "name": "Dropbox",
- "categoryId": 2,
- "url": "https://www.dropbox.com/",
- "companyId": null
- },
- "dsnr_media_group": {
- "name": "DSNR Media Group",
- "categoryId": 4,
- "url": "http://www.dsnrmg.com/",
- "companyId": "dsnr_media_group"
- },
- "dsp_rambler": {
- "name": "Rambler DSP",
- "categoryId": 4,
- "url": "http://dsp.rambler.ru/",
- "companyId": "rambler"
- },
- "dstillery": {
- "name": "Dstillery",
- "categoryId": 4,
- "url": "https://dstillery.com/",
- "companyId": "dstillery"
- },
- "dtscout.com": {
- "name": "DTScout",
- "categoryId": 4,
- "url": "http://www.dtscout.com/",
- "companyId": "dtscout"
- },
- "dudamobile": {
- "name": "DudaMobile",
- "categoryId": 4,
- "url": "https://www.dudamobile.com/",
- "companyId": "dudamobile"
- },
- "dun_and_bradstreet": {
- "name": "Dun and Bradstreet",
- "categoryId": 6,
- "url": "http://www.dnb.com/#",
- "companyId": "dun_&_bradstreet"
- },
- "dwstat.cn": {
- "name": "dwstat.cn",
- "categoryId": 6,
- "url": "http://www.dwstat.cn/",
- "companyId": "dwstat"
- },
- "dynad": {
- "name": "DynAd",
- "categoryId": 4,
- "url": "http://dynad.net/",
- "companyId": "dynad"
- },
- "dynadmic": {
- "name": "DynAdmic",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dynamic_1001_gmbh": {
- "name": "Dynamic 1001 GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dynamic_logic": {
- "name": "Dynamic Logic",
- "categoryId": 4,
- "url": "http://www.dynamiclogic.com/",
- "companyId": "millward_brown"
- },
- "dynamic_yield": {
- "name": "Dynamic Yield",
- "categoryId": 5,
- "url": "https://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynamic_yield_analytics": {
- "name": "Dynamic Yield Analytics",
- "categoryId": 6,
- "url": "http://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynata": {
- "name": "Dynata",
- "categoryId": 4,
- "url": "http://hottraffic.nl/en",
- "companyId": "dynata"
- },
- "dynatrace.com": {
- "name": "Dynatrace",
- "categoryId": 6,
- "url": "https://www.dynatrace.com/",
- "companyId": "thoma_bravo"
- },
- "dyncdn.me": {
- "name": "dyncdn.me",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "e-planning": {
- "name": "e-planning",
- "categoryId": 4,
- "url": "http://www.e-planning.net/",
- "companyId": "e-planning"
- },
- "eadv": {
- "name": "eADV",
- "categoryId": 4,
- "url": "http://eadv.it/",
- "companyId": "eadv"
- },
- "eanalyzer.de": {
- "name": "eanalyzer.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "early_birds": {
- "name": "Early Birds",
- "categoryId": 4,
- "url": "http://www.early-birds.fr/",
- "companyId": "early_birds"
- },
- "earnify": {
- "name": "Earnify",
- "categoryId": 4,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "earnify_tracker": {
- "name": "Earnify Tracker",
- "categoryId": 6,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "easyads": {
- "name": "EasyAds",
- "categoryId": 4,
- "url": "https://easyads.bg/",
- "companyId": "easyads"
- },
- "easylist_club": {
- "name": "easylist.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ebay": {
- "name": "eBay Stats",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "ebay_korea": {
- "name": "eBay Korea",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "ebay_partner_network": {
- "name": "eBay Partner Network",
- "categoryId": 4,
- "url": "https://www.ebaypartnernetwork.com/files/hub/en-US/index.html",
- "companyId": "ebay_partner_network"
- },
- "ebuzzing": {
- "name": "eBuzzing",
- "categoryId": 4,
- "url": "http://www.ebuzzing.com/",
- "companyId": "ebuzzing"
- },
- "echo": {
- "name": "Echo",
- "categoryId": 4,
- "url": "http://js-kit.com/",
- "companyId": "echo"
- },
- "eclick": {
- "name": "eClick",
- "categoryId": 4,
- "url": "http://eclick.vn",
- "companyId": "eclick"
- },
- "econda": {
- "name": "Econda",
- "categoryId": 6,
- "url": "http://www.econda.de/",
- "companyId": "econda"
- },
- "ecotag": {
- "name": "ecotag",
- "categoryId": 4,
- "url": "http://www.eco-tag.jp/",
- "companyId": "ecotag"
- },
- "edigitalresearch": {
- "name": "eDigitalResearch",
- "categoryId": 4,
- "url": "http://www.edigitalresearch.com/",
- "companyId": "edigitalresearch"
- },
- "effective_measure": {
- "name": "Effective Measure",
- "categoryId": 4,
- "url": "http://www.effectivemeasure.com/",
- "companyId": "effective_measure"
- },
- "effiliation": {
- "name": "Effiliation",
- "categoryId": 4,
- "url": "http://www.effiliation.com/",
- "companyId": "effiliation"
- },
- "egain": {
- "name": "eGain",
- "categoryId": 2,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "egain_analytics": {
- "name": "eGain Analytics",
- "categoryId": 6,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "ehi-siegel_de": {
- "name": "ehi-siegel.de",
- "categoryId": 2,
- "url": "http://ehi-siegel.de/",
- "companyId": null
- },
- "ekmpinpoint": {
- "name": "ekmPinPoint",
- "categoryId": 6,
- "url": "http://ekmpinpoint.com/",
- "companyId": "ekmpinpoint"
- },
- "ekomi": {
- "name": "eKomi",
- "categoryId": 1,
- "url": "http://www.ekomi.co.uk",
- "companyId": "ekomi"
- },
- "elastic_ad": {
- "name": "Elastic Ad",
- "categoryId": 4,
- "url": "http://www.elasticad.com",
- "companyId": "elastic_ad"
- },
- "elastic_beanstalk": {
- "name": "Elastic Beanstalk",
- "categoryId": 6,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "elicit": {
- "name": "elicit",
- "categoryId": 4,
- "url": "http://www.elicitsearch.com/",
- "companyId": "elicit"
- },
- "eloqua": {
- "name": "Eloqua",
- "categoryId": 4,
- "url": "http://www.eloqua.com/",
- "companyId": "oracle"
- },
- "eluxer_net": {
- "name": "eluxer.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "email_aptitude": {
- "name": "Email Aptitude",
- "categoryId": 4,
- "url": "http://www.emailaptitude.com/",
- "companyId": "email_aptitude"
- },
- "email_attitude": {
- "name": "Email Attitude",
- "categoryId": 4,
- "url": "http://us.email-attitude.com/Default.aspx",
- "companyId": "1000mercis"
- },
- "emarketeer": {
- "name": "emarketeer",
- "categoryId": 4,
- "url": "http://www.emarketeer.com/",
- "companyId": "emarketeer"
- },
- "embed.ly": {
- "name": "Embedly",
- "categoryId": 6,
- "url": "http://embed.ly/",
- "companyId": "medium"
- },
- "emediate": {
- "name": "Emediate",
- "categoryId": 4,
- "url": "http://www.emediate.biz/",
- "companyId": "cxense"
- },
- "emetriq": {
- "name": "emetriq",
- "categoryId": 4,
- "url": "http://www.emetriq.com",
- "companyId": "emetriq"
- },
- "emma": {
- "name": "Emma",
- "categoryId": 4,
- "url": "http://myemma.com/",
- "companyId": "emma"
- },
- "emnet": {
- "name": "eMnet",
- "categoryId": 4,
- "url": "http://www.emnet.co.kr",
- "companyId": "emnet"
- },
- "empathy": {
- "name": "Empathy",
- "categoryId": 4,
- "url": "http://www.colbenson.com",
- "companyId": "empathy"
- },
- "emsmobile.de": {
- "name": "EMS Mobile",
- "categoryId": 8,
- "url": "http://www.emsmobile.com/",
- "companyId": null
- },
- "encore_metrics": {
- "name": "Encore Metrics",
- "categoryId": 4,
- "url": "http://sitecompass.com",
- "companyId": "flashtalking"
- },
- "enecto_analytics": {
- "name": "Enecto Analytics",
- "categoryId": 6,
- "url": "http://www.enecto.com/en/",
- "companyId": "enecto"
- },
- "engage_sciences": {
- "name": "Engage Sciences",
- "categoryId": 6,
- "url": "http://www.engagesciences.com/",
- "companyId": "engagesciences"
- },
- "engageya_widget": {
- "name": "Engageya Widget",
- "categoryId": 4,
- "url": "http://www.engageya.com/home/",
- "companyId": "engageya"
- },
- "engagio": {
- "name": "Engagio",
- "categoryId": 6,
- "url": "https://www.engagio.com/",
- "companyId": "engagio"
- },
- "engineseeker": {
- "name": "EngineSeeker",
- "categoryId": 4,
- "url": "http://www.engineseeker.com/",
- "companyId": "engineseeker"
- },
- "enquisite": {
- "name": "Enquisite",
- "categoryId": 4,
- "url": "http://www.enquisite.com/",
- "companyId": "inboundwriter"
- },
- "enreach": {
- "name": "Enreach",
- "categoryId": 4,
- "url": "https://enreach.me/",
- "companyId": "enreach"
- },
- "ensemble": {
- "name": "Ensemble",
- "categoryId": 4,
- "url": "http://www.tumri.com",
- "companyId": "ensemble"
- },
- "ensighten": {
- "name": "Ensighten",
- "categoryId": 5,
- "url": "http://www.ensighten.com",
- "companyId": "ensighten"
- },
- "envolve": {
- "name": "Envolve",
- "categoryId": 2,
- "url": "https://www.envolve.com/",
- "companyId": "envolve"
- },
- "envybox": {
- "name": "Envybox",
- "categoryId": 2,
- "url": "https://envybox.io/",
- "companyId": "envybox"
- },
- "eperflex": {
- "name": "Eperflex",
- "categoryId": 4,
- "url": "https://eperflex.com/",
- "companyId": "ividence"
- },
- "epic_game_ads": {
- "name": "Epic Game Ads",
- "categoryId": 4,
- "url": "http://www.epicgameads.com/",
- "companyId": "epic_game_ads"
- },
- "epic_marketplace": {
- "name": "Epic Marketplace",
- "categoryId": 4,
- "url": "http://www.trafficmarketplace.com/",
- "companyId": "epic_advertising"
- },
- "epom": {
- "name": "Epom",
- "categoryId": 4,
- "url": "http://epom.com/",
- "companyId": "epom"
- },
- "epoq": {
- "name": "epoq",
- "categoryId": 2,
- "url": "http://www.epoq.de/",
- "companyId": "epoq"
- },
- "eprice": {
- "name": "ePrice",
- "categoryId": 4,
- "url": "http://banzaiadv.it/",
- "companyId": "eprice"
- },
- "eproof": {
- "name": "eProof",
- "categoryId": 6,
- "url": "http://www.eproof.com/",
- "companyId": "eproof"
- },
- "eqs_group": {
- "name": "EQS Group",
- "categoryId": 6,
- "url": "https://www.eqs.com/",
- "companyId": "eqs_group"
- },
- "eqworks": {
- "name": "EQWorks",
- "categoryId": 4,
- "url": "http://eqads.com",
- "companyId": "eq_works"
- },
- "eroadvertising": {
- "name": "EroAdvertising",
- "categoryId": 3,
- "url": "http://www.ero-advertising.com/",
- "companyId": "ero_advertising"
- },
- "errorception": {
- "name": "Errorception",
- "categoryId": 6,
- "url": "http://errorception.com/",
- "companyId": "errorception"
- },
- "eshopcomp.com": {
- "name": "eshopcomp.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "espn_cdn": {
- "name": "ESPN CDN",
- "categoryId": 9,
- "url": "http://www.espn.com/",
- "companyId": "disney"
- },
- "esprit.de": {
- "name": "esprit.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "estat": {
- "name": "eStat",
- "categoryId": 6,
- "url": "http://www.mediametrie-estat.com/",
- "companyId": "mediametrie"
- },
- "etag": {
- "name": "etag",
- "categoryId": 4,
- "url": "http://etagdigital.com.br/",
- "companyId": "etag"
- },
- "etahub.com": {
- "name": "etahub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "etarget": {
- "name": "Etarget",
- "categoryId": 4,
- "url": "http://etargetnet.com/",
- "companyId": "etarget"
- },
- "ethnio": {
- "name": "Ethnio",
- "categoryId": 4,
- "url": "http://ethn.io/",
- "companyId": "ethnio"
- },
- "etology": {
- "name": "Etology",
- "categoryId": 4,
- "url": "http://www.etology.com",
- "companyId": "etology"
- },
- "etp": {
- "name": "ETP",
- "categoryId": 6,
- "url": "https://www.etpgroup.com",
- "companyId": "etp"
- },
- "etracker": {
- "name": "etracker",
- "categoryId": 6,
- "url": "http://www.etracker.com/en/",
- "companyId": "etracker_gmbh"
- },
- "etrigue": {
- "name": "eTrigue",
- "categoryId": 4,
- "url": "http://www.etrigue.com/",
- "companyId": "etrigue"
- },
- "etsystatic": {
- "name": "Etsy CDN",
- "categoryId": 9,
- "url": "https://www.etsy.com/",
- "companyId": "etsy"
- },
- "eulerian": {
- "name": "Eulerian",
- "categoryId": 6,
- "url": "https://www.eulerian.com/",
- "companyId": "eulerian"
- },
- "euroads": {
- "name": "Euroads",
- "categoryId": 4,
- "url": "http://euroads.com/en/",
- "companyId": "euroads"
- },
- "europecash": {
- "name": "Europecash",
- "categoryId": 4,
- "url": "https://www.europacash.com/",
- "companyId": "europacash"
- },
- "euroweb_counter": {
- "name": "Euroweb Counter",
- "categoryId": 4,
- "url": "http://www.euroweb.de/",
- "companyId": "euroweb"
- },
- "evergage.com": {
- "name": "Evergage",
- "categoryId": 2,
- "url": "https://www.evergage.com",
- "companyId": "evergage"
- },
- "everstring": {
- "name": "Everstring",
- "categoryId": 6,
- "url": "http://www.everstring.com/",
- "companyId": "everstring"
- },
- "everyday_health": {
- "name": "Everyday Health",
- "categoryId": 7,
- "url": "http://www.everydayhealth.com/",
- "companyId": "everyday_health"
- },
- "evidon": {
- "name": "Evidon",
- "categoryId": 5,
- "url": "https://www.evidon.com/",
- "companyId": "crownpeak"
- },
- "evisit_analyst": {
- "name": "eVisit Analyst",
- "categoryId": 4,
- "url": "http://www.evisitanalyst.com",
- "companyId": "evisit_analyst"
- },
- "exact_drive": {
- "name": "Exact Drive",
- "categoryId": 4,
- "url": "http://www.exactdrive.com/",
- "companyId": "exact_drive"
- },
- "exactag": {
- "name": "Exactag",
- "categoryId": 6,
- "url": "http://www.exactag.com",
- "companyId": "exactag"
- },
- "exelate": {
- "name": "eXelate",
- "categoryId": 4,
- "url": "http://www.exelate.com/",
- "companyId": "nielsen"
- },
- "exitjunction": {
- "name": "ExitJunction",
- "categoryId": 4,
- "url": "https://secure.exitjunction.com",
- "companyId": "exitjunction"
- },
- "exoclick": {
- "name": "ExoClick",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "exoticads.com": {
- "name": "exoticads",
- "categoryId": 3,
- "url": "https://exoticads.com/welcome/",
- "companyId": null
- },
- "expedia": {
- "name": "Expedia",
- "categoryId": 8,
- "url": "https://www.trvl-px.com/",
- "companyId": "iac_apps"
- },
- "experian": {
- "name": "Experian",
- "categoryId": 8,
- "url": "https://www.experian.com/",
- "companyId": "experian_inc"
- },
- "experian_marketing_services": {
- "name": "Experian Marketing Services",
- "categoryId": 4,
- "url": "http://www.experian.com/",
- "companyId": "experian_inc"
- },
- "expo-max": {
- "name": "expo-MAX",
- "categoryId": 4,
- "url": "http://expo-max.com/",
- "companyId": "expo-max"
- },
- "expose_box": {
- "name": "Expose Box",
- "categoryId": 4,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "expose_box_widgets": {
- "name": "Expose Box Widgets",
- "categoryId": 2,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "express.co.uk": {
- "name": "express.co.uk",
- "categoryId": 8,
- "url": "https://www.express.co.uk/",
- "companyId": null
- },
- "expressvpn": {
- "name": "ExpressVPN",
- "categoryId": 2,
- "url": "https://www.expressvpn.com/",
- "companyId": "expressvpn"
- },
- "extreme_tracker": {
- "name": "eXTReMe Tracker",
- "categoryId": 6,
- "url": "http://www.extremetracking.com/",
- "companyId": "extreme_digital"
- },
- "eye_newton": {
- "name": "Eye Newton",
- "categoryId": 2,
- "url": "http://eyenewton.ru/",
- "companyId": "eyenewton"
- },
- "eyeota": {
- "name": "Eyeota",
- "categoryId": 4,
- "url": "http://www.eyeota.com/",
- "companyId": "eyeota"
- },
- "eyereturnmarketing": {
- "name": "Eyereturn Marketing",
- "categoryId": 4,
- "url": "https://eyereturnmarketing.com/",
- "companyId": "torstar_corp"
- },
- "eyeview": {
- "name": "Eyeview",
- "categoryId": 4,
- "url": "http://www.eyeviewdigital.com/",
- "companyId": "eyeview"
- },
- "ezakus": {
- "name": "Ezakus",
- "categoryId": 4,
- "url": "http://www.ezakus.com/",
- "companyId": "np6"
- },
- "f11-ads.com": {
- "name": "Factor Eleven",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "facebook": {
- "name": "Facebook",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "facebook"
- },
- "facebook_beacon": {
- "name": "Facebook Beacon",
- "categoryId": 7,
- "url": "http://www.facebook.com/beacon/faq.php",
- "companyId": "facebook"
- },
- "facebook_cdn": {
- "name": "Facebook CDN",
- "categoryId": 9,
- "url": "https://www.facebook.com",
- "companyId": "facebook"
- },
- "facebook_connect": {
- "name": "Facebook Connect",
- "categoryId": 6,
- "url": "https://developers.facebook.com/connect.php",
- "companyId": "facebook"
- },
- "facebook_conversion_tracking": {
- "name": "Facebook Conversion Tracking",
- "categoryId": 4,
- "url": "http://www.facebook.com/",
- "companyId": "facebook"
- },
- "facebook_custom_audience": {
- "name": "Facebook Custom Audience",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "facebook"
- },
- "facebook_graph": {
- "name": "Facebook Social Graph",
- "categoryId": 7,
- "url": "https://developers.facebook.com/docs/reference/api/",
- "companyId": "facebook"
- },
- "facebook_impressions": {
- "name": "Facebook Impressions",
- "categoryId": 4,
- "url": "https://www.facebook.com/",
- "companyId": "facebook"
- },
- "facebook_social_plugins": {
- "name": "Facebook Social Plugins",
- "categoryId": 7,
- "url": "https://developers.facebook.com/plugins",
- "companyId": "facebook"
- },
- "facetz.dca": {
- "name": "Facetz.DCA",
- "categoryId": 4,
- "url": "http://facetz.net",
- "companyId": "dca"
- },
- "facilitate_digital": {
- "name": "Facilitate Digital",
- "categoryId": 4,
- "url": "http://www.facilitatedigital.com/",
- "companyId": "adslot"
- },
- "faktor.io": {
- "name": "faktor.io",
- "categoryId": 6,
- "url": "https://faktor.io/",
- "companyId": "faktor.io"
- },
- "fancy_widget": {
- "name": "Fancy Widget",
- "categoryId": 7,
- "url": "http://www.thefancy.com/",
- "companyId": "fancy"
- },
- "fanplayr": {
- "name": "Fanplayr",
- "categoryId": 4,
- "url": "http://www.fanplayr.com/",
- "companyId": "fanplayr"
- },
- "fap.to": {
- "name": "Imagefap",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "fastly_insights": {
- "name": "Fastly Insights",
- "categoryId": 6,
- "url": "https://insights.fastlylabs.com/",
- "companyId": "fastly"
- },
- "fastlylb.net": {
- "name": "Fastly",
- "categoryId": 9,
- "url": "https://www.fastly.com/",
- "companyId": "fastly"
- },
- "fastpic.ru": {
- "name": "FastPic",
- "categoryId": 10,
- "url": "http://fastpic.ru/",
- "companyId": "fastpic"
- },
- "federated_media": {
- "name": "Federated Media",
- "categoryId": 4,
- "url": "http://www.federatedmedia.net/",
- "companyId": "hyfn"
- },
- "feedbackify": {
- "name": "Feedbackify",
- "categoryId": 2,
- "url": "http://www.feedbackify.com/",
- "companyId": "feedbackify"
- },
- "feedburner.com": {
- "name": "FeedBurner",
- "categoryId": 4,
- "url": "https://feedburner.com",
- "companyId": "google"
- },
- "feedify": {
- "name": "Feedify",
- "categoryId": 7,
- "url": "http://feedify.de/",
- "companyId": "feedify"
- },
- "feedjit": {
- "name": "Feedjit",
- "categoryId": 4,
- "url": "http://feedjit.com/",
- "companyId": "feedjit"
- },
- "feedperfect": {
- "name": "FeedPerfect",
- "categoryId": 4,
- "url": "http://www.feedperfect.com/",
- "companyId": "feedperfect"
- },
- "feedsportal": {
- "name": "Feedsportal",
- "categoryId": 4,
- "url": "http://www.mediafed.com/",
- "companyId": "mediafed"
- },
- "feefo": {
- "name": "Feefo",
- "categoryId": 2,
- "url": "http://www.feefo.com/web/en/us/",
- "companyId": "feefo"
- },
- "fidelity_media": {
- "name": "Fidelity Media",
- "categoryId": 4,
- "url": "http://fidelity-media.com/",
- "companyId": "fidelity_media"
- },
- "fiksu": {
- "name": "Fiksu",
- "categoryId": 4,
- "url": "https://fiksu.com/",
- "companyId": "noosphere"
- },
- "filament.io": {
- "name": "Filament.io",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "fileserve": {
- "name": "FileServe",
- "categoryId": 10,
- "url": "http://fileserve.com/",
- "companyId": "fileserve"
- },
- "financeads": {
- "name": "FinanceADs",
- "categoryId": 4,
- "url": "https://www.financeads.net/",
- "companyId": "financeads_gmbh_&_co._kg"
- },
- "financial_content": {
- "name": "Financial Content",
- "categoryId": 4,
- "url": "http://www.financialcontent.com",
- "companyId": "financial_content"
- },
- "findizer.fr": {
- "name": "Findizer",
- "categoryId": 8,
- "url": "http://www.findizer.fr/",
- "companyId": null
- },
- "findologic.com": {
- "name": "Findologic",
- "categoryId": 2,
- "url": "https://www.findologic.com/",
- "companyId": "findologic"
- },
- "firebaseio.com": {
- "name": "Firebase",
- "categoryId": 8,
- "url": "https://firebase.google.com/",
- "companyId": "google"
- },
- "first_impression": {
- "name": "First Impression",
- "categoryId": 4,
- "url": "http://www.firstimpression.io",
- "companyId": "first_impression"
- },
- "fit_analytics": {
- "name": "Fit Analytics",
- "categoryId": 6,
- "url": "http://www.fitanalytics.com/",
- "companyId": "fit_analytics"
- },
- "fivetran": {
- "name": "Fivetran",
- "categoryId": 6,
- "url": "https://fivetran.com/",
- "companyId": "fivetran"
- },
- "flag_ads": {
- "name": "Flag Ads",
- "categoryId": 4,
- "url": "http://www.flagads.net/",
- "companyId": "flag_ads"
- },
- "flag_counter": {
- "name": "Flag Counter",
- "categoryId": 4,
- "url": "http://flagcounter.com/",
- "companyId": "flag_counter"
- },
- "flashtalking": {
- "name": "Flashtalking",
- "categoryId": 4,
- "url": "http://www.flashtalking.com/",
- "companyId": "flashtalking"
- },
- "flattr_button": {
- "name": "Flattr Button",
- "categoryId": 7,
- "url": "http://flattr.com/",
- "companyId": "flattr"
- },
- "flexoffers": {
- "name": "FlexOffers",
- "categoryId": 4,
- "url": "http://www.flexoffers.com/",
- "companyId": "flexoffers.com"
- },
- "flickr_badge": {
- "name": "Flickr Badge",
- "categoryId": 7,
- "url": "http://www.flickr.com/",
- "companyId": "smugmug"
- },
- "flipboard": {
- "name": "Flipboard",
- "categoryId": 6,
- "url": "http://www.flipboard.com/",
- "companyId": "flipboard"
- },
- "flite": {
- "name": "Flite",
- "categoryId": 4,
- "url": "http://www.flite.com/",
- "companyId": "flite"
- },
- "flixcdn.com": {
- "name": "flixcdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "flixmedia": {
- "name": "Flixmedia",
- "categoryId": 8,
- "url": "https://flixmedia.eu",
- "companyId": "flixmedia"
- },
- "flocktory.com": {
- "name": "Flocktory",
- "categoryId": 6,
- "url": "https://www.flocktory.com/",
- "companyId": "flocktory"
- },
- "flowplayer": {
- "name": "Flowplayer",
- "categoryId": 4,
- "url": "https://flowplayer.org/",
- "companyId": "flowplayer"
- },
- "fluct": {
- "name": "Fluct",
- "categoryId": 4,
- "url": "https://corp.fluct.jp/",
- "companyId": "fluct"
- },
- "fluent": {
- "name": "Fluent",
- "categoryId": 4,
- "url": "http://www.fluentco.com/",
- "companyId": "fluent"
- },
- "fluid": {
- "name": "Fluid",
- "categoryId": 4,
- "url": "http://www.8thbridge.com/",
- "companyId": "fluid"
- },
- "fluidads": {
- "name": "FluidAds",
- "categoryId": 4,
- "url": "http://www.fluidads.co/",
- "companyId": "fluidads"
- },
- "fluidsurveys": {
- "name": "FluidSurveys",
- "categoryId": 2,
- "url": "http://fluidsurveys.com/",
- "companyId": "fluidware"
- },
- "flurry": {
- "name": "Flurry",
- "categoryId": 6,
- "url": "http://www.flurry.com/",
- "companyId": "verizon"
- },
- "flxone": {
- "name": "FLXONE",
- "categoryId": 4,
- "url": "http://www.flxone.com/",
- "companyId": "flxone"
- },
- "flyertown": {
- "name": "Flyertown",
- "categoryId": 6,
- "url": "http://www.flyertown.ca/",
- "companyId": "flyertown"
- },
- "fmadserving": {
- "name": "FMAdserving",
- "categoryId": 4,
- "url": "http://www.fmadserving.dk/",
- "companyId": "fm_adserving"
- },
- "fonbet": {
- "name": "Fonbet",
- "categoryId": 6,
- "url": "https://www.fonbet.ru",
- "companyId": "fonbet"
- },
- "fonecta": {
- "name": "Fonecta",
- "categoryId": 2,
- "url": "http://www.fonecta.com/",
- "companyId": "fonecta"
- },
- "fontawesome_com": {
- "name": "fontawesome.com",
- "categoryId": 9,
- "url": "http://fontawesome.com/",
- "companyId": null
- },
- "foodie_blogroll": {
- "name": "Foodie Blogroll",
- "categoryId": 7,
- "url": "http://www.foodieblogroll.com",
- "companyId": "foodie_blogroll"
- },
- "footprint": {
- "name": "Footprint",
- "categoryId": 4,
- "url": "http://www.footprintlive.com/",
- "companyId": "opentracker"
- },
- "footprintdns.com": {
- "name": "Footprint DNS",
- "categoryId": 11,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "forcetrac": {
- "name": "ForceTrac",
- "categoryId": 2,
- "url": "http://www.forcetrac.com/",
- "companyId": "force_marketing"
- },
- "forensiq": {
- "name": "Forensiq",
- "categoryId": 4,
- "url": "http://www.cpadetective.com/",
- "companyId": "impact"
- },
- "foresee": {
- "name": "ForeSee",
- "categoryId": 5,
- "url": "https://www.foresee.com/",
- "companyId": "foresee_results"
- },
- "formisimo": {
- "name": "Formisimo",
- "categoryId": 4,
- "url": "https://www.formisimo.com/",
- "companyId": "formisimo"
- },
- "forter": {
- "name": "Forter",
- "categoryId": 4,
- "url": "https://www.forter.com/",
- "companyId": "forter"
- },
- "fortlachanhecksof.info": {
- "name": "fortlachanhecksof.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "foursquare_widget": {
- "name": "Foursquare Widget",
- "categoryId": 4,
- "url": "https://foursquare.com/",
- "companyId": "foursquare"
- },
- "fout.jp": {
- "name": "FreakOut",
- "categoryId": 4,
- "url": "https://www.fout.co.jp/",
- "companyId": "freakout"
- },
- "fox_audience_network": {
- "name": "Fox Audience Network",
- "categoryId": 4,
- "url": "https://publishers.foxaudiencenetwork.com/",
- "companyId": "fox_audience_network"
- },
- "foxnews_static": {
- "name": "Fox News CDN",
- "categoryId": 9,
- "url": "http://www.foxnews.com/",
- "companyId": "fox_news"
- },
- "foxpush": {
- "name": "FoxPush",
- "categoryId": 4,
- "url": "https://www.foxpush.com/",
- "companyId": "foxpush"
- },
- "foxydeal_com": {
- "name": "foxydeal.com",
- "categoryId": 12,
- "url": "https://www.foxydeal.de",
- "companyId": null
- },
- "fraudlogix": {
- "name": "FraudLogix",
- "categoryId": 4,
- "url": "https://www.fraudlogix.com/",
- "companyId": null
- },
- "free_counter": {
- "name": "Free Counter",
- "categoryId": 6,
- "url": "http://www.statcounterfree.com/",
- "companyId": "free_counter"
- },
- "free_online_users": {
- "name": "Free Online Users",
- "categoryId": 6,
- "url": "http://www.freeonlineusers.com",
- "companyId": "free_online_users"
- },
- "free_pagerank": {
- "name": "Free PageRank",
- "categoryId": 6,
- "url": "http://www.free-pagerank.com/",
- "companyId": "free_pagerank"
- },
- "freedom_mortgage": {
- "name": "Freedom Mortgage",
- "categoryId": 6,
- "url": "https://www.freedommortgage.com/",
- "companyId": "freedom_mortgage"
- },
- "freegeoip_net": {
- "name": "freegeoip.net",
- "categoryId": 6,
- "url": "http://freegeoip.net/",
- "companyId": null
- },
- "freenet_de": {
- "name": "freenet.de",
- "categoryId": 4,
- "url": "http://freenet.de/",
- "companyId": "debitel"
- },
- "freewheel": {
- "name": "FreeWheel",
- "categoryId": 4,
- "url": "http://www.freewheel.tv/",
- "companyId": "comcast"
- },
- "fresh8": {
- "name": "Fresh8",
- "categoryId": 6,
- "url": "http://fresh8gaming.com/",
- "companyId": "fresh_8_gaming"
- },
- "freshdesk": {
- "name": "Freshdesk",
- "categoryId": 2,
- "url": "http://www.freshdesk.com",
- "companyId": "freshdesk"
- },
- "freshplum": {
- "name": "Freshplum",
- "categoryId": 4,
- "url": "https://freshplum.com/",
- "companyId": "freshplum"
- },
- "friendbuy": {
- "name": "FriendBuy",
- "categoryId": 6,
- "url": "https://www.friendbuy.com",
- "companyId": "friendbuy"
- },
- "friendfeed": {
- "name": "FriendFeed",
- "categoryId": 7,
- "url": "http://friendfeed.com/",
- "companyId": "facebook"
- },
- "friendfinder_network": {
- "name": "FriendFinder Network",
- "categoryId": 3,
- "url": "http://www.ffn.com/",
- "companyId": "friendfinder_networks"
- },
- "frosmo_optimizer": {
- "name": "Frosmo Optimizer",
- "categoryId": 4,
- "url": "http://frosmo.com/",
- "companyId": "frosmo"
- },
- "fruitflan": {
- "name": "FruitFlan",
- "categoryId": 4,
- "url": "http://flan-tech.com/",
- "companyId": "keytiles"
- },
- "fstrk.net": {
- "name": "24metrics Fraudshield",
- "categoryId": 6,
- "url": "https://24metrics.com/",
- "companyId": "24metrics"
- },
- "fuelx": {
- "name": "FuelX",
- "categoryId": 4,
- "url": "http://fuelx.com/",
- "companyId": "fuelx"
- },
- "fullstory": {
- "name": "FullStory",
- "categoryId": 6,
- "url": "http://fullstory.com",
- "companyId": "fullstory"
- },
- "funnelytics": {
- "name": "Funnelytics",
- "categoryId": 6,
- "url": "https://funnelytics.io/",
- "companyId": "funnelytics"
- },
- "fyber": {
- "name": "Fyber",
- "categoryId": 4,
- "url": "https://www.fyber.com/",
- "companyId": "fyber"
- },
- "ga_audiences": {
- "name": "GA Audiences",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "game_advertising_online": {
- "name": "Game Advertising Online",
- "categoryId": 4,
- "url": "http://www.game-advertising-online.com/",
- "companyId": "game_advertising_online"
- },
- "gamedistribution.com": {
- "name": "Gamedistribution.com",
- "categoryId": 8,
- "url": "http://gamedistribution.com/",
- "companyId": null
- },
- "gamerdna": {
- "name": "gamerDNA",
- "categoryId": 7,
- "url": "http://www.gamerdnamedia.com/",
- "companyId": "gamerdna_media"
- },
- "gannett": {
- "name": "Gannett Media",
- "categoryId": 0,
- "url": "https://www.gannett.com/",
- "companyId": "gannett_digital_media_network"
- },
- "gaug.es": {
- "name": "Gaug.es",
- "categoryId": 6,
- "url": "http://get.gaug.es/",
- "companyId": "euroweb"
- },
- "gazprom-media_digital": {
- "name": "Gazprom-Media Digital",
- "categoryId": 0,
- "url": "http://www.gpm-digital.com/",
- "companyId": "gazprom-media_digital"
- },
- "gb-world": {
- "name": "GB-World",
- "categoryId": 7,
- "url": "http://www.gb-world.net/",
- "companyId": "gb-world"
- },
- "gdeslon": {
- "name": "GdeSlon",
- "categoryId": 4,
- "url": "http://www.gdeslon.ru/",
- "companyId": "gdeslon"
- },
- "gdm_digital": {
- "name": "GDM Digital",
- "categoryId": 4,
- "url": "http://www.gdmdigital.com/",
- "companyId": "ve_interactive"
- },
- "geeen": {
- "name": "Geeen",
- "categoryId": 6,
- "url": "https://www.geeen.co.jp/",
- "companyId": "geeen"
- },
- "gemius": {
- "name": "Gemius",
- "categoryId": 4,
- "url": "http://www.gemius.com",
- "companyId": "gemius_sa"
- },
- "generaltracking_de": {
- "name": "generaltracking.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "genesis": {
- "name": "Genesis",
- "categoryId": 4,
- "url": "http://genesismedia.com/",
- "companyId": "genesis_media"
- },
- "geniee": {
- "name": "GENIEE",
- "categoryId": 4,
- "url": "http://geniee.co.jp/",
- "companyId": null
- },
- "genius": {
- "name": "Genius",
- "categoryId": 6,
- "url": "http://www.genius.com/",
- "companyId": "genius"
- },
- "genoo": {
- "name": "Genoo",
- "categoryId": 4,
- "url": "http://www.genoo.com/",
- "companyId": "genoo"
- },
- "geoads": {
- "name": "GeoAds",
- "categoryId": 4,
- "url": "http://www.geoads.com",
- "companyId": "geoads"
- },
- "geolify": {
- "name": "Geolify",
- "categoryId": 4,
- "url": "http://geolify.com/",
- "companyId": "geolify"
- },
- "geoplugin": {
- "name": "geoPlugin",
- "categoryId": 6,
- "url": "http://www.geoplugin.com/",
- "companyId": "geoplugin"
- },
- "geotrust": {
- "name": "GeoTrust",
- "categoryId": 5,
- "url": "http://www.geotrust.com/",
- "companyId": "symantec"
- },
- "geovisite": {
- "name": "Geovisite",
- "categoryId": 6,
- "url": "http://www.geovisite.com/",
- "companyId": "geovisite"
- },
- "gestionpub": {
- "name": "GestionPub",
- "categoryId": 4,
- "url": "http://www.gestionpub.com/",
- "companyId": "gestionpub"
- },
- "get_response": {
- "name": "Get Response",
- "categoryId": 2,
- "url": "https://www.getresponse.com/?marketing_gv=v2",
- "companyId": "getresponse"
- },
- "get_site_control": {
- "name": "Get Site Control",
- "categoryId": 4,
- "url": "https://getsitecontrol.com/",
- "companyId": "getsitecontrol"
- },
- "getconversion": {
- "name": "GetConversion",
- "categoryId": 2,
- "url": "http://www.getconversion.net/",
- "companyId": "getconversion"
- },
- "getglue": {
- "name": "GetGlue",
- "categoryId": 0,
- "url": "http://getglue.com",
- "companyId": "telfie"
- },
- "getintent": {
- "name": "GetIntent",
- "categoryId": 4,
- "url": "http://www.getintent.com/",
- "companyId": "getintent"
- },
- "getkudos": {
- "name": "GetKudos",
- "categoryId": 1,
- "url": "https://www.getkudos.me/",
- "companyId": "zendesk"
- },
- "getmyad": {
- "name": "GetMyAd",
- "categoryId": 4,
- "url": "http://yottos.com",
- "companyId": "yottos"
- },
- "getsatisfaction": {
- "name": "GetSatisfaction",
- "categoryId": 1,
- "url": "http://getsatisfaction.com/",
- "companyId": "get_satisfaction"
- },
- "gettyimages": {
- "name": "Getty Images",
- "categoryId": 8,
- "url": "https://www.gettyimages.com/",
- "companyId": null
- },
- "gfk": {
- "name": "GfK",
- "categoryId": 4,
- "url": "http://nurago.com/",
- "companyId": "gfk_nurago"
- },
- "gfycat.com": {
- "name": "gfycat",
- "categoryId": 7,
- "url": "https://gfycat.com/",
- "companyId": null
- },
- "giant_realm": {
- "name": "Giant Realm",
- "categoryId": 4,
- "url": "http://corp.giantrealm.com/",
- "companyId": "giant_realm"
- },
- "giantmedia": {
- "name": "GiantMedia",
- "categoryId": 4,
- "url": "http://giantmedia.com/",
- "companyId": "adknowledge"
- },
- "giga": {
- "name": "Giga",
- "categoryId": 4,
- "url": "https://gigaonclick.com",
- "companyId": "giga"
- },
- "gigya": {
- "name": "Gigya",
- "categoryId": 6,
- "url": "https://www.sap.com/index.html",
- "companyId": "sap"
- },
- "gigya_beacon": {
- "name": "Gigya Beacon",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_socialize": {
- "name": "Gigya Socialize",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_toolbar": {
- "name": "Gigya Toolbar",
- "categoryId": 2,
- "url": "http://www.gigya.com/",
- "companyId": "sap"
- },
- "giosg": {
- "name": "Giosg",
- "categoryId": 6,
- "url": "https://www.giosg.com/",
- "companyId": "giosg"
- },
- "giphy.com": {
- "name": "Giphy",
- "categoryId": 7,
- "url": "https://giphy.com/",
- "companyId": null
- },
- "giraff.io": {
- "name": "Giraff.io",
- "categoryId": 4,
- "url": "https://www.giraff.io/",
- "companyId": null
- },
- "github": {
- "name": "GitHub",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "github"
- },
- "github_apps": {
- "name": "GitHub Apps",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "github"
- },
- "github_pages": {
- "name": "Github Pages",
- "categoryId": 10,
- "url": "https://pages.github.com/",
- "companyId": "github"
- },
- "gittigidiyor_affiliate_program": {
- "name": "GittiGidiyor Affiliate Program",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "gittip": {
- "name": "Gittip",
- "categoryId": 2,
- "url": "https://www.gittip.com/",
- "companyId": "gittip"
- },
- "glad_cube": {
- "name": "Glad Cube",
- "categoryId": 6,
- "url": "http://www.glad-cube.com/",
- "companyId": "glad_cube_inc."
- },
- "glganltcs.space": {
- "name": "glganltcs.space",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "global_web_index": {
- "name": "GlobalWebIndex",
- "categoryId": 6,
- "url": "https://www.globalwebindex.com/",
- "companyId": "global_web_index"
- },
- "globalnotifier.com": {
- "name": "globalnotifier.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "globalsign": {
- "name": "GlobalSign",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "globaltakeoff": {
- "name": "GlobalTakeoff",
- "categoryId": 4,
- "url": "http://www.globaltakeoff.net/",
- "companyId": "globaltakeoff"
- },
- "glomex.com": {
- "name": "Glomex",
- "categoryId": 0,
- "url": "https://www.glomex.com/",
- "companyId": "glomex"
- },
- "glotgrx.com": {
- "name": "glotgrx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "gm_delivery": {
- "name": "GM Delivery",
- "categoryId": 4,
- "url": "http://a.gmdelivery.com/",
- "companyId": "gm_delivery"
- },
- "gmo": {
- "name": "GMO",
- "categoryId": 4,
- "url": "https://www.gmo.media/",
- "companyId": "gmo_media"
- },
- "gmx_net": {
- "name": "gmx.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "go.com": {
- "name": "go.com",
- "categoryId": 8,
- "url": "go.com",
- "companyId": "disney"
- },
- "godaddy_affiliate_program": {
- "name": "GoDaddy Affiliate Program",
- "categoryId": 4,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godaddy_site_analytics": {
- "name": "GoDaddy Site Analytics",
- "categoryId": 6,
- "url": "https://www.godaddy.com/gdshop/hosting/stats_",
- "companyId": "godaddy"
- },
- "godaddy_site_seal": {
- "name": "GoDaddy Site Seal",
- "categoryId": 5,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godatafeed": {
- "name": "GoDataFeed",
- "categoryId": 6,
- "url": "http://www.godatafeed.com",
- "companyId": "godatafeed"
- },
- "goingup": {
- "name": "GoingUp",
- "categoryId": 6,
- "url": "http://www.goingup.com/",
- "companyId": "goingup"
- },
- "gomez": {
- "name": "Gomez",
- "categoryId": 6,
- "url": "http://www.gomez.com/",
- "companyId": "dynatrace"
- },
- "goodadvert": {
- "name": "GoodADVERT",
- "categoryId": 4,
- "url": "http://goodadvert.ru/",
- "companyId": "goodadvert"
- },
- "google": {
- "name": "Google",
- "categoryId": 4,
- "url": "https://www.google.com/",
- "companyId": "google"
- },
- "google_ads_measurement": {
- "name": "Google Ads Measurement",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adsense": {
- "name": "Google Adsense",
- "categoryId": 4,
- "url": "https://www.google.com/adsense/",
- "companyId": "google"
- },
- "google_adservices": {
- "name": "Google AdServices",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adwords_conversion": {
- "name": "Google AdWords Conversion",
- "categoryId": 4,
- "url": "https://adwords.google.com/",
- "companyId": "google"
- },
- "google_adwords_user_lists": {
- "name": "Google Adwords User Lists",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_analytics": {
- "name": "Google Analytics",
- "categoryId": 6,
- "url": "http://www.google.com/analytics/",
- "companyId": "google"
- },
- "google_appspot": {
- "name": "Google Appspot",
- "categoryId": 10,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_beacons": {
- "name": "Google Beacons",
- "categoryId": 6,
- "url": "https://google.xyz",
- "companyId": "google"
- },
- "google_custom_search": {
- "name": "Google Custom Search Ads",
- "categoryId": 4,
- "url": "https://developers.google.com/custom-search-ads/",
- "companyId": "google"
- },
- "google_custom_search_engine": {
- "name": "Google Programmable Search Engine",
- "categoryId": 5,
- "url": "https://programmablesearchengine.google.com/about/",
- "companyId": "google"
- },
- "google_email": {
- "name": "Google Email",
- "categoryId": 13,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_fonts": {
- "name": "Google Fonts",
- "categoryId": 9,
- "url": "https://fonts.google.com/",
- "companyId": "google"
- },
- "google_ima": {
- "name": "Google IMA",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_photos": {
- "name": "Google Photos",
- "categoryId": 9,
- "url": "https://photos.google.com/",
- "companyId": "google"
- },
- "google_pingback": {
- "name": "Google Pingback",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_plus": {
- "name": "Google+ Platform",
- "categoryId": 7,
- "url": "http://www.google.com/+1/button/",
- "companyId": "google"
- },
- "google_publisher_tags": {
- "name": "Google Publisher Tags",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_remarketing": {
- "name": "Google Dynamic Remarketing",
- "categoryId": 4,
- "url": "http://adwords.google.com/",
- "companyId": "google"
- },
- "google_safeframe": {
- "name": "Google Safeframe",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_servers": {
- "name": "Google Servers",
- "categoryId": 8,
- "url": "https://support.google.com/faqs/answer/174717?hl=en",
- "companyId": "google"
- },
- "google_shopping_reviews": {
- "name": "Google Shopping Reviews",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_syndication": {
- "name": "Google Syndication",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_tag_manager": {
- "name": "Google Tag Manager",
- "categoryId": 5,
- "url": "https://marketingplatform.google.com/about/tag-manager/",
- "companyId": "google"
- },
- "google_translate": {
- "name": "Google Translate",
- "categoryId": 2,
- "url": "https://translate.google.com/manager",
- "companyId": "google"
- },
- "google_travel_adds": {
- "name": "Google Travel Adds",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_trusted_stores": {
- "name": "Google Trusted Stores",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_users": {
- "name": "Google User Content",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_website_optimizer": {
- "name": "Google Website Optimizer",
- "categoryId": 6,
- "url": "https://www.google.com/analytics/siteopt/prev",
- "companyId": "google"
- },
- "google_widgets": {
- "name": "Google Widgets",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "googleapis.com": {
- "name": "Google APIs",
- "categoryId": 9,
- "url": "https://www.googleapis.com/",
- "companyId": "google"
- },
- "goooal": {
- "name": "Goooal",
- "categoryId": 6,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "gorilla_nation": {
- "name": "Gorilla Nation",
- "categoryId": 4,
- "url": "http://www.gorillanationmedia.com",
- "companyId": "gorilla_nation_media"
- },
- "gosquared": {
- "name": "GoSquared",
- "categoryId": 6,
- "url": "http://www.gosquared.com/livestats/",
- "companyId": "gosquared"
- },
- "gostats": {
- "name": "GoStats",
- "categoryId": 6,
- "url": "http://gostats.com/",
- "companyId": "gostats"
- },
- "govmetric": {
- "name": "GovMetric",
- "categoryId": 6,
- "url": "http://www.govmetric.com/",
- "companyId": "govmetric"
- },
- "grabo_affiliate": {
- "name": "Grabo Affiliate",
- "categoryId": 4,
- "url": "http://grabo.bg/",
- "companyId": "grabo_media"
- },
- "grandslammedia": {
- "name": "GrandSlamMedia",
- "categoryId": 4,
- "url": "http://www.grandslammedia.com/",
- "companyId": "grand_slam_media"
- },
- "granify": {
- "name": "Granify",
- "categoryId": 6,
- "url": "http://granify.com/",
- "companyId": "granify"
- },
- "grapeshot": {
- "name": "Grapeshot",
- "categoryId": 4,
- "url": "https://www.grapeshot.com/",
- "companyId": "oracle"
- },
- "graph_comment": {
- "name": "Graph Comment",
- "categoryId": 5,
- "url": "https://graphcomment.com/en/",
- "companyId": "graph_comment"
- },
- "gravatar": {
- "name": "Gravatar",
- "categoryId": 7,
- "url": "http://en.gravatar.com/",
- "companyId": "automattic"
- },
- "gravitec": {
- "name": "Gravitec",
- "categoryId": 6,
- "url": "https://gravitec.net/",
- "companyId": "gravitec"
- },
- "gravity_insights": {
- "name": "Gravity Insights",
- "categoryId": 6,
- "url": "http://www.gravity.com/",
- "companyId": "verizon"
- },
- "greatviews.de": {
- "name": "GreatViews",
- "categoryId": 4,
- "url": "http://greatviews.de/",
- "companyId": "parship"
- },
- "green_and_red": {
- "name": "Green and Red",
- "categoryId": 4,
- "url": "http://www.green-red.com/",
- "companyId": "green_&_red_technologies"
- },
- "green_certified_site": {
- "name": "Green Certified Site",
- "categoryId": 2,
- "url": "http://www.advenity.com/",
- "companyId": "advenity"
- },
- "green_story": {
- "name": "Green Story",
- "categoryId": 6,
- "url": "https://greenstory.ca/",
- "companyId": "green_story"
- },
- "greentube.com": {
- "name": "Greentube Internet Entertainment Solutions",
- "categoryId": 7,
- "url": "https://www.greentube.com/",
- "companyId": null
- },
- "greystripe": {
- "name": "Greystripe",
- "categoryId": 4,
- "url": "http://www.greystripe.com/",
- "companyId": "conversant"
- },
- "groove": {
- "name": "Groove",
- "categoryId": 2,
- "url": "http://www.groovehq.com/",
- "companyId": "groove_networks"
- },
- "groovinads": {
- "name": "GroovinAds",
- "categoryId": 4,
- "url": "http://www.groovinads.com/en",
- "companyId": "groovinads"
- },
- "groundtruth": {
- "name": "GroundTruth",
- "categoryId": 4,
- "url": "http://www.groundtruth.com/",
- "companyId": "groundtruth"
- },
- "groupm_server": {
- "name": "GroupM Server",
- "categoryId": 4,
- "url": "http://www.groupm.com/",
- "companyId": "wpp"
- },
- "gsi_media": {
- "name": "GSI Media",
- "categoryId": 4,
- "url": "http://gsimedia.net",
- "companyId": "gsi_media_network"
- },
- "gstatic": {
- "name": "Google Static",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "gtop": {
- "name": "GTop",
- "categoryId": 6,
- "url": "http://www.gtopstats.com",
- "companyId": "gtopstats"
- },
- "gugaboo": {
- "name": "Gugaboo",
- "categoryId": 4,
- "url": "https://www.gubagoo.com/",
- "companyId": "gubagoo"
- },
- "guj.de": {
- "name": "Gruner + Jahr",
- "categoryId": 4,
- "url": "https://www.guj.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gujems": {
- "name": "G+J e|MS",
- "categoryId": 4,
- "url": "http://www.gujmedia.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gumgum": {
- "name": "gumgum",
- "categoryId": 4,
- "url": "http://gumgum.com/",
- "companyId": "gumgum"
- },
- "gumroad": {
- "name": "Gumroad",
- "categoryId": 7,
- "url": "https://gumroad.com/",
- "companyId": "gumroad"
- },
- "gunggo": {
- "name": "Gunggo",
- "categoryId": 4,
- "url": "http://www.gunggo.com/",
- "companyId": "gunggo"
- },
- "h12_ads": {
- "name": "H12 Ads",
- "categoryId": 4,
- "url": "http://www.h12-media.com/",
- "companyId": "h12_media_ads"
- },
- "hacker_news_button": {
- "name": "Hacker News Button",
- "categoryId": 7,
- "url": "http://news.ycombinator.com/",
- "companyId": "hacker_news"
- },
- "haendlerbund.de": {
- "name": "Händlerbund",
- "categoryId": 2,
- "url": "https://www.haendlerbund.de/en",
- "companyId": null
- },
- "halogen_network": {
- "name": "Halogen Network",
- "categoryId": 7,
- "url": "http://www.halogennetwork.com/",
- "companyId": "social_chorus"
- },
- "happy_fox_chat": {
- "name": "Happy Fox Chat",
- "categoryId": 2,
- "url": "https://happyfoxchat.com/",
- "companyId": "happy_fox_chat"
- },
- "harren_media": {
- "name": "Harren Media",
- "categoryId": 4,
- "url": "http://www.harrenmedia.com/index.html",
- "companyId": "harren_media"
- },
- "hatchbuck": {
- "name": "Hatchbuck",
- "categoryId": 6,
- "url": "http://www.hatchbuck.com/",
- "companyId": "hatchbuck"
- },
- "head_hunter": {
- "name": "Head Hunter",
- "categoryId": 6,
- "url": "https://hh.ru/",
- "companyId": "head_hunter"
- },
- "healte.de": {
- "name": "healte.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "heap": {
- "name": "Heap",
- "categoryId": 6,
- "url": "https://heapanalytics.com/",
- "companyId": "heap"
- },
- "heatmap": {
- "name": "Heatmap",
- "categoryId": 6,
- "url": "https://heatmap.me/",
- "companyId": "heatmap"
- },
- "heimspiel": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "http://www.heimspiel.de",
- "companyId": null
- },
- "hello_bar": {
- "name": "Hello Bar",
- "categoryId": 7,
- "url": "https://www.hellobar.com/",
- "companyId": "crazy_egg"
- },
- "hellosociety": {
- "name": "HelloSociety",
- "categoryId": 6,
- "url": "http://hellosociety.com",
- "companyId": "hellosociety"
- },
- "here": {
- "name": "HERE",
- "categoryId": 8,
- "url": "https://www.here.com/",
- "companyId": null
- },
- "heroku": {
- "name": "Heroku",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "heureka-widget": {
- "name": "Heureka-Widget",
- "categoryId": 4,
- "url": "https://www.heurekashopping.cz/",
- "companyId": "heureka"
- },
- "heybubble": {
- "name": "HeyBubble",
- "categoryId": 2,
- "url": "https://www.heybubble.com/",
- "companyId": "heybubble"
- },
- "heyos": {
- "name": "Heyos",
- "categoryId": 4,
- "url": "http://www.heyos.com/",
- "companyId": "heyos"
- },
- "hi-media_performance": {
- "name": "Hi-Media Performance",
- "categoryId": 4,
- "url": "http://www.hi-mediaperformance.co.uk/",
- "companyId": "hi-media_performance"
- },
- "hiconversion": {
- "name": "HiConversion",
- "categoryId": 4,
- "url": "http://www.hiconversion.com",
- "companyId": "hiconversion"
- },
- "highwebmedia.com": {
- "name": "highwebmedia.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "highwinds": {
- "name": "Highwinds",
- "categoryId": 6,
- "url": "https://www.highwinds.com/",
- "companyId": "highwinds"
- },
- "hiiir": {
- "name": "Hiiir",
- "categoryId": 4,
- "url": "http://adpower.hiiir.com/",
- "companyId": "hiiir"
- },
- "hiro": {
- "name": "HIRO",
- "categoryId": 4,
- "url": "http://www.hiro-media.com/",
- "companyId": "hiro_media"
- },
- "histats": {
- "name": "Histats",
- "categoryId": 4,
- "url": "http://www.histats.com/",
- "companyId": "histats"
- },
- "hit-parade": {
- "name": "Hit-Parade",
- "categoryId": 4,
- "url": "http://www.hit-parade.com/",
- "companyId": "hit-parade"
- },
- "hit.ua": {
- "name": "HIT.UA",
- "categoryId": 4,
- "url": "http://hit.ua/",
- "companyId": "hit.ua"
- },
- "hitslink": {
- "name": "HitsLink",
- "categoryId": 4,
- "url": "http://www.hitslink.com/",
- "companyId": "net_applications"
- },
- "hitsniffer": {
- "name": "HitSniffer",
- "categoryId": 4,
- "url": "http://hitsniffer.com/",
- "companyId": "hit_sniffer"
- },
- "hittail": {
- "name": "HitTail",
- "categoryId": 4,
- "url": "http://www.hittail.com/",
- "companyId": "hittail"
- },
- "hivedx.com": {
- "name": "hiveDX",
- "categoryId": 4,
- "url": "https://www.hivedx.com/",
- "companyId": null
- },
- "hiveworks": {
- "name": "Hive Networks",
- "categoryId": 4,
- "url": "https://hiveworkscomics.com/",
- "companyId": "hive_works"
- },
- "hoholikik.club": {
- "name": "hoholikik.club",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "hola_player": {
- "name": "Hola Player",
- "categoryId": 0,
- "url": "https://holacdn.com/",
- "companyId": "hola_cdn"
- },
- "homeaway": {
- "name": "HomeAway",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "honeybadger": {
- "name": "Honeybadger",
- "categoryId": 6,
- "url": "https://www.honeybadger.io/",
- "companyId": "honeybadger"
- },
- "hooklogic": {
- "name": "HookLogic",
- "categoryId": 4,
- "url": "http://hooklogic.com/",
- "companyId": "criteo"
- },
- "hop-cube": {
- "name": "Hop-Cube",
- "categoryId": 4,
- "url": "http://www.hop-cube.com/",
- "companyId": "hop-cube"
- },
- "hotdogsandads.com": {
- "name": "hotdogsandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "hotjar": {
- "name": "Hotjar",
- "categoryId": 6,
- "url": "http://www.hotjar.com/",
- "companyId": "hotjar"
- },
- "hotkeys": {
- "name": "HotKeys",
- "categoryId": 4,
- "url": "http://www.demandmedia.com/",
- "companyId": "leaf_group"
- },
- "hotlog.ru": {
- "name": "HotLog",
- "categoryId": 4,
- "url": "https://hotlog.ru/",
- "companyId": "hotlog"
- },
- "hotwords": {
- "name": "HOTWords",
- "categoryId": 4,
- "url": "http://hotwords.com/",
- "companyId": "hotwords"
- },
- "howtank.com": {
- "name": "howtank",
- "categoryId": 7,
- "url": "https://www.howtank.com/",
- "companyId": null
- },
- "hqentertainmentnetwork.com": {
- "name": "HQ Entertainment Network",
- "categoryId": 4,
- "url": "https://hqentertainmentnetwork.com/",
- "companyId": null
- },
- "hsoub": {
- "name": "Hsoub",
- "categoryId": 4,
- "url": "http://www.hsoub.com/",
- "companyId": "hsoub"
- },
- "hstrck.com": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "https://www.heimspiel.de/",
- "companyId": null
- },
- "httpool": {
- "name": "HTTPool",
- "categoryId": 4,
- "url": "http://www.httpool.com/",
- "companyId": "httpool"
- },
- "hubrus": {
- "name": "HUBRUS",
- "categoryId": 4,
- "url": "http://www.hubrus.com/",
- "companyId": "hubrus"
- },
- "hubspot": {
- "name": "HubSpot",
- "categoryId": 6,
- "url": "http://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "hubspot_forms": {
- "name": "HubSpot Forms",
- "categoryId": 2,
- "url": "http://www.hubspot.com",
- "companyId": "hubspot"
- },
- "hubvisor.io": {
- "name": "Hubvisor",
- "categoryId": 4,
- "url": "https://hubvisor.io/",
- "companyId": null
- },
- "hucksterbot": {
- "name": "HucksterBot",
- "categoryId": 4,
- "url": "http://hucksterbot.ru/",
- "companyId": "hucksterbot"
- },
- "hupso": {
- "name": "Hupso",
- "categoryId": 7,
- "url": "http://www.hupso.com/",
- "companyId": "hupso"
- },
- "hurra_tracker": {
- "name": "Hurra Tracker",
- "categoryId": 4,
- "url": "http://www.hurra.com/en/",
- "companyId": "hurra_communications"
- },
- "hybrid.ai": {
- "name": "Hybrid.ai",
- "categoryId": 4,
- "url": "https://hybrid.ai/",
- "companyId": "hybrid_adtech"
- },
- "hype_exchange": {
- "name": "Hype Exchange",
- "categoryId": 4,
- "url": "http://www.hypeexchange.com/",
- "companyId": "hype_exchange"
- },
- "hypercomments": {
- "name": "HyperComments",
- "categoryId": 1,
- "url": "http://www.hypercomments.com/",
- "companyId": "hypercomments"
- },
- "hyves_widgets": {
- "name": "Hyves Widgets",
- "categoryId": 4,
- "url": "http://www.hyves.nl/",
- "companyId": "hyves"
- },
- "hyvyd": {
- "name": "Hyvyd GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "i-behavior": {
- "name": "i-Behavior",
- "categoryId": 4,
- "url": "http://www.i-behavior.com/",
- "companyId": "kbm_group"
- },
- "i-mobile": {
- "name": "i-mobile",
- "categoryId": 4,
- "url": "https://www2.i-mobile.co.jp/en/index.aspx",
- "companyId": "i-mobile"
- },
- "i.ua": {
- "name": "i.ua",
- "categoryId": 4,
- "url": "http://www.i.ua/",
- "companyId": "i.ua"
- },
- "i10c.net": {
- "name": "i10c.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "i2i.jp": {
- "name": "i2i.jp",
- "categoryId": 6,
- "url": "http://www.i2i.jp/",
- "companyId": "i2i.jp"
- },
- "iab_consent": {
- "name": "IAB Consent",
- "categoryId": 5,
- "url": "https://iabtechlab.com/standards/gdpr-transparency-and-consent-framework/",
- "companyId": "iab"
- },
- "iadvize": {
- "name": "iAdvize",
- "categoryId": 2,
- "url": "http://www.iadvize.com/",
- "companyId": "iadvize"
- },
- "ibm_customer_experience": {
- "name": "IBM Digital Analytics",
- "categoryId": 6,
- "url": "http://www.coremetrics.com/",
- "companyId": "ibm"
- },
- "icerocket_tracker": {
- "name": "IceRocket Tracker",
- "categoryId": 7,
- "url": "http://tracker.icerocket.com/",
- "companyId": "meltwater_icerocket"
- },
- "icf_technology": {
- "name": "ICF Technology",
- "categoryId": 2,
- "url": "http://www.icftechnology.com/",
- "companyId": null
- },
- "iclick": {
- "name": "iClick",
- "categoryId": 4,
- "url": "http://optimix.asia/",
- "companyId": "iclick_interactive"
- },
- "icrossing": {
- "name": "iCrossing",
- "categoryId": 4,
- "url": "http://www.icrossing.com/",
- "companyId": "hearst"
- },
- "icstats": {
- "name": "ICStats",
- "categoryId": 6,
- "url": "http://www.icstats.nl/",
- "companyId": "icstats"
- },
- "icuazeczpeoohx.com": {
- "name": "icuazeczpeoohx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "id-news.net": {
- "name": "Ippen Digital",
- "categoryId": 4,
- "url": "https://www.ippen-digital.de/",
- "companyId": null
- },
- "id_services": {
- "name": "ID Services",
- "categoryId": 6,
- "url": "https://id.services/",
- "companyId": "id_services"
- },
- "ideal_media": {
- "name": "Ideal Media",
- "categoryId": 4,
- "url": "http://idealmedia.com/",
- "companyId": "ideal_media"
- },
- "idealo_com": {
- "name": "idealo.com",
- "categoryId": 4,
- "url": "http://idealo.com/",
- "companyId": null
- },
- "ideoclick": {
- "name": "IdeoClick",
- "categoryId": 4,
- "url": "http://ideoclick.com",
- "companyId": "ideoclick"
- },
- "idio": {
- "name": "Idio",
- "categoryId": 4,
- "url": "https://www.idio.ai/",
- "companyId": "idio"
- },
- "ie8eamus.com": {
- "name": "ie8eamus.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ientry": {
- "name": "iEntry",
- "categoryId": 4,
- "url": "http://www.ientry.com/",
- "companyId": "ientry"
- },
- "iflychat": {
- "name": "iFlyChat",
- "categoryId": 2,
- "url": "https://iflychat.com/",
- "companyId": "iflychat"
- },
- "ignitionone": {
- "name": "IgnitionOne",
- "categoryId": 6,
- "url": "https://www.ignitionone.com/",
- "companyId": "zeta"
- },
- "igodigital": {
- "name": "iGoDigital",
- "categoryId": 2,
- "url": "http://igodigital.com/",
- "companyId": "salesforce"
- },
- "ihs_markit": {
- "name": "IHS Markit",
- "categoryId": 6,
- "url": "https://ihsmarkit.com/index.html",
- "companyId": "ihs"
- },
- "ihs_markit_online_shopper_insigh": {
- "name": "IHS Markit Online Shopper Insigh",
- "categoryId": 6,
- "url": "http://www.visicogn.com/vcu.htm",
- "companyId": "ihs"
- },
- "ihvmcqojoj.com": {
- "name": "ihvmcqojoj.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "iias.eu": {
- "name": "Insight Image",
- "categoryId": 3,
- "url": "http://insightimage.com/",
- "companyId": null
- },
- "ijento": {
- "name": "iJento",
- "categoryId": 6,
- "url": "http://www.ijento.com/",
- "companyId": "ijento"
- },
- "imad": {
- "name": "imad",
- "categoryId": 4,
- "url": "http://www.imad.co.kr/",
- "companyId": "i'mad_republic"
- },
- "image_advantage": {
- "name": "Image Advantage",
- "categoryId": 4,
- "url": "http://www.worthathousandwords.com/",
- "companyId": "image_advantage"
- },
- "image_space_media": {
- "name": "Image Space Media",
- "categoryId": 4,
- "url": "http://www.imagespacemedia.com/",
- "companyId": "image_space_media"
- },
- "imgix.net": {
- "name": "ImgIX",
- "categoryId": 9,
- "url": "https://www.imgix.com/",
- "companyId": null
- },
- "imgur": {
- "name": "Imgur",
- "categoryId": 8,
- "url": "https://imgur.com/",
- "companyId": "imgur"
- },
- "imho_vi": {
- "name": "imho vi",
- "categoryId": 4,
- "url": "http://www.imho.ru",
- "companyId": "imho"
- },
- "immanalytics": {
- "name": "Immanalytics",
- "categoryId": 2,
- "url": "https://www.roku.com/",
- "companyId": "roku"
- },
- "immobilienscout24_de": {
- "name": "immobilienscout24.de",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "imonomy": {
- "name": "imonomy",
- "categoryId": 6,
- "url": "http://imonomy.com/",
- "companyId": "imonomy"
- },
- "impact_radius": {
- "name": "Impact Radius",
- "categoryId": 5,
- "url": "http://www.impactradius.com/",
- "companyId": "impact_radius"
- },
- "impresiones_web": {
- "name": "Impresiones Web",
- "categoryId": 4,
- "url": "http://www.iw-advertising.com/",
- "companyId": "impresiones_web"
- },
- "improve_digital": {
- "name": "Improve Digital",
- "categoryId": 4,
- "url": "http://www.improvedigital.com/",
- "companyId": "improve_digital"
- },
- "improvely": {
- "name": "Improvely",
- "categoryId": 6,
- "url": "https://www.improvely.com/",
- "companyId": "awio_web_services"
- },
- "inbenta": {
- "name": "Inbenta",
- "categoryId": 6,
- "url": "https://www.inbenta.com/en/",
- "companyId": "inbenta"
- },
- "inboxsdk.com": {
- "name": "Inbox SDK",
- "categoryId": 8,
- "url": "https://www.inboxsdk.com/",
- "companyId": null
- },
- "indeed": {
- "name": "Indeed",
- "categoryId": 4,
- "url": "http://www.indeed.com/",
- "companyId": "indeed"
- },
- "index_exchange": {
- "name": "Index Exchange",
- "categoryId": 4,
- "url": "http://www.casalemedia.com/",
- "companyId": "index_exchange"
- },
- "indieclick": {
- "name": "IndieClick",
- "categoryId": 4,
- "url": "http://www.indieclick.com/",
- "companyId": "leaf_group"
- },
- "industry_brains": {
- "name": "Industry Brains",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "industrybrains"
- },
- "infectious_media": {
- "name": "Impression Desk",
- "categoryId": 4,
- "url": "https://impressiondesk.com/",
- "companyId": "infectious_media"
- },
- "infinite_analytics": {
- "name": "Infinite Analytics",
- "categoryId": 6,
- "url": "http://infiniteanalytics.com/products/",
- "companyId": "infinite_analytics"
- },
- "infinity_tracking": {
- "name": "Infinity Tracking",
- "categoryId": 6,
- "url": "http://www.infinity-tracking.com",
- "companyId": "infinity_tracking"
- },
- "influads": {
- "name": "InfluAds",
- "categoryId": 4,
- "url": "http://www.influads.com/",
- "companyId": "influads"
- },
- "infolinks": {
- "name": "InfoLinks",
- "categoryId": 4,
- "url": "http://www.infolinks.com/",
- "companyId": "infolinks"
- },
- "infonline": {
- "name": "INFOnline",
- "categoryId": 6,
- "url": "http://www.infonline.de/",
- "companyId": "infonline"
- },
- "informer_technologies": {
- "name": "Informer Technologies",
- "categoryId": 6,
- "url": "http://www.informer.com/",
- "companyId": "informer_technologies"
- },
- "infusionsoft": {
- "name": "Infusionsoft by Keap",
- "categoryId": 4,
- "url": "https://keap.com/",
- "companyId": "infusionsoft"
- },
- "innity": {
- "name": "Innity",
- "categoryId": 4,
- "url": "http://www.innity.com/",
- "companyId": "innity"
- },
- "innogames.de": {
- "name": "InnoGames",
- "categoryId": 8,
- "url": "https://www.innogames.com/",
- "companyId": null
- },
- "innovid": {
- "name": "Innovid",
- "categoryId": 4,
- "url": "https://www.innovid.com/",
- "companyId": "innovid"
- },
- "inside": {
- "name": "inside",
- "categoryId": 7,
- "url": "http://www.inside.tm/",
- "companyId": "powerfront"
- },
- "insider": {
- "name": "Insider",
- "categoryId": 6,
- "url": "http://useinsider.com/",
- "companyId": "insider"
- },
- "insightexpress": {
- "name": "InsightExpress",
- "categoryId": 6,
- "url": "https://www.millwardbrowndigital.com/",
- "companyId": "millward_brown"
- },
- "inskin_media": {
- "name": "InSkin Media",
- "categoryId": 4,
- "url": "http://www.inskinmedia.com/",
- "companyId": "inskin_media"
- },
- "inspectlet": {
- "name": "Inspectlet",
- "categoryId": 6,
- "url": "https://www.inspectlet.com/",
- "companyId": "inspectlet"
- },
- "inspsearchapi.com": {
- "name": "Infospace Search",
- "categoryId": 4,
- "url": "http://infospace.com/",
- "companyId": "system1"
- },
- "instagram_com": {
- "name": "Instagram",
- "categoryId": 8,
- "url": "https://www.facebook.com/",
- "companyId": "facebook"
- },
- "instant_check_mate": {
- "name": "Instant Check Mate",
- "categoryId": 2,
- "url": "https://www.instantcheckmate.com/",
- "companyId": "instant_check_mate"
- },
- "instart_logic": {
- "name": "Instart Logic",
- "categoryId": 4,
- "url": "https://www.instartlogic.com/",
- "companyId": "instart_logic_inc"
- },
- "insticator": {
- "name": "Insticator",
- "categoryId": 4,
- "url": "https://www.insticator.com/landingpage",
- "companyId": "insticator"
- },
- "instinctive": {
- "name": "Instinctive",
- "categoryId": 4,
- "url": "https://instinctive.io/",
- "companyId": "instinctive"
- },
- "intango": {
- "name": "Intango",
- "categoryId": 4,
- "url": "https://intango.com/",
- "companyId": "intango"
- },
- "integral_ad_science": {
- "name": "Integral Ad Science",
- "categoryId": 4,
- "url": "https://integralads.com/",
- "companyId": "integral_ad_science"
- },
- "integral_marketing": {
- "name": "Integral Marketing",
- "categoryId": 4,
- "url": "http://integral-marketing.com/",
- "companyId": "integral_marketing"
- },
- "intelliad": {
- "name": "intelliAd",
- "categoryId": 6,
- "url": "http://www.intelliad.de/",
- "companyId": "intelliad"
- },
- "intelligencefocus": {
- "name": "IntelligenceFocus",
- "categoryId": 6,
- "url": "http://www.intelligencefocus.com",
- "companyId": "intelligencefocus"
- },
- "intelligent_reach": {
- "name": "Intelligent Reach",
- "categoryId": 4,
- "url": "http://www.intelligentreach.com/",
- "companyId": "intelligent_reach"
- },
- "intense_debate": {
- "name": "Intense Debate",
- "categoryId": 2,
- "url": "http://intensedebate.com/",
- "companyId": "automattic"
- },
- "intent_iq": {
- "name": "Intent IQ",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "intent_media": {
- "name": "Intent",
- "categoryId": 4,
- "url": "https://intent.com/",
- "companyId": "intent_media"
- },
- "intercom": {
- "name": "Intercom",
- "categoryId": 2,
- "url": "http://intercom.io/",
- "companyId": "intercom"
- },
- "interedy.info": {
- "name": "interedy.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "intergi": {
- "name": "Intergi",
- "categoryId": 4,
- "url": "http://www.intergi.com/",
- "companyId": "intergi_entertainment"
- },
- "intermarkets.net": {
- "name": "Intermarkets",
- "categoryId": 4,
- "url": "http://intermarkets.net/",
- "companyId": "intermarkets"
- },
- "intermundo_media": {
- "name": "InterMundo Media",
- "categoryId": 4,
- "url": "http://intermundomedia.com/",
- "companyId": "intermundo_media"
- },
- "internet_billboard": {
- "name": "Internet BillBoard",
- "categoryId": 4,
- "url": "http://www.ibillboard.com/en/",
- "companyId": "internet_billboard"
- },
- "internetaudioads": {
- "name": "InternetAudioAds",
- "categoryId": 0,
- "url": "http://www.internetaudioads.com/",
- "companyId": "internetaudioads"
- },
- "internetbrands": {
- "name": "InternetBrands",
- "categoryId": 7,
- "url": "http://www.internetbrands.com/",
- "companyId": "internet_brands"
- },
- "interpolls": {
- "name": "Interpolls",
- "categoryId": 4,
- "url": "http://www.interpolls.com/",
- "companyId": "interpolls"
- },
- "interyield": {
- "name": "Interyield",
- "categoryId": 4,
- "url": "http://www.advertise.com/publisher-solutions/",
- "companyId": "advertise.com"
- },
- "intilery": {
- "name": "Intilery",
- "categoryId": 6,
- "url": "http://www.intilery.com",
- "companyId": "intilery"
- },
- "intimate_merger": {
- "name": "Intimate Merger",
- "categoryId": 6,
- "url": "https://corp.intimatemerger.com/",
- "companyId": "intimate_merger"
- },
- "investingchannel": {
- "name": "Investing Channel",
- "categoryId": 8,
- "url": "http://www.investingchannel.com/",
- "companyId": "investingchannel"
- },
- "inviziads": {
- "name": "InviziAds",
- "categoryId": 4,
- "url": "http://www.inviziads.com",
- "companyId": "inviziads"
- },
- "invoca": {
- "name": "Invoca",
- "categoryId": 4,
- "url": "http://www.invoca.com/",
- "companyId": "invoca"
- },
- "invodo": {
- "name": "Invodo",
- "categoryId": 6,
- "url": "http://www.invodo.com/",
- "companyId": "invodo"
- },
- "ionicframework.com": {
- "name": "Ionic",
- "categoryId": 8,
- "url": "https://ionicframework.com/",
- "companyId": null
- },
- "iotec": {
- "name": "iotec",
- "categoryId": 4,
- "url": "https://www.iotecglobal.com/",
- "companyId": "iotec"
- },
- "iovation": {
- "name": "iovation",
- "categoryId": 5,
- "url": "http://www.iovation.com/",
- "companyId": "iovation"
- },
- "ip-label": {
- "name": "ip-label",
- "categoryId": 6,
- "url": "http://www.ip-label.co.uk/",
- "companyId": "ip-label"
- },
- "ip_targeting": {
- "name": "IP Targeting",
- "categoryId": 6,
- "url": "https://www.iptargeting.com/",
- "companyId": "el_toro"
- },
- "ip_tracker": {
- "name": "IP Tracker",
- "categoryId": 6,
- "url": "http://www.ip-tracker.org/",
- "companyId": "ip_tracker"
- },
- "iperceptions": {
- "name": "iPerceptions",
- "categoryId": 2,
- "url": "http://www.iperceptions.com/",
- "companyId": "iperceptions"
- },
- "ipfingerprint": {
- "name": "IPFingerprint",
- "categoryId": 6,
- "url": "http://www.ipfingerprint.com/",
- "companyId": "ipfingerprint"
- },
- "ipg_mediabrands": {
- "name": "IPG Mediabrands",
- "categoryId": 4,
- "url": "https://www.ipgmediabrands.com/",
- "companyId": "ipg_mediabrands"
- },
- "ipify": {
- "name": "ipify",
- "categoryId": 8,
- "url": "https://www.ipify.org/",
- "companyId": null
- },
- "ipinfo": {
- "name": "Ipinfo",
- "categoryId": 2,
- "url": "https://ipinfo.io/",
- "companyId": "ipinfo.io"
- },
- "iplogger": {
- "name": "IPLogger",
- "categoryId": 6,
- "url": "http://iplogger.ru/",
- "companyId": "iplogger"
- },
- "iprom": {
- "name": "iprom",
- "categoryId": 4,
- "url": "http://www.iprom.si/",
- "companyId": "iprom"
- },
- "ipromote": {
- "name": "iPromote",
- "categoryId": 4,
- "url": "http://www.ipromote.com/",
- "companyId": "ipromote"
- },
- "iprospect": {
- "name": "iProspect",
- "categoryId": 4,
- "url": "http://www.iprospect.com/",
- "companyId": "dentsu_aegis_network"
- },
- "ironsource": {
- "name": "ironSource",
- "categoryId": 4,
- "url": "https://www.ironsrc.com/",
- "companyId": "ironsource"
- },
- "isocket": {
- "name": "isocket",
- "categoryId": 4,
- "url": "http://www.isocket.com/",
- "companyId": "rubicon_project"
- },
- "ispot.tv": {
- "name": "iSpot.tv",
- "categoryId": 4,
- "url": "https://www.ispot.tv/",
- "companyId": null
- },
- "itineraire.info": {
- "name": "itineraire.info",
- "categoryId": 2,
- "url": "https://www.itineraire.info/",
- "companyId": null
- },
- "itunes_link_maker": {
- "name": "iTunes Link Maker",
- "categoryId": 4,
- "url": "https://www.apple.com/",
- "companyId": "apple"
- },
- "ity.im": {
- "name": "ity.im",
- "categoryId": 4,
- "url": "http://ity.im/",
- "companyId": "ity.im"
- },
- "iubenda.com": {
- "name": "iubenda",
- "categoryId": 5,
- "url": "https://www.iubenda.com/",
- "companyId": "iubenda"
- },
- "ivcbrasil.org.br": {
- "name": "IVC Brasil",
- "categoryId": 6,
- "url": "https://ivcbrasil.org.br/#/home",
- "companyId": null
- },
- "ividence": {
- "name": "Ividence",
- "categoryId": 4,
- "url": "https://www.ividence.com/home/",
- "companyId": "sien"
- },
- "iwiw_widgets": {
- "name": "iWiW Widgets",
- "categoryId": 2,
- "url": "http://iwiw.hu",
- "companyId": "iwiw"
- },
- "ixi_digital": {
- "name": "IXI Digital",
- "categoryId": 4,
- "url": "http://www.equifax.com/home/en_us",
- "companyId": "equifax"
- },
- "ixquick.com": {
- "name": "ixquick",
- "categoryId": 8,
- "url": "https://www.ixquick.com/",
- "companyId": "startpage"
- },
- "izooto": {
- "name": "iZooto",
- "categoryId": 6,
- "url": "https://www.izooto.com/",
- "companyId": "izooto"
- },
- "j-list_affiliate_program": {
- "name": "J-List Affiliate Program",
- "categoryId": 4,
- "url": "http://www.jlist.com/page/affiliates.html",
- "companyId": "j-list"
- },
- "jaco": {
- "name": "Jaco",
- "categoryId": 6,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "janrain": {
- "name": "Janrain",
- "categoryId": 6,
- "url": "http://www.janrain.com/",
- "companyId": "akamai"
- },
- "jeeng": {
- "name": "Jeeng",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jeeng_widgets": {
- "name": "Jeeng Widgets",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jet_interactive": {
- "name": "Jet Interactive",
- "categoryId": 6,
- "url": "http://www.jetinteractive.com.au/",
- "companyId": "jet_interactive"
- },
- "jetlore": {
- "name": "Jetlore",
- "categoryId": 6,
- "url": "http://www.jetlore.com/",
- "companyId": "jetlore"
- },
- "jetpack": {
- "name": "Jetpack",
- "categoryId": 6,
- "url": "https://jetpack.com/",
- "companyId": "automattic"
- },
- "jetpack_digital": {
- "name": "Jetpack Digital",
- "categoryId": 6,
- "url": "http://www.jetpack.com/",
- "companyId": "jetpack_digital"
- },
- "jimdo.com": {
- "name": "jimdo.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "jink": {
- "name": "Jink",
- "categoryId": 4,
- "url": "http://www.jink.de/",
- "companyId": "jink"
- },
- "jirafe": {
- "name": "Jirafe",
- "categoryId": 6,
- "url": "http://jirafe.com/",
- "companyId": "jirafe"
- },
- "jivochat": {
- "name": "JivoSite",
- "categoryId": 2,
- "url": "https://www.jivochat.com/",
- "companyId": "jivochat"
- },
- "jivox": {
- "name": "Jivox",
- "categoryId": 4,
- "url": "http://www.jivox.com/",
- "companyId": "jivox"
- },
- "jobs_2_careers": {
- "name": "Jobs 2 Careers",
- "categoryId": 4,
- "url": "http://www.jobs2careers.com/",
- "companyId": "jobs_2_careers"
- },
- "joinhoney": {
- "name": "Honey",
- "categoryId": 8,
- "url": "https://www.joinhoney.com/",
- "companyId": null
- },
- "jornaya": {
- "name": "Jornaya",
- "categoryId": 6,
- "url": "http://leadid.com/",
- "companyId": "jornaya"
- },
- "jquery": {
- "name": "jQuery",
- "categoryId": 9,
- "url": "https://jquery.org/",
- "companyId": "js_foundation"
- },
- "js_communications": {
- "name": "JS Communications",
- "categoryId": 4,
- "url": "http://www.jssearch.net/",
- "companyId": "js_communications"
- },
- "jsdelivr": {
- "name": "jsDelivr",
- "categoryId": 9,
- "url": "https://www.jsdelivr.com/",
- "companyId": null
- },
- "jse_coin": {
- "name": "JSE Coin",
- "categoryId": 4,
- "url": "https://jsecoin.com/",
- "companyId": "jse_coin"
- },
- "jsuol.com.br": {
- "name": "jsuol.com.br",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "juggcash": {
- "name": "JuggCash",
- "categoryId": 3,
- "url": "http://www.juggcash.com",
- "companyId": "juggcash"
- },
- "juiceadv": {
- "name": "JuiceADV",
- "categoryId": 4,
- "url": "http://juiceadv.com/",
- "companyId": "juiceadv"
- },
- "juicyads": {
- "name": "JuicyAds",
- "categoryId": 3,
- "url": "http://www.juicyads.com/",
- "companyId": "juicyads"
- },
- "jumplead": {
- "name": "Jumplead",
- "categoryId": 6,
- "url": "https://jumplead.com/",
- "companyId": "jumplead"
- },
- "jumpstart_tagging_solutions": {
- "name": "Jumpstart Tagging Solutions",
- "categoryId": 6,
- "url": "http://www.hearst.com/",
- "companyId": "hearst"
- },
- "jumptap": {
- "name": "Jumptap",
- "categoryId": 4,
- "url": "http://www.jumptap.com/",
- "companyId": "verizon"
- },
- "jumptime": {
- "name": "JumpTime",
- "categoryId": 6,
- "url": "http://www.jumptime.com/",
- "companyId": "openx"
- },
- "just_answer": {
- "name": "Just Answer",
- "categoryId": 2,
- "url": "https://www.justanswer.com/",
- "companyId": "just_answer"
- },
- "just_premium": {
- "name": "Just Premium",
- "categoryId": 4,
- "url": "http://justpremium.com/",
- "companyId": "just_premium"
- },
- "just_relevant": {
- "name": "Just Relevant",
- "categoryId": 4,
- "url": "http://www.justrelevant.com/",
- "companyId": "just_relevant"
- },
- "jvc.gg": {
- "name": "Jeuxvideo CDN",
- "categoryId": 9,
- "url": "http://www.jeuxvideo.com/",
- "companyId": null
- },
- "jw_player": {
- "name": "JW Player",
- "categoryId": 0,
- "url": "https://www.jwplayer.com/",
- "companyId": "jw_player"
- },
- "jw_player_ad_solutions": {
- "name": "JW Player Ad Solutions",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/adsolution/",
- "companyId": "jw_player"
- },
- "kaeufersiegel.de": {
- "name": "Käufersiegel",
- "categoryId": 2,
- "url": "https://www.kaeufersiegel.de/",
- "companyId": null
- },
- "kairion.de": {
- "name": "kairion",
- "categoryId": 4,
- "url": "https://kairion.de/",
- "companyId": "prosieben_sat1"
- },
- "kaloo.ga": {
- "name": "Kalooga",
- "categoryId": 4,
- "url": "https://www.kalooga.com/",
- "companyId": "kalooga"
- },
- "kalooga_widget": {
- "name": "Kalooga Widget",
- "categoryId": 4,
- "url": "http://kalooga.com/",
- "companyId": "kalooga"
- },
- "kaltura": {
- "name": "Kaltura",
- "categoryId": 0,
- "url": "http://corp.kaltura.com/",
- "companyId": "kaltura"
- },
- "kameleoon": {
- "name": "Kameleoon",
- "categoryId": 6,
- "url": "http://www.kameleoon.com/",
- "companyId": "kameleoon"
- },
- "kampyle": {
- "name": "Medallia",
- "categoryId": 2,
- "url": "http://www.kampyle.com/",
- "companyId": "medallia"
- },
- "kanoodle": {
- "name": "Kanoodle",
- "categoryId": 4,
- "url": "http://www.kanoodle.com/",
- "companyId": "kanoodle"
- },
- "kantar_media": {
- "name": "Kantar Media",
- "categoryId": 4,
- "url": "https://www.kantarmedia.com/",
- "companyId": "wpp"
- },
- "kargo": {
- "name": "Kargo",
- "categoryId": 4,
- "url": "http://www.kargo.com/",
- "companyId": "kargo"
- },
- "kaspersky-labs.com": {
- "name": "Kaspersky Labs",
- "categoryId": 12,
- "url": "https://www.kaspersky.com/",
- "companyId": "AO Kaspersky Lab"
- },
- "kataweb.it": {
- "name": "KataWeb",
- "categoryId": 4,
- "url": "http://www.kataweb.it/",
- "companyId": null
- },
- "katchup": {
- "name": "Katchup",
- "categoryId": 4,
- "url": "http://www.katchup.fr/",
- "companyId": "katchup"
- },
- "kauli": {
- "name": "Kauli",
- "categoryId": 4,
- "url": "http://kau.li/",
- "companyId": "kauli"
- },
- "kavanga": {
- "name": "Kavanga",
- "categoryId": 4,
- "url": "http://kavanga.ru/",
- "companyId": "kavanga"
- },
- "keen_io": {
- "name": "Keen IO",
- "categoryId": 6,
- "url": "https://keen.io",
- "companyId": "keen_io"
- },
- "kelkoo": {
- "name": "Kelkoo",
- "categoryId": 4,
- "url": "http://www.kelkoo.com/",
- "companyId": "kelkoo"
- },
- "kenshoo": {
- "name": "Kenshoo",
- "categoryId": 6,
- "url": "http://www.kenshoo.com/",
- "companyId": "kenshoo"
- },
- "keymetric": {
- "name": "KeyMetric",
- "categoryId": 6,
- "url": "http://keymetric.net/",
- "companyId": "keymetric"
- },
- "keytiles": {
- "name": "Keytiles",
- "categoryId": 6,
- "url": "http://keytiles.com/",
- "companyId": "keytiles"
- },
- "keywee": {
- "name": "Keywee",
- "categoryId": 6,
- "url": "https://keywee.co/",
- "companyId": "keywee"
- },
- "keywordmax": {
- "name": "KeywordMax",
- "categoryId": 4,
- "url": "http://www.keywordmax.com/",
- "companyId": "digital_river"
- },
- "khoros": {
- "name": "Khoros",
- "categoryId": 7,
- "url": "http://www.massrelevance.com/",
- "companyId": "khoros"
- },
- "khzbeucrltin.com": {
- "name": "khzbeucrltin.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "kickfactory": {
- "name": "Kickfactory",
- "categoryId": 4,
- "url": "https://kickfactory.com/",
- "companyId": "kickfactory"
- },
- "kickfire": {
- "name": "Kickfire",
- "categoryId": 4,
- "url": "http://www.visistat.com/",
- "companyId": "kickfire"
- },
- "king.com": {
- "name": "King.com",
- "categoryId": 4,
- "url": "http://www.king.com/",
- "companyId": "king.com"
- },
- "king_com": {
- "name": "King.com",
- "categoryId": 8,
- "url": "https://king.com/",
- "companyId": "activision_blizzard"
- },
- "kinja.com": {
- "name": "Kinja",
- "categoryId": 6,
- "url": "https://kinja.com/",
- "companyId": "gizmodo"
- },
- "kiosked": {
- "name": "Kiosked",
- "categoryId": 4,
- "url": "http://www.kiosked.com/",
- "companyId": "kiosked"
- },
- "kissmetrics.com": {
- "name": "Kissmetrics",
- "categoryId": 6,
- "url": "https://www.kissmetrics.com/",
- "companyId": "kissmetrics"
- },
- "kitara_media": {
- "name": "Kitara Media",
- "categoryId": 4,
- "url": "http://www.kitaramedia.com/",
- "companyId": "kitara_media"
- },
- "kixer": {
- "name": "Kixer",
- "categoryId": 4,
- "url": "http://www.kixer.com",
- "companyId": "kixer"
- },
- "klarna.com": {
- "name": "Klarna",
- "categoryId": 2,
- "url": "https://www.klarna.com/",
- "companyId": null
- },
- "klaviyo": {
- "name": "Klaviyo",
- "categoryId": 6,
- "url": "https://www.klaviyo.com/",
- "companyId": "klaviyo"
- },
- "klikki": {
- "name": "Klikki",
- "categoryId": 4,
- "url": "http://www.klikki.com/",
- "companyId": "klikki"
- },
- "kliksaya": {
- "name": "KlikSaya",
- "categoryId": 4,
- "url": "http://www.kliksaya.com",
- "companyId": "kliksaya"
- },
- "kmeleo": {
- "name": "Kméléo",
- "categoryId": 4,
- "url": "http://www.6peo.com/",
- "companyId": "6peo"
- },
- "knoopstat": {
- "name": "Knoopstat",
- "categoryId": 6,
- "url": "http://www.knoopstat.nl",
- "companyId": "knoopstat"
- },
- "knotch": {
- "name": "Knotch",
- "categoryId": 2,
- "url": "http://knotch.it",
- "companyId": "knotch"
- },
- "komoona": {
- "name": "Komoona",
- "categoryId": 4,
- "url": "http://www.komoona.com/",
- "companyId": "komoona"
- },
- "kontera_contentlink": {
- "name": "Kontera ContentLink",
- "categoryId": 4,
- "url": "http://www.kontera.com/",
- "companyId": "singtel"
- },
- "kontextr": {
- "name": "Kontextr",
- "categoryId": 4,
- "url": "https://www.kontextr.com/",
- "companyId": "kontext"
- },
- "kontextua": {
- "name": "Kontextua",
- "categoryId": 4,
- "url": "http://www.kontextua.com/",
- "companyId": "kontextua"
- },
- "korrelate": {
- "name": "Korrelate",
- "categoryId": 4,
- "url": "http://korrelate.com/",
- "companyId": "korrelate"
- },
- "kortx": {
- "name": "Kortx",
- "categoryId": 6,
- "url": "http://www.kortx.io/",
- "companyId": "kortx"
- },
- "kount": {
- "name": "Kount",
- "categoryId": 6,
- "url": "https://kount.com/",
- "companyId": null
- },
- "krux_digital": {
- "name": "Salesforce DMP",
- "categoryId": 4,
- "url": "https://www.salesforce.com/products/marketing-cloud/data-management/?mc=DMP",
- "companyId": "salesforce"
- },
- "kupona": {
- "name": "Kupona",
- "categoryId": 4,
- "url": "http://www.kupona-media.de/en/retargeting-and-performance-media-width-kupona",
- "companyId": "kupona"
- },
- "kxcdn.com": {
- "name": "Keycdn",
- "categoryId": 9,
- "url": "https://www.keycdn.com/",
- "companyId": null
- },
- "kyto": {
- "name": "Kyto",
- "categoryId": 6,
- "url": "https://www.kyto.com/",
- "companyId": "kyto"
- },
- "ladsp.com": {
- "name": "Logicad",
- "categoryId": 4,
- "url": "https://www.logicad.com/",
- "companyId": "logicad"
- },
- "lanista_concepts": {
- "name": "Lanista Concepts",
- "categoryId": 4,
- "url": "http://lanistaconcepts.com/",
- "companyId": "lanista_concepts"
- },
- "latimes": {
- "name": "Los Angeles Times",
- "categoryId": 8,
- "url": "http://www.latimes.com/",
- "companyId": "latimes"
- },
- "launch_darkly": {
- "name": "Launch Darkly",
- "categoryId": 5,
- "url": "https://launchdarkly.com/index.html",
- "companyId": "launch_darkly"
- },
- "launchbit": {
- "name": "LaunchBit",
- "categoryId": 4,
- "url": "https://www.launchbit.com/",
- "companyId": "launchbit"
- },
- "layer-ad.org": {
- "name": "Layer-ADS.net",
- "categoryId": 4,
- "url": "http://layer-ads.net/",
- "companyId": null
- },
- "lazada": {
- "name": "Lazada",
- "categoryId": 4,
- "url": "https://www.lazada.com/",
- "companyId": "lazada"
- },
- "lcx_digital": {
- "name": "LCX Digital",
- "categoryId": 4,
- "url": "http://www.lcx.com/",
- "companyId": "lcx_digital"
- },
- "le_monde.fr": {
- "name": "Le Monde.fr",
- "categoryId": 8,
- "url": "http://www.lemonde.fr/",
- "companyId": "le_monde.fr"
- },
- "lead_liaison": {
- "name": "Lead Liaison",
- "categoryId": 6,
- "url": "https://www.leadliaison.com",
- "companyId": "lead_liaison"
- },
- "leadback": {
- "name": "Leadback",
- "categoryId": 6,
- "url": "http://leadback.ru/?utm_source=leadback_widget&utm_medium=eas-balt.ru&utm_campaign=self_ad",
- "companyId": "leadback"
- },
- "leaddyno": {
- "name": "LeadDyno",
- "categoryId": 4,
- "url": "http://www.leaddyno.com",
- "companyId": "leaddyno"
- },
- "leadforensics": {
- "name": "LeadForensics",
- "categoryId": 4,
- "url": "http://www.leadforensics.com/",
- "companyId": "lead_forensics"
- },
- "leadgenic": {
- "name": "LeadGENIC",
- "categoryId": 4,
- "url": "https://leadgenic.com/",
- "companyId": "leadgenic"
- },
- "leadhit": {
- "name": "LeadHit",
- "categoryId": 2,
- "url": "http://leadhit.ru/",
- "companyId": "leadhit"
- },
- "leadin": {
- "name": "Leadin",
- "categoryId": 6,
- "url": "https://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "leading_reports": {
- "name": "Leading Reports",
- "categoryId": 4,
- "url": "https://www.leadingreports.de/",
- "companyId": "leading_reports"
- },
- "leadinspector": {
- "name": "LeadInspector",
- "categoryId": 6,
- "url": "https://www.leadinspector.de/",
- "companyId": "leadinspector"
- },
- "leadlander": {
- "name": "LeadLander",
- "categoryId": 6,
- "url": "http://www.leadlander.com/",
- "companyId": "leadlander"
- },
- "leadlife": {
- "name": "LeadLife",
- "categoryId": 2,
- "url": "http://leadlife.com/",
- "companyId": "leadlife"
- },
- "leadpages": {
- "name": "Leadpages",
- "categoryId": 6,
- "url": "https://www.leadpages.net/",
- "companyId": "leadpages"
- },
- "leadplace": {
- "name": "LeadPlace",
- "categoryId": 6,
- "url": "https://temelio.com",
- "companyId": "leadplace"
- },
- "leads_by_web.com": {
- "name": "Leads by Web.com",
- "categoryId": 4,
- "url": "http://www.leadsbyweb.com",
- "companyId": "web.com_group"
- },
- "leadscoreapp": {
- "name": "LeadScoreApp",
- "categoryId": 2,
- "url": "http://leadscoreapp.com",
- "companyId": "leadscoreapp"
- },
- "leadsius": {
- "name": "Leadsius",
- "categoryId": 4,
- "url": "http://www.leadsius.com/",
- "companyId": "leadsius"
- },
- "leady": {
- "name": "Leady",
- "categoryId": 4,
- "url": "http://www.leady.cz/",
- "companyId": "leady"
- },
- "leiki": {
- "name": "Leiki",
- "categoryId": 4,
- "url": "http://www.leiki.com",
- "companyId": "leiki"
- },
- "lengow": {
- "name": "Lengow",
- "categoryId": 4,
- "url": "http://www.lengow.com/",
- "companyId": "lengow"
- },
- "lenmit.com": {
- "name": "lenmit.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lentainform.com": {
- "name": "lentainform.com",
- "categoryId": 8,
- "url": "https://www.lentainform.com/",
- "companyId": null
- },
- "lenua.de": {
- "name": "Lenua System",
- "categoryId": 4,
- "url": "http://lenua.de/",
- "companyId": "synatix"
- },
- "let_reach": {
- "name": "Let Reach",
- "categoryId": 2,
- "url": "https://letreach.com/",
- "companyId": "let_reach"
- },
- "letv": {
- "name": "LeTV",
- "categoryId": 6,
- "url": "http://www.le.com/",
- "companyId": "letv"
- },
- "level3_communications": {
- "name": "Level 3 Communications, Inc.",
- "categoryId": 8,
- "url": "http://www.level3.com/en/",
- "companyId": "level3_communications"
- },
- "licensebuttons.net": {
- "name": "licensebuttons.net",
- "categoryId": 9,
- "url": "https://licensebuttons.net/",
- "companyId": null
- },
- "lifestreet_media": {
- "name": "LifeStreet Media",
- "categoryId": 4,
- "url": "http://lifestreetmedia.com/",
- "companyId": "lifestreet_media"
- },
- "ligatus": {
- "name": "Ligatus",
- "categoryId": 4,
- "url": "http://www.ligatus.com/",
- "companyId": "outbrain"
- },
- "limk": {
- "name": "Limk",
- "categoryId": 4,
- "url": "https://limk.com/",
- "companyId": "limk"
- },
- "line_apps": {
- "name": "Line",
- "categoryId": 6,
- "url": "https://line.me/en-US/",
- "companyId": "line"
- },
- "linezing": {
- "name": "LineZing",
- "categoryId": 4,
- "url": "http://www.linezing.com/",
- "companyId": "linezing"
- },
- "linkbucks": {
- "name": "Linkbucks",
- "categoryId": 4,
- "url": "http://www.linkbucks.com/",
- "companyId": "linkbucks"
- },
- "linkconnector": {
- "name": "LinkConnector",
- "categoryId": 4,
- "url": "http://www.linkconnector.com",
- "companyId": "linkconnector"
- },
- "linkedin": {
- "name": "LinkedIn",
- "categoryId": 8,
- "url": "https://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_ads": {
- "name": "LinkedIn Ads",
- "categoryId": 4,
- "url": "http://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_analytics": {
- "name": "LinkedIn Analytics",
- "categoryId": 6,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "linkedin_marketing_solutions": {
- "name": "LinkedIn Marketing Solutions",
- "categoryId": 4,
- "url": "https://business.linkedin.com/marketing-solutions",
- "companyId": "microsoft"
- },
- "linkedin_widgets": {
- "name": "LinkedIn Widgets",
- "categoryId": 7,
- "url": "https://www.linkedin.com",
- "companyId": "microsoft"
- },
- "linker": {
- "name": "Linker",
- "categoryId": 4,
- "url": "https://linker.hr/",
- "companyId": "linker"
- },
- "linkprice": {
- "name": "LinkPrice",
- "categoryId": 4,
- "url": "http://www.linkprice.com/",
- "companyId": "linkprice"
- },
- "linkpulse": {
- "name": "Linkpulse",
- "categoryId": 6,
- "url": "http://www.linkpulse.com/",
- "companyId": "linkpulse"
- },
- "linksalpha": {
- "name": "LinksAlpha",
- "categoryId": 7,
- "url": "http://www.linksalpha.com",
- "companyId": "linksalpha"
- },
- "linksmart": {
- "name": "LinkSmart",
- "categoryId": 4,
- "url": "http://www.linksmart.com/",
- "companyId": "sovrn"
- },
- "linkstorm": {
- "name": "Linkstorm",
- "categoryId": 2,
- "url": "http://www.linkstorms.com/",
- "companyId": "linkstorm"
- },
- "linksynergy.com": {
- "name": "Rakuten LinkShare",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/affiliate",
- "companyId": "rakuten"
- },
- "linkup": {
- "name": "LinkUp",
- "categoryId": 6,
- "url": "http://www.linkup.com/",
- "companyId": "linkup"
- },
- "linkwise": {
- "name": "Linkwise",
- "categoryId": 4,
- "url": "http://linkwi.se/global-en/",
- "companyId": "linkwise"
- },
- "linkwithin": {
- "name": "LinkWithin",
- "categoryId": 7,
- "url": "http://www.linkwithin.com/",
- "companyId": "linkwithin"
- },
- "liquidm_technology_gmbh": {
- "name": "LiquidM Technology GmbH",
- "categoryId": 4,
- "url": "https://liquidm.com/",
- "companyId": "liquidm"
- },
- "liqwid": {
- "name": "Liqwid",
- "categoryId": 4,
- "url": "https://liqwid.com/",
- "companyId": "liqwid"
- },
- "list.ru": {
- "name": "Rating@Mail.Ru",
- "categoryId": 7,
- "url": "http://list.ru/",
- "companyId": "megafon"
- },
- "listrak": {
- "name": "Listrak",
- "categoryId": 2,
- "url": "http://www.listrak.com/",
- "companyId": "listrak"
- },
- "live2support": {
- "name": "Live2Support",
- "categoryId": 2,
- "url": "http://www.live2support.com/",
- "companyId": "live2support"
- },
- "live800": {
- "name": "Live800",
- "categoryId": 2,
- "url": "http://live800.com",
- "companyId": "live800"
- },
- "live_agent": {
- "name": "Live Agent",
- "categoryId": 2,
- "url": "https://www.ladesk.com/",
- "companyId": "liveagent"
- },
- "live_help_now": {
- "name": "Live Help Now",
- "categoryId": 2,
- "url": "http://www.livehelpnow.net/",
- "companyId": "live_help_now"
- },
- "live_intent": {
- "name": "Live Intent",
- "categoryId": 6,
- "url": "http://www.liveintent.com/",
- "companyId": "liveintent"
- },
- "live_journal": {
- "name": "Live Journal",
- "categoryId": 6,
- "url": "http://www.livejournal.com/",
- "companyId": "livejournal"
- },
- "liveadexchanger.com": {
- "name": "liveadexchanger.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "livechat": {
- "name": "LiveChat",
- "categoryId": 2,
- "url": "http://www.livechatinc.com",
- "companyId": "livechat"
- },
- "livechatnow": {
- "name": "LiveChatNow",
- "categoryId": 2,
- "url": "http://www.livechatnow.com/",
- "companyId": "livechatnow!"
- },
- "liveclicker": {
- "name": "Liveclicker",
- "categoryId": 2,
- "url": "http://www.liveclicker.com",
- "companyId": "liveclicker"
- },
- "livecounter": {
- "name": "Livecounter",
- "categoryId": 6,
- "url": "http://www.livecounter.dk/",
- "companyId": "livecounter"
- },
- "livefyre": {
- "name": "Livefyre",
- "categoryId": 1,
- "url": "http://www.livefyre.com/",
- "companyId": "adobe"
- },
- "liveinternet": {
- "name": "LiveInternet",
- "categoryId": 1,
- "url": "http://www.liveinternet.ru/",
- "companyId": "liveinternet"
- },
- "liveperson": {
- "name": "LivePerson",
- "categoryId": 2,
- "url": "http://www.liveperson.com/",
- "companyId": "liveperson"
- },
- "liveramp": {
- "name": "LiveRamp",
- "categoryId": 4,
- "url": "https://liveramp.com/",
- "companyId": "acxiom"
- },
- "livere": {
- "name": "LiveRe",
- "categoryId": 7,
- "url": "http://www.livere.com/",
- "companyId": "livere"
- },
- "livesportmedia.eu": {
- "name": "Livesport Media",
- "categoryId": 8,
- "url": "http://www.livesportmedia.eu/",
- "companyId": null
- },
- "livestream": {
- "name": "Livestream",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "livetex.ru": {
- "name": "LiveTex",
- "categoryId": 2,
- "url": "https://livetex.ru/",
- "companyId": "livetex"
- },
- "lkqd": {
- "name": "LKQD",
- "categoryId": 4,
- "url": "http://www.lkqd.com/",
- "companyId": "nexstar"
- },
- "loadbee.com": {
- "name": "Loadbee",
- "categoryId": 4,
- "url": "https://company.loadbee.com/de/loadbee-home",
- "companyId": null
- },
- "loadercdn.com": {
- "name": "loadercdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "loadsource.org": {
- "name": "loadsource.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "localytics": {
- "name": "Localytics",
- "categoryId": 6,
- "url": "http://www.localytics.com/",
- "companyId": "localytics"
- },
- "lockerdome": {
- "name": "LockerDome",
- "categoryId": 7,
- "url": "https://lockerdome.com",
- "companyId": "lockerdome"
- },
- "lockerz_share": {
- "name": "AddToAny",
- "categoryId": 7,
- "url": "http://www.addtoany.com/",
- "companyId": "addtoany"
- },
- "logan_media": {
- "name": "Logan Media",
- "categoryId": 6,
- "url": "http://loganmedia.mobi/",
- "companyId": "logan_media"
- },
- "logdna": {
- "name": "LogDNA",
- "categoryId": 4,
- "url": "http://www.answerbook.com/",
- "companyId": "logdna"
- },
- "loggly": {
- "name": "Loggly",
- "categoryId": 6,
- "url": "http://loggly.com/",
- "companyId": "loggly"
- },
- "logly": {
- "name": "logly",
- "categoryId": 6,
- "url": "http://logly.co.jp/",
- "companyId": "logly"
- },
- "logsss.com": {
- "name": "logsss.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lomadee": {
- "name": "Lomadee",
- "categoryId": 4,
- "url": "http://lomadee.com",
- "companyId": "lomadee"
- },
- "longtail_video_analytics": {
- "name": "JW Player Analytics",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/",
- "companyId": "jw_player"
- },
- "loomia": {
- "name": "Loomia",
- "categoryId": 4,
- "url": "http://www.loomia.com/",
- "companyId": "loomia"
- },
- "loop11": {
- "name": "Loop11",
- "categoryId": 6,
- "url": "https://360i.com/",
- "companyId": "360i"
- },
- "loopfuse_oneview": {
- "name": "LoopFuse OneView",
- "categoryId": 4,
- "url": "http://www.loopfuse.com/",
- "companyId": "loopfuse"
- },
- "lotame": {
- "name": "Lotame",
- "categoryId": 4,
- "url": "http://www.lotame.com/",
- "companyId": "lotame"
- },
- "lottex_inc": {
- "name": "vidcpm.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lucid": {
- "name": "Lucid",
- "categoryId": 4,
- "url": "https://luc.id/",
- "companyId": "luc.id"
- },
- "lucid_media": {
- "name": "Lucid Media",
- "categoryId": 4,
- "url": "http://www.lucidmedia.com/",
- "companyId": "singtel"
- },
- "lucini": {
- "name": "Lucini",
- "categoryId": 4,
- "url": "http://www.lucinilucini.com/",
- "companyId": "lucini_&_lucini_communications"
- },
- "lucky_orange": {
- "name": "Lucky Orange",
- "categoryId": 6,
- "url": "http://www.luckyorange.com/",
- "companyId": "lucky_orange"
- },
- "luckypushh.com": {
- "name": "luckypushh.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lxr100": {
- "name": "LXR100",
- "categoryId": 4,
- "url": "http://www.netelixir.com/lxr100_PPC_management_tool.html",
- "companyId": "netelixir"
- },
- "lynchpin_analytics": {
- "name": "Lynchpin Analytics",
- "categoryId": 4,
- "url": "http://www.lynchpin.com/",
- "companyId": "lynchpin_analytics"
- },
- "lytics": {
- "name": "Lytics",
- "categoryId": 6,
- "url": "https://www.lytics.com/",
- "companyId": "lytics"
- },
- "lyuoaxruaqdo.com": {
- "name": "lyuoaxruaqdo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "m-pathy": {
- "name": "m-pathy",
- "categoryId": 4,
- "url": "http://www.m-pathy.com/",
- "companyId": "m-pathy"
- },
- "m._p._newmedia": {
- "name": "M. P. NEWMEDIA",
- "categoryId": 4,
- "url": "http://www.mp-newmedia.com/",
- "companyId": "sticky"
- },
- "m4n": {
- "name": "M4N",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "mad_ads_media": {
- "name": "Mad Ads Media",
- "categoryId": 4,
- "url": "http://www.madadsmedia.com/",
- "companyId": "mad_ads_media"
- },
- "madeleine.de": {
- "name": "madeleine.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "madison_logic": {
- "name": "Madison Logic",
- "categoryId": 4,
- "url": "http://www.madisonlogic.com/",
- "companyId": "madison_logic"
- },
- "madnet": {
- "name": "MADNET",
- "categoryId": 4,
- "url": "http://madnet.ru/en",
- "companyId": "madnet"
- },
- "mads": {
- "name": "MADS",
- "categoryId": 4,
- "url": "http://www.mads.com/",
- "companyId": "mads"
- },
- "magna_advertise": {
- "name": "Magna Advertise",
- "categoryId": 4,
- "url": "http://magna.ru/",
- "companyId": "magna_advertise"
- },
- "magnetic": {
- "name": "Magnetic",
- "categoryId": 4,
- "url": "http://www.magnetic.is",
- "companyId": "magnetic"
- },
- "magnetise_group": {
- "name": "Magnetise Group",
- "categoryId": 4,
- "url": "http://magnetisegroup.com/",
- "companyId": "magnetise_group"
- },
- "magnify360": {
- "name": "Magnify360",
- "categoryId": 6,
- "url": "http://www.magnify360.com/",
- "companyId": "magnify360"
- },
- "magnuum.com": {
- "name": "magnuum.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mail.ru_banner": {
- "name": "Mail.Ru Banner Network",
- "categoryId": 4,
- "url": "http://mail.ru/",
- "companyId": "megafon"
- },
- "mail.ru_counter": {
- "name": "Mail.Ru Counter",
- "categoryId": 2,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "mail.ru_group": {
- "name": "Mail.Ru Group",
- "categoryId": 7,
- "url": "http://mail.ru/",
- "companyId": "megafon"
- },
- "mailchimp_tracking": {
- "name": "MailChimp Tracking",
- "categoryId": 4,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "mailerlite.com": {
- "name": "Mailerlite",
- "categoryId": 10,
- "url": "https://www.mailerlite.com/",
- "companyId": "mailerlite"
- },
- "mailtrack.io": {
- "name": "MailTrack.io",
- "categoryId": 4,
- "url": "https://mailtrack.io",
- "companyId": "mailtrack"
- },
- "mainadv": {
- "name": "mainADV",
- "categoryId": 4,
- "url": "http://www.mainadv.com/",
- "companyId": "mainadv"
- },
- "makazi": {
- "name": "Makazi",
- "categoryId": 4,
- "url": "http://www.makazi.com/en/",
- "companyId": "makazi_group"
- },
- "makeappdev.xyz": {
- "name": "makeappdev.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "makesource.cool": {
- "name": "makesource.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mango": {
- "name": "Mango",
- "categoryId": 4,
- "url": "https://www.mango-office.ru/",
- "companyId": "mango_office"
- },
- "manycontacts": {
- "name": "ManyContacts",
- "categoryId": 4,
- "url": "https://www.manycontacts.com/",
- "companyId": "manycontacts"
- },
- "mapandroute.de": {
- "name": "Map and Route",
- "categoryId": 2,
- "url": "http://www.mapandroute.de/",
- "companyId": null
- },
- "mapbox": {
- "name": "Mapbox",
- "categoryId": 2,
- "url": "https://www.mapbox.com/",
- "companyId": null
- },
- "maploco": {
- "name": "MapLoco",
- "categoryId": 4,
- "url": "http://www.maploco.com/",
- "companyId": "maploco"
- },
- "marchex": {
- "name": "Marchex",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "marchex"
- },
- "marimedia": {
- "name": "Marimedia",
- "categoryId": 4,
- "url": "http://www.marimedia.net/",
- "companyId": "tremor_video"
- },
- "marin_search_marketer": {
- "name": "Marin Search Marketer",
- "categoryId": 4,
- "url": "http://www.marinsoftware.com/",
- "companyId": "marin_software"
- },
- "mark_+_mini": {
- "name": "Mark & Mini",
- "categoryId": 4,
- "url": "http://www.markandmini.com/index.cfm",
- "companyId": "edm_group"
- },
- "market_thunder": {
- "name": "Market Thunder",
- "categoryId": 4,
- "url": "https://www.makethunder.com/",
- "companyId": "market_thunder"
- },
- "marketgid": {
- "name": "MarketGid",
- "categoryId": 4,
- "url": "http://www.mgid.com/",
- "companyId": "marketgid_usa"
- },
- "marketing_automation": {
- "name": "Marketing Automation",
- "categoryId": 4,
- "url": "https://en.frodx.com",
- "companyId": "frodx"
- },
- "marketo": {
- "name": "Marketo",
- "categoryId": 4,
- "url": "http://www.marketo.com/",
- "companyId": "marketo"
- },
- "markmonitor": {
- "name": "MarkMonitor",
- "categoryId": 4,
- "url": "https://www.markmonitor.com/",
- "companyId": "markmonitor"
- },
- "marktest": {
- "name": "Marktest",
- "categoryId": 4,
- "url": "http://www.marktest.com/",
- "companyId": "marktest_group"
- },
- "marshadow.io": {
- "name": "marshadow.io",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "martini_media": {
- "name": "Martini Media",
- "categoryId": 4,
- "url": "http://martinimediainc.com/",
- "companyId": "martini_media"
- },
- "maru-edu": {
- "name": "Maru-EDU",
- "categoryId": 2,
- "url": "https://www.maruedr.com",
- "companyId": "maruedr"
- },
- "marvellous_machine": {
- "name": "Marvellous Machine",
- "categoryId": 6,
- "url": "https://www.marvellousmachine.net/",
- "companyId": "marvellous_machine"
- },
- "master_banner_network": {
- "name": "Master Banner Network",
- "categoryId": 4,
- "url": "http://www.mbn.com.ua/",
- "companyId": "master_banner_network"
- },
- "mastertarget": {
- "name": "MasterTarget",
- "categoryId": 4,
- "url": "http://mastertarget.ru/",
- "companyId": "mastertarget"
- },
- "matelso": {
- "name": "Matelso",
- "categoryId": 6,
- "url": "https://www.matelso.de",
- "companyId": "matelso"
- },
- "mather_analytics": {
- "name": "Mather Analytics",
- "categoryId": 6,
- "url": "https://www.mathereconomics.com/",
- "companyId": "mather_economics"
- },
- "mathjax.org": {
- "name": "MathJax",
- "categoryId": 9,
- "url": "https://www.mathjax.org/",
- "companyId": null
- },
- "matiro": {
- "name": "Matiro",
- "categoryId": 6,
- "url": "http://matiro.com/",
- "companyId": "matiro"
- },
- "matomo": {
- "name": "Matomo",
- "categoryId": 6,
- "url": "https://matomo.org/s",
- "companyId": "matomo"
- },
- "matomy_market": {
- "name": "Matomy Market",
- "categoryId": 4,
- "url": "http://www.matomymarket.com/",
- "companyId": "matomy_media"
- },
- "maxbounty": {
- "name": "MaxBounty",
- "categoryId": 5,
- "url": "http://www.maxbounty.com/",
- "companyId": "maxbounty"
- },
- "maxcdn": {
- "name": "MaxCDN",
- "categoryId": 9,
- "url": "https://www.maxcdn.com/",
- "companyId": null
- },
- "maxlab": {
- "name": "Maxlab",
- "categoryId": 4,
- "url": "http://maxlab.ru",
- "companyId": "maxlab"
- },
- "maxmind": {
- "name": "MaxMind",
- "categoryId": 4,
- "url": "http://www.maxmind.com/",
- "companyId": "maxmind"
- },
- "maxonclick_com": {
- "name": "maxonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "maxpoint_interactive": {
- "name": "MaxPoint Interactive",
- "categoryId": 4,
- "url": "http://www.maxpointinteractive.com/",
- "companyId": "maxpoint_interactive"
- },
- "maxymiser": {
- "name": "Oracle Maxymiser",
- "categoryId": 4,
- "url": "https://www.oracle.com/marketingcloud/products/testing-and-optimization/index.html",
- "companyId": "oracle"
- },
- "mbr_targeting": {
- "name": "mbr targeting",
- "categoryId": 4,
- "url": "https://mbr-targeting.com/",
- "companyId": "stroer"
- },
- "mbuy": {
- "name": "MBuy",
- "categoryId": 4,
- "url": "http://www.adbuyer.com/",
- "companyId": "mbuy"
- },
- "mcabi": {
- "name": "mCabi",
- "categoryId": 4,
- "url": "https://mcabi.mcloudglobal.com/#",
- "companyId": "mcabi"
- },
- "mcafee_secure": {
- "name": "McAfee Secure",
- "categoryId": 5,
- "url": "http://www.mcafeesecure.com/us/",
- "companyId": "mcafee"
- },
- "mconet": {
- "name": "MCOnet",
- "categoryId": 4,
- "url": "http://mconet.biz/",
- "companyId": "mconet"
- },
- "mdotlabs": {
- "name": "MdotLabs",
- "categoryId": 4,
- "url": "http://www.mdotlabs.com/",
- "companyId": "comscore"
- },
- "media-clic": {
- "name": "Media-clic",
- "categoryId": 4,
- "url": "http://www.media-clic.com/",
- "companyId": "media-click"
- },
- "media-imdb.com": {
- "name": "IMDB CDN",
- "categoryId": 9,
- "url": "https://www.imdb.com/",
- "companyId": "amazon_associates"
- },
- "media.net": {
- "name": "Media.net",
- "categoryId": 4,
- "url": "http://www.media.net/",
- "companyId": "media.net"
- },
- "media_impact": {
- "name": "Media Impact",
- "categoryId": 4,
- "url": "https://mediaimpact.de/index.html",
- "companyId": "media_impact"
- },
- "media_innovation_group": {
- "name": "Xaxis",
- "categoryId": 4,
- "url": "https://www.xaxis.com/",
- "companyId": "media_innovation_group"
- },
- "media_today": {
- "name": "Media Today",
- "categoryId": 4,
- "url": "http://mediatoday.ru/",
- "companyId": "media_today"
- },
- "mediaad": {
- "name": "MediaAd",
- "categoryId": 4,
- "url": "https://mediaad.org",
- "companyId": "mediaad"
- },
- "mediaglu": {
- "name": "Mediaglu",
- "categoryId": 4,
- "url": "http://mlnadvertising.com/",
- "companyId": "appnexus"
- },
- "mediahub": {
- "name": "MediaHub",
- "categoryId": 4,
- "url": "http://www.mediahub.com/",
- "companyId": "mediahub"
- },
- "medialand": {
- "name": "Medialand",
- "categoryId": 4,
- "url": "http://medialand.ru",
- "companyId": "medialand"
- },
- "medialead": {
- "name": "Medialead",
- "categoryId": 4,
- "url": "https://www.medialead.de/",
- "companyId": "the_reach_group"
- },
- "mediamath": {
- "name": "MediaMath",
- "categoryId": 4,
- "url": "http://www.mediamath.com/",
- "companyId": "mediamath"
- },
- "mediametrics": {
- "name": "Mediametrics",
- "categoryId": 7,
- "url": "http://mediametrics.ru",
- "companyId": "mediametrics"
- },
- "median": {
- "name": "Median",
- "categoryId": 4,
- "url": "http://median.hu",
- "companyId": "median"
- },
- "mediapass": {
- "name": "MediaPass",
- "categoryId": 4,
- "url": "http://www.mediapass.com/",
- "companyId": "mediapass"
- },
- "mediapost_communications": {
- "name": "Mediapost Communications",
- "categoryId": 6,
- "url": "https://vrm.mediapostcommunication.net/",
- "companyId": "mediapost_communications"
- },
- "mediarithmics.com": {
- "name": "Mediarithmics",
- "categoryId": 4,
- "url": "http://www.mediarithmics.com/en/",
- "companyId": "mediarithmics"
- },
- "mediascope": {
- "name": "Mediascope",
- "categoryId": 6,
- "url": "http://mediascope.net/",
- "companyId": "mediascope"
- },
- "mediashakers": {
- "name": "MediaShakers",
- "categoryId": 4,
- "url": "http://www.mediashakers.com/",
- "companyId": "mediashakers"
- },
- "mediashift": {
- "name": "MediaShift",
- "categoryId": 4,
- "url": "http://www.mediashift.com/",
- "companyId": "mediashift"
- },
- "mediator.media": {
- "name": "Mediator",
- "categoryId": 6,
- "url": "https://mediator.media/",
- "companyId": "mycom_bv"
- },
- "mediav": {
- "name": "MediaV",
- "categoryId": 4,
- "url": "https://www.mediav.com/",
- "companyId": "mediav"
- },
- "mediawhiz": {
- "name": "Mediawhiz",
- "categoryId": 4,
- "url": "http://www.mediawhiz.com/",
- "companyId": "matomy_media"
- },
- "medigo": {
- "name": "Medigo",
- "categoryId": 4,
- "url": "https://www.mediego.com/en/",
- "companyId": "mediego"
- },
- "medley": {
- "name": "Medley",
- "categoryId": 4,
- "url": "http://medley.com/",
- "companyId": "friendfinder_networks"
- },
- "medyanet": {
- "name": "MedyaNet",
- "categoryId": 4,
- "url": "http://www.medyanet.com.tr/",
- "companyId": "medyanet"
- },
- "meebo_bar": {
- "name": "Meebo Bar",
- "categoryId": 7,
- "url": "http://bar.meebo.com/",
- "companyId": "google"
- },
- "meetrics": {
- "name": "Meetrics",
- "categoryId": 4,
- "url": "http://www.meetrics.de/",
- "companyId": "meetrics"
- },
- "megaindex": {
- "name": "MegaIndex",
- "categoryId": 4,
- "url": "http://www.megaindex.ru",
- "companyId": "megaindex"
- },
- "mein-bmi.com": {
- "name": "mein-bmi.com",
- "categoryId": 12,
- "url": "https://www.mein-bmi.com/",
- "companyId": null
- },
- "melissa": {
- "name": "Melissa",
- "categoryId": 6,
- "url": "https://www.melissa.com/",
- "companyId": "melissa_global_intelligence"
- },
- "melt": {
- "name": "Melt",
- "categoryId": 4,
- "url": "http://meltdsp.com/",
- "companyId": "melt"
- },
- "menlo": {
- "name": "Menlo",
- "categoryId": 4,
- "url": "http://www.menlotechnologies.cn/",
- "companyId": "menlotechnologies"
- },
- "mentad": {
- "name": "MentAd",
- "categoryId": 4,
- "url": "http://www.mentad.com/",
- "companyId": "mentad"
- },
- "mercado": {
- "name": "Mercado",
- "categoryId": 4,
- "url": "https://www.mercadolivre.com.br/",
- "companyId": "mercado_livre"
- },
- "merchantadvantage": {
- "name": "MerchantAdvantage",
- "categoryId": 4,
- "url": "http://www.merchantadvantage.com/channelmanagement.cfm",
- "companyId": "merchantadvantage"
- },
- "merchenta": {
- "name": "Merchenta",
- "categoryId": 4,
- "url": "http://www.merchenta.com/",
- "companyId": "merchenta"
- },
- "mercury_media": {
- "name": "Mercury Media",
- "categoryId": 4,
- "url": "http://trackingsoft.com/",
- "companyId": "mercury_media"
- },
- "merkle_research": {
- "name": "Merkle Research",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "merkle_rkg": {
- "name": "Merkle RKG",
- "categoryId": 6,
- "url": "https://www.merkleinc.com/what-we-do/digital-agency-services/rkg-now-fully-integrated-merkle",
- "companyId": "dentsu_aegis_network"
- },
- "messenger.com": {
- "name": "Facebook Messenger",
- "categoryId": 7,
- "url": "https://messenger.com",
- "companyId": "facebook"
- },
- "meta_network": {
- "name": "Meta Network",
- "categoryId": 7,
- "url": "http://www.metanetwork.com/",
- "companyId": "meta_network"
- },
- "metaffiliation.com": {
- "name": "Netaffiliation",
- "categoryId": 4,
- "url": "http://netaffiliation.com/",
- "companyId": "kwanko"
- },
- "metapeople": {
- "name": "Metapeople",
- "categoryId": 4,
- "url": "http://www.metapeople.com/us/",
- "companyId": "metapeople"
- },
- "metrigo": {
- "name": "Metrigo",
- "categoryId": 4,
- "url": "http://metrigo.com/",
- "companyId": "metrigo"
- },
- "metriweb": {
- "name": "MetriWeb",
- "categoryId": 4,
- "url": "http://www.metriware.be/",
- "companyId": "metriware"
- },
- "miaozhen": {
- "name": "Miaozhen",
- "categoryId": 4,
- "url": "http://miaozhen.com/en/index.html",
- "companyId": "miaozhen"
- },
- "microad": {
- "name": "MicroAd",
- "categoryId": 4,
- "url": "https://www.microad.co.jp/",
- "companyId": "microad"
- },
- "microsoft": {
- "name": "Microsoft Services",
- "categoryId": 8,
- "url": "http://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_adcenter_conversion": {
- "name": "Microsoft adCenter Conversion",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_analytics": {
- "name": "Microsoft Analytics",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com",
- "companyId": "microsoft"
- },
- "microsoft_clarity": {
- "name": "Microsoft Clarity",
- "categoryId": 6,
- "url": "https://clarity.microsoft.com/",
- "companyId": "microsoft"
- },
- "mindset_media": {
- "name": "Mindset Media",
- "categoryId": 4,
- "url": "http://www.mindset-media.com/",
- "companyId": "google"
- },
- "mindspark": {
- "name": "Mindspark",
- "categoryId": 6,
- "url": "http://www.mindspark.com/",
- "companyId": "iac_apps"
- },
- "mindviz_tracker": {
- "name": "MindViz Tracker",
- "categoryId": 4,
- "url": "http://mvtracker.com/",
- "companyId": "mindviz"
- },
- "minewhat": {
- "name": "MineWhat",
- "categoryId": 4,
- "url": "http://www.minewhat.com",
- "companyId": "minewhat"
- },
- "mints_app": {
- "name": "Mints App",
- "categoryId": 2,
- "url": "https://mintsapp.io/",
- "companyId": "mints_app"
- },
- "minute.ly": {
- "name": "minute.ly",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "minute.ly_video": {
- "name": "minute.ly video",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "mirando": {
- "name": "Mirando",
- "categoryId": 4,
- "url": "http://mirando.de",
- "companyId": "mirando"
- },
- "mirtesen.ru": {
- "name": "mirtesen.ru",
- "categoryId": 7,
- "url": "https://mirtesen.ru/",
- "companyId": null
- },
- "mister_bell": {
- "name": "Mister Bell",
- "categoryId": 4,
- "url": "http://misterbell.fr/",
- "companyId": "mister_bell"
- },
- "mixi": {
- "name": "mixi",
- "categoryId": 7,
- "url": "http://mixi.jp/",
- "companyId": "mixi"
- },
- "mixpanel": {
- "name": "Mixpanel",
- "categoryId": 6,
- "url": "http://mixpanel.com/",
- "companyId": "mixpanel"
- },
- "mixpo": {
- "name": "Mixpo",
- "categoryId": 4,
- "url": "http://dynamicvideoad.mixpo.com/",
- "companyId": "mixpo"
- },
- "mluvii": {
- "name": "Mluvii",
- "categoryId": 2,
- "url": "https://www.mluvii.com",
- "companyId": "mluvii"
- },
- "mncdn.com": {
- "name": "MediaNova CDN",
- "categoryId": 9,
- "url": "https://www.medianova.com/",
- "companyId": null
- },
- "moat": {
- "name": "Moat",
- "categoryId": 4,
- "url": "http://www.moat.com/",
- "companyId": "oracle"
- },
- "mobicow": {
- "name": "Mobicow",
- "categoryId": 4,
- "url": "http://www.mobicow.com/",
- "companyId": "mobicow"
- },
- "mobify": {
- "name": "Mobify",
- "categoryId": 4,
- "url": "http://www.mobify.com/",
- "companyId": "mobify"
- },
- "mobtrks.com": {
- "name": "mobtrks.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mocean_mobile": {
- "name": "mOcean Mobile",
- "categoryId": 4,
- "url": "http://www.moceanmobile.com/",
- "companyId": "pubmatic"
- },
- "mochapp": {
- "name": "MoChapp",
- "categoryId": 2,
- "url": "http://www.mochapp.com/",
- "companyId": "mochapp"
- },
- "modern_impact": {
- "name": "Modern Impact",
- "categoryId": 4,
- "url": "http://www.modernimpact.com/",
- "companyId": "modern_impact"
- },
- "modernus": {
- "name": "Modernus",
- "categoryId": 6,
- "url": "http://www.modernus.is",
- "companyId": "modernus"
- },
- "modulepush.com": {
- "name": "modulepush.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "mogo_interactive": {
- "name": "Mogo Interactive",
- "categoryId": 4,
- "url": "http://www.mogomarketing.com/",
- "companyId": "mogo_interactive"
- },
- "mokono_analytics": {
- "name": "Mokono Analytics",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "monero_miner": {
- "name": "Monero Miner",
- "categoryId": 8,
- "url": "http://devappgrant.space/",
- "companyId": null
- },
- "monetate": {
- "name": "Monetate",
- "categoryId": 6,
- "url": "http://monetate.com",
- "companyId": "monetate"
- },
- "monetize_me": {
- "name": "Monetize Me",
- "categoryId": 4,
- "url": "http://www.monetize-me.com/",
- "companyId": "monetize_me"
- },
- "moneytizer": {
- "name": "Moneytizer",
- "categoryId": 4,
- "url": "https://www.themoneytizer.com/",
- "companyId": "the_moneytizer"
- },
- "mongoose_metrics": {
- "name": "Mongoose Metrics",
- "categoryId": 4,
- "url": "http://www.mongoosemetrics.com/",
- "companyId": "mongoose_metrics"
- },
- "monitis": {
- "name": "Monitis",
- "categoryId": 6,
- "url": "http://www.monitis.com/",
- "companyId": "monitis"
- },
- "monitus": {
- "name": "Monitus",
- "categoryId": 6,
- "url": "http://www.monitus.net/",
- "companyId": "monitus"
- },
- "monotype_gmbh": {
- "name": "Monotype GmbH",
- "categoryId": 9,
- "url": "http://www.monotype.com/",
- "companyId": "monotype"
- },
- "monotype_imaging": {
- "name": "Fonts.com Store",
- "categoryId": 2,
- "url": "https://www.fonts.com/",
- "companyId": "monotype"
- },
- "monsido": {
- "name": "Monsido",
- "categoryId": 6,
- "url": "https://monsido.com/",
- "companyId": "monsido"
- },
- "monster_advertising": {
- "name": "Monster Advertising",
- "categoryId": 4,
- "url": "http://www.monster.com/",
- "companyId": "monster_worldwide"
- },
- "mooxar": {
- "name": "Mooxar",
- "categoryId": 4,
- "url": "http://mooxar.com/",
- "companyId": "mooxar"
- },
- "mopinion.com": {
- "name": "Mopinion",
- "categoryId": 2,
- "url": "https://mopinion.com/",
- "companyId": "mopinion"
- },
- "mopub": {
- "name": "MoPub",
- "categoryId": 4,
- "url": "https://www.mopub.com/",
- "companyId": "twitter"
- },
- "more_communication": {
- "name": "More Communication",
- "categoryId": 4,
- "url": "http://www.more-com.co.jp/",
- "companyId": "more_communication"
- },
- "moreads": {
- "name": "moreAds",
- "categoryId": 4,
- "url": "https://www.moras.jp",
- "companyId": "moreads"
- },
- "motigo_webstats": {
- "name": "Motigo Webstats",
- "categoryId": 7,
- "url": "http://webstats.motigo.com/",
- "companyId": "motigo"
- },
- "motionpoint": {
- "name": "MotionPoint",
- "categoryId": 6,
- "url": "http://www.motionpoint.com/",
- "companyId": "motionpoint_corporation"
- },
- "mouseflow": {
- "name": "Mouseflow",
- "categoryId": 6,
- "url": "http://mouseflow.com/",
- "companyId": "mouseflow"
- },
- "mousestats": {
- "name": "MouseStats",
- "categoryId": 4,
- "url": "http://www.mousestats.com/",
- "companyId": "mousestats"
- },
- "mousetrace": {
- "name": "MouseTrace",
- "categoryId": 6,
- "url": "http://www.mousetrace.com/",
- "companyId": "mousetrace"
- },
- "mov.ad": {
- "name": "Mov.ad ",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "movable_ink": {
- "name": "Movable Ink",
- "categoryId": 2,
- "url": "https://movableink.com/",
- "companyId": "movable_ink"
- },
- "movable_media": {
- "name": "Movable Media",
- "categoryId": 4,
- "url": "http://www.movablemedia.com/",
- "companyId": "movable_media"
- },
- "moz": {
- "name": "Moz",
- "categoryId": 8,
- "url": "https://moz.com/",
- "companyId": null
- },
- "mozoo": {
- "name": "MoZoo",
- "categoryId": 4,
- "url": "http://mozoo.com/",
- "companyId": "mozoo"
- },
- "mrp": {
- "name": "MRP",
- "categoryId": 4,
- "url": "https://www.mrpfd.com/",
- "companyId": "mrp"
- },
- "mrpdata": {
- "name": "MRP",
- "categoryId": 6,
- "url": "http://mrpdata.com/Account/Login?ReturnUrl=%2F",
- "companyId": "fifth_story"
- },
- "mrskincash": {
- "name": "MrSkinCash",
- "categoryId": 3,
- "url": "http://mrskincash.com/",
- "companyId": "mrskincash.com"
- },
- "msn": {
- "name": "Microsoft Network",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "muscula": {
- "name": "Muscula",
- "categoryId": 4,
- "url": "https://www.universe-surf.de/",
- "companyId": "universe_surf"
- },
- "mux_inc": {
- "name": "Mux",
- "categoryId": 0,
- "url": "https://mux.com/",
- "companyId": "mux_inc"
- },
- "mybloglog": {
- "name": "MyBlogLog",
- "categoryId": 7,
- "url": "http://www.mybloglog.com/",
- "companyId": "verizon"
- },
- "mybuys": {
- "name": "MyBuys",
- "categoryId": 4,
- "url": "http://www.mybuys.com/",
- "companyId": "magnetic"
- },
- "mycdn.me": {
- "name": "Mail.Ru CDN",
- "categoryId": 9,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "mycliplister.com": {
- "name": "Cliplister",
- "categoryId": 2,
- "url": "https://www.cliplister.com/",
- "companyId": null
- },
- "mycounter.ua": {
- "name": "MyCounter.ua",
- "categoryId": 6,
- "url": "http://mycounter.ua",
- "companyId": "mycounter.ua"
- },
- "myfonts": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "myfonts_counter": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "mypagerank": {
- "name": "MyPagerank",
- "categoryId": 6,
- "url": "http://www.mypagerank.net/",
- "companyId": "mypagerank"
- },
- "mystat": {
- "name": "MyStat",
- "categoryId": 7,
- "url": "http://mystat.hu/",
- "companyId": "myst_statistics"
- },
- "mythings": {
- "name": "myThings",
- "categoryId": 4,
- "url": "http://www.mythings.com/",
- "companyId": "mythings"
- },
- "mytop_counter": {
- "name": "Mytop Counter",
- "categoryId": 7,
- "url": "http://mytop-in.net/",
- "companyId": "mytop-in"
- },
- "nakanohito.jp": {
- "name": "Nakanohito",
- "categoryId": 4,
- "url": "http://nakanohito.jp/",
- "companyId": "userinsight"
- },
- "namogoo": {
- "name": "Namoogoo",
- "categoryId": 4,
- "url": "https://www.namogoo.com/",
- "companyId": null
- },
- "nanigans": {
- "name": "Nanigans",
- "categoryId": 4,
- "url": "http://www.nanigans.com/",
- "companyId": "nanigans"
- },
- "nano_interactive": {
- "name": "Nano Interactive",
- "categoryId": 4,
- "url": "http://www.nanointeractive.com/home/de",
- "companyId": "nano_interactive"
- },
- "nanorep": {
- "name": "nanoRep",
- "categoryId": 2,
- "url": "http://www.nanorep.com/",
- "companyId": "logmein"
- },
- "narando": {
- "name": "Narando",
- "categoryId": 0,
- "url": "https://narando.com/",
- "companyId": "narando"
- },
- "narrativ": {
- "name": "Narrativ",
- "categoryId": 4,
- "url": "https://narrativ.com/",
- "companyId": "narrativ"
- },
- "narrative_io": {
- "name": "Narrative",
- "categoryId": 6,
- "url": "http://www.narrative.io/",
- "companyId": "narrative.io"
- },
- "natimatica": {
- "name": "Natimatica",
- "categoryId": 4,
- "url": "http://natimatica.com/",
- "companyId": "natimatica"
- },
- "nativeads.com": {
- "name": "native ads",
- "categoryId": 4,
- "url": "https://nativeads.com/",
- "companyId": null
- },
- "nativeroll": {
- "name": "Nativeroll",
- "categoryId": 0,
- "url": "http://nativeroll.tv/",
- "companyId": "native_roll"
- },
- "nativo": {
- "name": "Nativo",
- "categoryId": 4,
- "url": "http://www.nativo.net/",
- "companyId": "nativo"
- },
- "navegg_dmp": {
- "name": "Navegg",
- "categoryId": 6,
- "url": "https://www.navegg.com/en/",
- "companyId": "navegg"
- },
- "naver.com": {
- "name": "Naver",
- "categoryId": 4,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "naver_search": {
- "name": "Naver Search",
- "categoryId": 2,
- "url": "http://www.naver.com/",
- "companyId": "naver"
- },
- "nbc_news": {
- "name": "NBC News",
- "categoryId": 8,
- "url": "https://www.nbcnews.com/",
- "companyId": null
- },
- "ncol": {
- "name": "NCOL",
- "categoryId": 4,
- "url": "http://www.ncol.com/",
- "companyId": "ncol"
- },
- "needle": {
- "name": "Needle",
- "categoryId": 2,
- "url": "http://www.needle.com",
- "companyId": "needle"
- },
- "nekudo.com": {
- "name": "Nekudo",
- "categoryId": 2,
- "url": "https://nekudo.com/",
- "companyId": "nekudo"
- },
- "neodata": {
- "name": "Neodata",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "neory": {
- "name": "NEORY ",
- "categoryId": 4,
- "url": "https://www.neory.com/",
- "companyId": "neory"
- },
- "nerfherdersolo_com": {
- "name": "nerfherdersolo.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "net-metrix": {
- "name": "NET-Metrix",
- "categoryId": 6,
- "url": "http://www.net-metrix.ch/",
- "companyId": "net-metrix"
- },
- "net-results": {
- "name": "Net-Results",
- "categoryId": 4,
- "url": "http://www.net-results.com/",
- "companyId": "net-results"
- },
- "net_avenir": {
- "name": "Net Avenir",
- "categoryId": 4,
- "url": "http://www.netavenir.com/",
- "companyId": "net_avenir"
- },
- "net_communities": {
- "name": "Net Communities",
- "categoryId": 4,
- "url": "http://www.netcommunities.com/",
- "companyId": "net_communities"
- },
- "net_visibility": {
- "name": "NET Visibility",
- "categoryId": 4,
- "url": "http://www.netvisibility.co.uk",
- "companyId": "net_visibility"
- },
- "netbiscuits": {
- "name": "Netbiscuits",
- "categoryId": 6,
- "url": "http://www.netbiscuits.net/",
- "companyId": "netbiscuits"
- },
- "netbooster_group": {
- "name": "NetBooster Group",
- "categoryId": 4,
- "url": "http://www.netbooster.com/",
- "companyId": "netbooster_group"
- },
- "netflix": {
- "name": "Netflix",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "netletix": {
- "name": "Netletix",
- "categoryId": 4,
- "url": "http://www.netletix.com//",
- "companyId": "ip_de"
- },
- "netminers": {
- "name": "Netminers",
- "categoryId": 6,
- "url": "http://netminers.dk/",
- "companyId": "netminers"
- },
- "netmining": {
- "name": "Netmining",
- "categoryId": 4,
- "url": "http://www.netmining.com/",
- "companyId": "zeta"
- },
- "netmonitor": {
- "name": "NetMonitor",
- "categoryId": 6,
- "url": "http://www.netmanager.net/en/",
- "companyId": "netmonitor"
- },
- "netratings_sitecensus": {
- "name": "NetRatings SiteCensus",
- "categoryId": 4,
- "url": "http://www.nielsen-online.com/intlpage.html",
- "companyId": "nielsen"
- },
- "netrk.net": {
- "name": "nfxTrack",
- "categoryId": 6,
- "url": "https://netrk.net/",
- "companyId": "netzeffekt"
- },
- "netseer": {
- "name": "NetSeer",
- "categoryId": 4,
- "url": "http://www.netseer.com/",
- "companyId": "netseer"
- },
- "netshelter": {
- "name": "NetShelter",
- "categoryId": 4,
- "url": "http://www.netshelter.net/",
- "companyId": "netshelter"
- },
- "netsprint_audience": {
- "name": "Netsprint Audience",
- "categoryId": 6,
- "url": "http://audience.netsprint.eu/",
- "companyId": "netsprint"
- },
- "networkedblogs": {
- "name": "NetworkedBlogs",
- "categoryId": 7,
- "url": "http://w.networkedblogs.com/",
- "companyId": "networkedblogs"
- },
- "neustar_adadvisor": {
- "name": "Neustar AdAdvisor",
- "categoryId": 4,
- "url": "http://www.targusinfo.com/",
- "companyId": "neustar"
- },
- "new_relic": {
- "name": "New Relic",
- "categoryId": 6,
- "url": "http://newrelic.com/",
- "companyId": "new_relic"
- },
- "newscgp.com": {
- "name": "News Connect",
- "categoryId": 4,
- "url": "https://newscorp.com/",
- "companyId": "news_corp"
- },
- "newsmax": {
- "name": "Newsmax",
- "categoryId": 4,
- "url": "http://www.newsmax.com/",
- "companyId": "newsmax"
- },
- "newstogram": {
- "name": "Newstogram",
- "categoryId": 4,
- "url": "http://www.newstogram.com/",
- "companyId": "dailyme"
- },
- "newsupdatedir.info": {
- "name": "newsupdatedir.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "newsupdatewe.info": {
- "name": "newsupdatewe.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "newtention": {
- "name": "Newtention",
- "categoryId": 4,
- "url": "http://www.newtention.de/",
- "companyId": "next_audience"
- },
- "nexage": {
- "name": "Nexage",
- "categoryId": 4,
- "url": "http://www.nexage.com/",
- "companyId": "verizon"
- },
- "nexeps.com": {
- "name": "neXeps",
- "categoryId": 4,
- "url": "http://nexeps.com/",
- "companyId": null
- },
- "next_performance": {
- "name": "Next Performance",
- "categoryId": 4,
- "url": "http://www.nextperformance.com/",
- "companyId": "nextperf"
- },
- "next_user": {
- "name": "Next User",
- "categoryId": 4,
- "url": "https://www.nextuser.com/",
- "companyId": "next_user"
- },
- "nextag_roi_optimizer": {
- "name": "Nextag ROI Optimizer",
- "categoryId": 4,
- "url": "http://www.nextag.com/",
- "companyId": "nextag"
- },
- "nextclick": {
- "name": "Nextclick",
- "categoryId": 4,
- "url": "http://nextclick.pl/",
- "companyId": "leadbullet"
- },
- "nextstat": {
- "name": "NextSTAT",
- "categoryId": 6,
- "url": "http://www.nextstat.com/",
- "companyId": "nextstat"
- },
- "neytiv": {
- "name": "Neytiv",
- "categoryId": 6,
- "url": "http://neytiv.com/",
- "companyId": "neytiv"
- },
- "ngage_inc.": {
- "name": "NGage INC.",
- "categoryId": 6,
- "url": "https://www.nginx.com/",
- "companyId": "nginx"
- },
- "nice264.com": {
- "name": "Nice264",
- "categoryId": 0,
- "url": "http://nice264.com/",
- "companyId": null
- },
- "nimblecommerce": {
- "name": "NimbleCommerce",
- "categoryId": 4,
- "url": "http://www.nimblecommerce.com/",
- "companyId": "nimblecommerce"
- },
- "ninja_access_analysis": {
- "name": "Ninja Access Analysis",
- "categoryId": 6,
- "url": "http://www.ninja.co.jp/analysis/",
- "companyId": "samurai_factory"
- },
- "nirror": {
- "name": "Nirror",
- "categoryId": 6,
- "url": "https://www.nirror.com/",
- "companyId": "nirror"
- },
- "nitropay": {
- "name": "NitroPay",
- "categoryId": 4,
- "url": "https://nitropay.com/",
- "companyId": "gg_software"
- },
- "nk.pl_widgets": {
- "name": "NK.pl Widgets",
- "categoryId": 4,
- "url": "http://nk.pl",
- "companyId": "nk.pl"
- },
- "noaa.gov": {
- "name": "National Oceanic and Atmospheric Administration",
- "categoryId": 8,
- "url": "https://noaa.gov/",
- "companyId": null
- },
- "noddus": {
- "name": "Noddus",
- "categoryId": 4,
- "url": "https://www.enterprise.noddus.com/",
- "companyId": "noddus"
- },
- "nolix": {
- "name": "Nolix",
- "categoryId": 4,
- "url": "http://nolix.ru/",
- "companyId": "nolix"
- },
- "nonstop_consulting": {
- "name": "Resolution Media",
- "categoryId": 4,
- "url": "https://resolutionmedia.com/",
- "companyId": "resolution_media"
- },
- "noop.style": {
- "name": "noop.style",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nosto.com": {
- "name": "nosto",
- "categoryId": 6,
- "url": "http://www.nosto.com/",
- "companyId": null
- },
- "notify": {
- "name": "Notify",
- "categoryId": 4,
- "url": "http://notify.ag/en/",
- "companyId": null
- },
- "notifyfox": {
- "name": "Notifyfox",
- "categoryId": 6,
- "url": "https://notifyfox.com/",
- "companyId": "notifyfox"
- },
- "now_interact": {
- "name": "Now Interact",
- "categoryId": 6,
- "url": "http://nowinteract.com/",
- "companyId": "now_interact"
- },
- "npario": {
- "name": "nPario",
- "categoryId": 6,
- "url": "http://npario.com/",
- "companyId": "npario"
- },
- "nplexmedia": {
- "name": "nPlexMedia",
- "categoryId": 4,
- "url": "http://www.nplexmedia.com/",
- "companyId": "nplexmedia"
- },
- "nrelate": {
- "name": "nRelate",
- "categoryId": 2,
- "url": "http://nrelate.com/",
- "companyId": "iac_apps"
- },
- "ns8": {
- "name": "NS8",
- "categoryId": 4,
- "url": "https://www.ns8.com/",
- "companyId": null
- },
- "nt.vc": {
- "name": "Next Tuesday GmbH",
- "categoryId": 8,
- "url": "http://www.nexttuesday.de/",
- "companyId": null
- },
- "ntent": {
- "name": "NTENT",
- "categoryId": 4,
- "url": "http://www.verticalsearchworks.com",
- "companyId": "ntent"
- },
- "nttcom_online_marketing_solutions": {
- "name": "NTTCom Online Marketing Solutions",
- "categoryId": 6,
- "url": "http://www.digitalforest.co.jp/",
- "companyId": "nttcom_online_marketing_solutions"
- },
- "nuffnang": {
- "name": "Nuffnang",
- "categoryId": 4,
- "url": "http://nuffnang.com/",
- "companyId": "nuffnang"
- },
- "nugg.ad": {
- "name": "Nugg.Ad",
- "categoryId": 4,
- "url": "http://www.nugg.ad/",
- "companyId": "nugg.ad"
- },
- "nui_media": {
- "name": "NUI Media",
- "categoryId": 4,
- "url": "http://adjuggler.com/",
- "companyId": "nui_media"
- },
- "numbers.md": {
- "name": "Numbers.md",
- "categoryId": 6,
- "url": "https://numbers.md/",
- "companyId": "numbers.md"
- },
- "numerator": {
- "name": "Numerator",
- "categoryId": 5,
- "url": "http://www.channeliq.com/",
- "companyId": "numerator"
- },
- "ny_times_tagx": {
- "name": "NY Times TagX",
- "categoryId": 6,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "nyacampwk.com": {
- "name": "nyacampwk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyetm2mkch.com": {
- "name": "nyetm2mkch.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyt.com": {
- "name": "The New York Times",
- "categoryId": 8,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "o12zs3u2n.com": {
- "name": "o12zs3u2n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "o2.pl": {
- "name": "o2.pl",
- "categoryId": 8,
- "url": "https://www.o2.pl/",
- "companyId": "o2.pl"
- },
- "o2online.de": {
- "name": "o2online.de",
- "categoryId": 8,
- "url": "https://www.o2online.de/",
- "companyId": null
- },
- "oath_inc": {
- "name": "Oath",
- "categoryId": 8,
- "url": "https://www.oath.com/",
- "companyId": "verizon"
- },
- "observer": {
- "name": "Observer",
- "categoryId": 4,
- "url": "http://www.observerapp.com",
- "companyId": "observer"
- },
- "ocioso": {
- "name": "Ocioso",
- "categoryId": 7,
- "url": "http://ocioso.com.br/",
- "companyId": "ocioso"
- },
- "oclasrv.com": {
- "name": "oclasrv.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octapi.net": {
- "name": "octapi.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octavius": {
- "name": "Octavius",
- "categoryId": 4,
- "url": "http://octavius.rocks/",
- "companyId": "octavius"
- },
- "office.com": {
- "name": "office.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office.net": {
- "name": "office.net",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office365.com": {
- "name": "office365.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "oghub.io": {
- "name": "OG Hub",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "oh_my_stats": {
- "name": "Oh My Stats",
- "categoryId": 6,
- "url": "https://ohmystats.com/",
- "companyId": "oh_my_stats"
- },
- "ohana_advertising_network": {
- "name": "Ohana Advertising Network",
- "categoryId": 4,
- "url": "http://adohana.com/",
- "companyId": "ohana_advertising_network"
- },
- "olapic": {
- "name": "Olapic",
- "categoryId": 4,
- "url": "https://www.olapic.com/",
- "companyId": "olapic"
- },
- "olark": {
- "name": "Olark",
- "categoryId": 2,
- "url": "http://www.olark.com/",
- "companyId": "olark"
- },
- "olx-st.com": {
- "name": "OLX",
- "categoryId": 8,
- "url": "http://www.olx.com/",
- "companyId": null
- },
- "omarsys.com": {
- "name": "Omarsys",
- "categoryId": 4,
- "url": "http://omarsys.com/",
- "companyId": "xcaliber"
- },
- "ometria": {
- "name": "Ometria",
- "categoryId": 4,
- "url": "http://www.ometria.com/",
- "companyId": "ometria"
- },
- "omg": {
- "name": "OMG",
- "categoryId": 7,
- "url": "http://uk.omgpm.com/",
- "companyId": "optimise_media"
- },
- "omniconvert.com": {
- "name": "Omniconvert",
- "categoryId": 4,
- "url": "https://www.omniconvert.com/",
- "companyId": "omniconvert"
- },
- "omniscienta": {
- "name": "Omniscienta",
- "categoryId": 4,
- "url": "http://www.omniscienta.com/",
- "companyId": null
- },
- "oms": {
- "name": "OMS",
- "categoryId": 4,
- "url": "http://oms.eu/",
- "companyId": null
- },
- "onaudience": {
- "name": "OnAudience",
- "categoryId": 4,
- "url": "http://www.onaudience.com/",
- "companyId": "cloud_technologies"
- },
- "oneall": {
- "name": "Oneall",
- "categoryId": 7,
- "url": "http://www.oneall.com/",
- "companyId": "oneall"
- },
- "onefeed": {
- "name": "Onefeed",
- "categoryId": 6,
- "url": "http://www.onefeed.co.uk",
- "companyId": "onefeed"
- },
- "onesignal": {
- "name": "OneSignal",
- "categoryId": 5,
- "url": "https://onesignal.com/",
- "companyId": "onesignal"
- },
- "onestat": {
- "name": "OneStat",
- "categoryId": 6,
- "url": "http://www.onestat.com/",
- "companyId": "onestat_international_b.v."
- },
- "onet.pl": {
- "name": "onet",
- "categoryId": 8,
- "url": "https://www.onet.pl/",
- "companyId": null
- },
- "onetag": {
- "name": "OneTag",
- "categoryId": 4,
- "url": "https://www.onetag.com/",
- "companyId": "onetag"
- },
- "onetrust": {
- "name": "OneTrust",
- "categoryId": 5,
- "url": "https://www.onetrust.com/",
- "companyId": "onetrust"
- },
- "onfocus.io": {
- "name": "OnFocus",
- "categoryId": 4,
- "url": "http://onfocus.io/",
- "companyId": "onfocus"
- },
- "onlinewebstat": {
- "name": "Onlinewebstat",
- "categoryId": 6,
- "url": "http://www.onlinewebstats.com/index.php?lang=en",
- "companyId": "onlinewebstat"
- },
- "onswipe": {
- "name": "Onswipe",
- "categoryId": 4,
- "url": "http://www.onswipe.com/",
- "companyId": "onswipe"
- },
- "onthe.io": {
- "name": "OnThe.io",
- "categoryId": 6,
- "url": "https://t.onthe.io/media",
- "companyId": "onthe.io"
- },
- "ontraport_autopilot": {
- "name": "Ontraport Autopilot",
- "categoryId": 4,
- "url": "http://www.moon-ray.com/",
- "companyId": "ontraport"
- },
- "ooyala.com": {
- "name": "Ooyala Player",
- "categoryId": 0,
- "url": "https://www.ooyala.com/",
- "companyId": "telstra"
- },
- "ooyala_analytics": {
- "name": "Ooyala Analytics",
- "categoryId": 6,
- "url": "https://www.telstraglobal.com/",
- "companyId": "telstra"
- },
- "open_adexchange": {
- "name": "Open AdExchange",
- "categoryId": 4,
- "url": "http://openadex.dk/",
- "companyId": "open_adexchange"
- },
- "open_adstream": {
- "name": "Open Adstream",
- "categoryId": 4,
- "url": "https://www.appnexus.com/en",
- "companyId": "appnexus"
- },
- "open_share_count": {
- "name": "Open Share Count",
- "categoryId": 4,
- "url": "http://opensharecount.com/",
- "companyId": "open_share_count"
- },
- "openload": {
- "name": "Openload",
- "categoryId": 9,
- "url": "https://openload.co/",
- "companyId": null
- },
- "openstat": {
- "name": "OpenStat",
- "categoryId": 6,
- "url": "https://www.openstat.ru/",
- "companyId": "openstat"
- },
- "opentracker": {
- "name": "Opentracker",
- "categoryId": 6,
- "url": "http://www.opentracker.net/",
- "companyId": "opentracker"
- },
- "openwebanalytics": {
- "name": "Open Web Analytics",
- "categoryId": 6,
- "url": "http://www.openwebanalytics.com/",
- "companyId": "open_web_analytics"
- },
- "openx": {
- "name": "OpenX",
- "categoryId": 4,
- "url": "https://www.openx.com",
- "companyId": "openx"
- },
- "operative_media": {
- "name": "Operative Media",
- "categoryId": 4,
- "url": "http://www.operative.com/",
- "companyId": "operative_media"
- },
- "opinary": {
- "name": "Opinary",
- "categoryId": 2,
- "url": "http://opinary.com/",
- "companyId": "opinary"
- },
- "opinionbar": {
- "name": "OpinionBar",
- "categoryId": 2,
- "url": "http://www.metrixlab.com",
- "companyId": "metrixlab"
- },
- "oplytic": {
- "name": "Oplytic",
- "categoryId": 6,
- "url": "http://www.oplytic.com",
- "companyId": "oplytic"
- },
- "opta.net": {
- "name": "Opta",
- "categoryId": 6,
- "url": "http://www.optasports.de/",
- "companyId": "opta_sports"
- },
- "optaim": {
- "name": "OptAim",
- "categoryId": 4,
- "url": "http://optaim.com/",
- "companyId": "optaim"
- },
- "optanaon": {
- "name": "Optanaon by OneTrust",
- "categoryId": 5,
- "url": "https://www.cookielaw.org/",
- "companyId": "onetrust"
- },
- "optify": {
- "name": "Optify",
- "categoryId": 4,
- "url": "http://www.optify.net",
- "companyId": "optify"
- },
- "optimatic": {
- "name": "Optimatic",
- "categoryId": 0,
- "url": "http://www.optimatic.com/",
- "companyId": "optimatic"
- },
- "optimax_media_delivery": {
- "name": "Optimax Media Delivery",
- "categoryId": 4,
- "url": "http://optmd.com/",
- "companyId": "optimax_media_delivery"
- },
- "optimicdn.com": {
- "name": "OptimiCDN",
- "categoryId": 9,
- "url": "https://en.optimicdn.com/",
- "companyId": null
- },
- "optimizely": {
- "name": "Optimizely",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_error_log": {
- "name": "Optimizely Error Log",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_geo_targeting": {
- "name": "Optimizely Geographical Targeting",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_logging": {
- "name": "Optimizely Logging",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimonk": {
- "name": "Optimonk",
- "categoryId": 6,
- "url": "https://www.optimonk.com/",
- "companyId": "optimonk"
- },
- "optinmonster": {
- "name": "OptInMonster",
- "categoryId": 2,
- "url": "https://optinmonster.com/",
- "companyId": "optinmonster"
- },
- "optinproject.com": {
- "name": "OptinProject",
- "categoryId": 4,
- "url": "https://www.optincollect.com/en",
- "companyId": "optincollect"
- },
- "optomaton": {
- "name": "Optomaton",
- "categoryId": 4,
- "url": "http://www.optomaton.com/",
- "companyId": "ve"
- },
- "ora.tv": {
- "name": "Ora.TV",
- "categoryId": 4,
- "url": "http://www.ora.tv/",
- "companyId": "ora.tv"
- },
- "oracle_live_help": {
- "name": "Oracle Live Help",
- "categoryId": 2,
- "url": "http://www.oracle.com/us/products/applications/atg/live-help-on-demand/index.html",
- "companyId": "oracle"
- },
- "oracle_rightnow": {
- "name": "Oracle RightNow",
- "categoryId": 8,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "orange": {
- "name": "Orange",
- "categoryId": 4,
- "url": "http://www.orange.co.uk/",
- "companyId": "orange_mobile"
- },
- "orange142": {
- "name": "Orange142",
- "categoryId": 4,
- "url": "http://www.orange142.com/",
- "companyId": "orange142"
- },
- "orange_france": {
- "name": "Orange France",
- "categoryId": 8,
- "url": "https://www.orange.fr/",
- "companyId": "orange_france"
- },
- "orangesoda": {
- "name": "OrangeSoda",
- "categoryId": 4,
- "url": "http://www.orangesoda.com/",
- "companyId": "orangesoda"
- },
- "orc_international": {
- "name": "ORC International",
- "categoryId": 4,
- "url": "https://orcinternational.com/",
- "companyId": "engine_group"
- },
- "order_groove": {
- "name": "Order Groove",
- "categoryId": 4,
- "url": "http://ordergroove.com/",
- "companyId": "order_groove"
- },
- "orel_site": {
- "name": "Orel Site",
- "categoryId": 2,
- "url": "https://www.orelsite.ru/",
- "companyId": "orel_site"
- },
- "otclick": {
- "name": "otClick",
- "categoryId": 4,
- "url": "http://otclick-adv.ru/",
- "companyId": "otclick"
- },
- "othersearch.info": {
- "name": "FlowSurf",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "otm-r.com": {
- "name": "OTM",
- "categoryId": 4,
- "url": "http://otm-r.com/",
- "companyId": null
- },
- "otto.de": {
- "name": "Otto Group",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "outbrain": {
- "name": "Outbrain",
- "categoryId": 4,
- "url": "https://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_amplify": {
- "name": "Outbrain Amplify",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_analytics": {
- "name": "Outbrain Analytics",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_logger": {
- "name": "Outbrain Logger",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_pixel": {
- "name": "Outbrain Pixel",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_utilities": {
- "name": "Outbrain Utilities",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_widgets": {
- "name": "Outbrain Widgets",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "overheat.it": {
- "name": "overheat",
- "categoryId": 6,
- "url": "https://overheat.io/",
- "companyId": null
- },
- "owa": {
- "name": "OWA",
- "categoryId": 6,
- "url": "http://oewa.at/",
- "companyId": "the_austrian_web_analysis"
- },
- "owneriq": {
- "name": "OwnerIQ",
- "categoryId": 4,
- "url": "http://www.owneriq.com/",
- "companyId": "owneriq"
- },
- "ownpage": {
- "name": "Ownpage",
- "categoryId": 2,
- "url": "http://www.ownpage.fr/index.en.html",
- "companyId": null
- },
- "owox.com": {
- "name": "OWOX",
- "categoryId": 6,
- "url": "https://www.owox.com/",
- "companyId": "owox_inc"
- },
- "oxamedia": {
- "name": "OxaMedia",
- "categoryId": 2,
- "url": "http://www.oxamedia.com/",
- "companyId": "oxamedia"
- },
- "oxomi.com": {
- "name": "Oxomi",
- "categoryId": 4,
- "url": "https://oxomi.com/",
- "companyId": null
- },
- "pageanalytics.space": {
- "name": "pageanalytics.space",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pagefair": {
- "name": "PageFair",
- "categoryId": 2,
- "url": "https://pagefair.com/",
- "companyId": "blockthrough"
- },
- "pagescience": {
- "name": "PageScience",
- "categoryId": 4,
- "url": "http://www.precisionhealthmedia.com/index.html",
- "companyId": "pagescience"
- },
- "paid-to-promote": {
- "name": "Paid-To-Promote",
- "categoryId": 4,
- "url": "http://www.paid-to-promote.net/",
- "companyId": "paid-to-promote"
- },
- "paperg": {
- "name": "PaperG",
- "categoryId": 4,
- "url": "http://www.paperg.com/",
- "companyId": "paperg"
- },
- "pardot": {
- "name": "Pardot",
- "categoryId": 6,
- "url": "http://www.pardot.com/",
- "companyId": "pardot"
- },
- "parsely": {
- "name": "Parse.ly",
- "categoryId": 6,
- "url": "https://www.parse.ly/",
- "companyId": "parse.ly"
- },
- "partner-ads": {
- "name": "Partner-Ads",
- "categoryId": 4,
- "url": "http://www.partner-ads.com/",
- "companyId": "partner-ads"
- },
- "passionfruit": {
- "name": "Passionfruit",
- "categoryId": 4,
- "url": "http://passionfruitads.com/",
- "companyId": "passionfruit"
- },
- "pathful": {
- "name": "Pathful",
- "categoryId": 6,
- "url": "http://www.pathful.com/",
- "companyId": "pathful"
- },
- "pay-hit": {
- "name": "Pay-Hit",
- "categoryId": 4,
- "url": "http://pay-hit.com/",
- "companyId": "pay-hit"
- },
- "payclick": {
- "name": "PayClick",
- "categoryId": 4,
- "url": "http://payclick.it/",
- "companyId": "payclick"
- },
- "paykickstart": {
- "name": "PayKickstart",
- "categoryId": 6,
- "url": "https://paykickstart.com/",
- "companyId": "paykickstart"
- },
- "paypal": {
- "name": "PayPal",
- "categoryId": 2,
- "url": "https://www.paypal.com",
- "companyId": "ebay"
- },
- "pcvark.com": {
- "name": "pcvark.com",
- "categoryId": 11,
- "url": "https://pcvark.com/",
- "companyId": null
- },
- "peer39": {
- "name": "Peer39",
- "categoryId": 4,
- "url": "http://www.peer39.com/",
- "companyId": "peer39"
- },
- "peer5.com": {
- "name": "Peer5",
- "categoryId": 9,
- "url": "https://www.peer5.com/",
- "companyId": "peer5"
- },
- "peerius": {
- "name": "Peerius",
- "categoryId": 2,
- "url": "http://www.peerius.com/",
- "companyId": "peerius"
- },
- "pendo.io": {
- "name": "pendo",
- "categoryId": 6,
- "url": "https://www.pendo.io/",
- "companyId": null
- },
- "pepper.com": {
- "name": "Pepper",
- "categoryId": 4,
- "url": "https://www.pepper.com/",
- "companyId": "6minutes"
- },
- "pepperjam": {
- "name": "Pepperjam",
- "categoryId": 4,
- "url": "http://www.pepperjam.com",
- "companyId": "pepperjam"
- },
- "pepsia": {
- "name": "Pepsia",
- "categoryId": 6,
- "url": "http://pepsia.com/en/",
- "companyId": "pepsia"
- },
- "perfdrive.com": {
- "name": "perfdrive.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "perfect_audience": {
- "name": "Perfect Audience",
- "categoryId": 4,
- "url": "https://www.perfectaudience.com/",
- "companyId": "perfect_audience"
- },
- "perfect_market": {
- "name": "Perfect Market",
- "categoryId": 4,
- "url": "http://perfectmarket.com/",
- "companyId": "perfect_market"
- },
- "perform_group": {
- "name": "Perform Group",
- "categoryId": 5,
- "url": "http://www.performgroup.co.uk/",
- "companyId": "perform_group"
- },
- "performable": {
- "name": "Performable",
- "categoryId": 6,
- "url": "http://www.performable.com/",
- "companyId": "hubspot"
- },
- "performancing_metrics": {
- "name": "Performancing Metrics",
- "categoryId": 6,
- "url": "http://pmetrics.performancing.com",
- "companyId": "performancing"
- },
- "performax": {
- "name": "Performax",
- "categoryId": 4,
- "url": "https://www.performax.cz/",
- "companyId": "performax"
- },
- "perimeterx.net": {
- "name": "Perimeterx",
- "categoryId": 6,
- "url": "https://www.perimeterx.com/",
- "companyId": null
- },
- "permutive": {
- "name": "Permutive",
- "categoryId": 4,
- "url": "http://permutive.com/",
- "companyId": "permutive"
- },
- "persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.be/",
- "companyId": "de_persgroep"
- },
- "persianstat": {
- "name": "PersianStat",
- "categoryId": 6,
- "url": "http://www.persianstat.com",
- "companyId": "persianstat"
- },
- "persio": {
- "name": "Persio",
- "categoryId": 4,
- "url": "http://www.pers.io/",
- "companyId": "pers.io"
- },
- "personyze": {
- "name": "Personyze",
- "categoryId": 2,
- "url": "http://personyze.com/",
- "companyId": "personyze"
- },
- "petametrics": {
- "name": "LiftIgniter",
- "categoryId": 2,
- "url": "https://www.liftigniter.com/",
- "companyId": "liftigniter"
- },
- "pheedo": {
- "name": "Pheedo",
- "categoryId": 4,
- "url": "http://pheedo.com/",
- "companyId": "pheedo"
- },
- "phonalytics": {
- "name": "Phonalytics",
- "categoryId": 2,
- "url": "http://www.phonalytics.com/",
- "companyId": "phonalytics"
- },
- "phunware": {
- "name": "Phunware",
- "categoryId": 4,
- "url": "https://www.phunware.com",
- "companyId": "phunware"
- },
- "piguiqproxy.com": {
- "name": "piguiqproxy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pilot": {
- "name": "Pilot",
- "categoryId": 6,
- "url": "http://www.pilot.de/en/home.html",
- "companyId": "pilot_gmbh"
- },
- "pingdom": {
- "name": "Pingdom",
- "categoryId": 6,
- "url": "https://www.pingdom.com/",
- "companyId": "pingdom"
- },
- "pinterest": {
- "name": "Pinterest",
- "categoryId": 7,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pinterest_conversion_tracker": {
- "name": "Pinterest Conversion Tracker",
- "categoryId": 6,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pipz": {
- "name": "Pipz",
- "categoryId": 4,
- "url": "https://pipz.com/br/",
- "companyId": "pipz_automation"
- },
- "piwik": {
- "name": "Tombstone (Matomo/Piwik before the split)",
- "categoryId": 6,
- "url": "http://piwik.org/",
- "companyId": "matomo"
- },
- "piwik_pro_analytics_suite": {
- "name": "Piwik PRO Analytics Suite",
- "categoryId": 6,
- "url": "https://piwik.pro/",
- "companyId": "piwik_pro"
- },
- "pixalate": {
- "name": "Pixalate",
- "categoryId": 4,
- "url": "http://www.pixalate.com/",
- "companyId": "pixalate"
- },
- "pixel_union": {
- "name": "Pixel Union",
- "categoryId": 4,
- "url": "https://www.pixelunion.net/",
- "companyId": "pixel_union"
- },
- "pixfuture": {
- "name": "PixFuture",
- "categoryId": 4,
- "url": "http://www.pixfuture.com",
- "companyId": "pixfuture"
- },
- "piximedia": {
- "name": "Piximedia",
- "categoryId": 4,
- "url": "http://www.piximedia.com/piximedia?en",
- "companyId": "piximedia"
- },
- "pizzaandads_com": {
- "name": "pizzaandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "placester": {
- "name": "Placester",
- "categoryId": 4,
- "url": "https://placester.com/",
- "companyId": "placester"
- },
- "pladform.ru": {
- "name": "Pladform",
- "categoryId": 4,
- "url": "https://distribution.pladform.ru/",
- "companyId": "pladform"
- },
- "plan.net_experience_cloud": {
- "name": "Plan.net Experience Cloud",
- "categoryId": 6,
- "url": "https://www.serviceplan.com/",
- "companyId": "serviceplan"
- },
- "platform360": {
- "name": "Platform360",
- "categoryId": 4,
- "url": "http://www.platform360.co/#home",
- "companyId": null
- },
- "platformone": {
- "name": "Platform One",
- "categoryId": 4,
- "url": "https://www.platform-one.co.jp/",
- "companyId": "daconsortium"
- },
- "play_by_mamba": {
- "name": "Play by Mamba",
- "categoryId": 4,
- "url": "http://play.mamba.ru/",
- "companyId": "mamba"
- },
- "playbuzz.com": {
- "name": "Playbuzz",
- "categoryId": 2,
- "url": "https://www.playbuzz.com/",
- "companyId": "playbuzz"
- },
- "plenty_of_fish": {
- "name": "Plenty Of Fish",
- "categoryId": 6,
- "url": "http://www.pof.com/",
- "companyId": "plentyoffish"
- },
- "plex_metrics": {
- "name": "Plex Metrics",
- "categoryId": 6,
- "url": "https://www.plex.tv/",
- "companyId": "plex"
- },
- "plista": {
- "name": "Plista",
- "categoryId": 4,
- "url": "http://www.plista.com",
- "companyId": "plista"
- },
- "plugrush": {
- "name": "PlugRush",
- "categoryId": 4,
- "url": "http://www.plugrush.com/",
- "companyId": "plugrush"
- },
- "pluso.ru": {
- "name": "Pluso",
- "categoryId": 7,
- "url": "https://share.pluso.ru/",
- "companyId": "pluso"
- },
- "plutusads": {
- "name": "Plutusads",
- "categoryId": 4,
- "url": "http://plutusads.com",
- "companyId": "plutusads"
- },
- "pmddby.com": {
- "name": "pmddby.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "pnamic.com": {
- "name": "pnamic.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "po.st": {
- "name": "Po.st",
- "categoryId": 7,
- "url": "https://www.po.st/",
- "companyId": "rythmone"
- },
- "pocket": {
- "name": "Pocket",
- "categoryId": 6,
- "url": "http://getpocket.com/",
- "companyId": "pocket"
- },
- "pocketcents": {
- "name": "PocketCents",
- "categoryId": 4,
- "url": "http://pocketcents.com/",
- "companyId": "pocketcents"
- },
- "pointific": {
- "name": "Pointific",
- "categoryId": 6,
- "url": "http://www.pontiflex.com/",
- "companyId": "pontiflex"
- },
- "pointroll": {
- "name": "PointRoll",
- "categoryId": 4,
- "url": "http://www.pointroll.com/",
- "companyId": "gannett_digital_media_network"
- },
- "poirreleast.club": {
- "name": "poirreleast.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "polar.me": {
- "name": "Polar",
- "categoryId": 4,
- "url": "https://polar.me/",
- "companyId": "polar_inc"
- },
- "polldaddy": {
- "name": "Polldaddy",
- "categoryId": 2,
- "url": "http://polldaddy.com/",
- "companyId": "automattic"
- },
- "polyad": {
- "name": "PolyAd",
- "categoryId": 4,
- "url": "http://polyad.net",
- "companyId": "polyad"
- },
- "polyfill.io": {
- "name": "Polyfill",
- "categoryId": 8,
- "url": "https://polyfill.io/",
- "companyId": "polyfill.io"
- },
- "popads": {
- "name": "PopAds",
- "categoryId": 4,
- "url": "https://www.popads.net/",
- "companyId": "popads"
- },
- "popcash": {
- "name": "Popcash",
- "categoryId": 4,
- "url": "http://popcash.net/",
- "companyId": "popcash_network"
- },
- "popcorn_metrics": {
- "name": "Popcorn Metrics",
- "categoryId": 6,
- "url": "https://www.popcornmetrics.com/",
- "companyId": "popcorn_metrics"
- },
- "popin.cc": {
- "name": "popIn",
- "categoryId": 7,
- "url": "https://www.popin.cc/",
- "companyId": "popin"
- },
- "popmyads": {
- "name": "PopMyAds",
- "categoryId": 4,
- "url": "http://popmyads.com/",
- "companyId": "popmyads"
- },
- "poponclick": {
- "name": "PopOnClick",
- "categoryId": 4,
- "url": "http://poponclick.com",
- "companyId": "poponclick"
- },
- "populis": {
- "name": "Populis",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "pornhub": {
- "name": "PornHub",
- "categoryId": 3,
- "url": "https://www.pornhub.com/",
- "companyId": "pornhub"
- },
- "pornwave": {
- "name": "Pornwave",
- "categoryId": 3,
- "url": "http://pornwave.com",
- "companyId": "pornwave.com"
- },
- "porta_brazil": {
- "name": "Porta Brazil",
- "categoryId": 4,
- "url": "http://brasil.gov.br/",
- "companyId": "portal_brazil"
- },
- "post_affiliate_pro": {
- "name": "Post Affiliate Pro",
- "categoryId": 4,
- "url": "http://www.qualityunit.com/",
- "companyId": "qualityunit"
- },
- "powerlinks": {
- "name": "PowerLinks",
- "categoryId": 4,
- "url": "http://www.powerlinks.com/",
- "companyId": "powerlinks"
- },
- "powerreviews": {
- "name": "PowerReviews",
- "categoryId": 2,
- "url": "http://www.powerreviews.com/",
- "companyId": "powerreviews"
- },
- "powr.io": {
- "name": "POWr",
- "categoryId": 6,
- "url": "https://www.powr.io/",
- "companyId": "powr"
- },
- "pozvonim": {
- "name": "Pozvonim",
- "categoryId": 4,
- "url": "https://pozvonim.com/",
- "companyId": "pozvonim"
- },
- "prebid": {
- "name": "Prebid",
- "categoryId": 4,
- "url": "http://prebid.org/",
- "companyId": null
- },
- "precisionclick": {
- "name": "PrecisionClick",
- "categoryId": 4,
- "url": "http://www.precisionclick.com/",
- "companyId": "precisionclick"
- },
- "predicta": {
- "name": "Predicta",
- "categoryId": 4,
- "url": "http://predicta.com.br/",
- "companyId": "predicta"
- },
- "premonix": {
- "name": "Premonix",
- "categoryId": 4,
- "url": "http://www.premonix.com/",
- "companyId": "premonix"
- },
- "press": {
- "name": "Press+",
- "categoryId": 4,
- "url": "http://www.mypressplus.com/",
- "companyId": "press+"
- },
- "pressly": {
- "name": "Pressly",
- "categoryId": 4,
- "url": "https://www.pressly.com/",
- "companyId": "pressly"
- },
- "pricegrabber": {
- "name": "PriceGrabber",
- "categoryId": 4,
- "url": "http://www.pricegrabber.com",
- "companyId": "pricegrabber"
- },
- "pricespider": {
- "name": "Pricespider",
- "categoryId": 4,
- "url": "http://www.pricespider.com/",
- "companyId": "price_spider"
- },
- "prismamediadigital.com": {
- "name": "Prisma Media Digital",
- "categoryId": 4,
- "url": "http://www.pmdrecrute.com/",
- "companyId": "prisma_media_digital"
- },
- "privy.com": {
- "name": "Privy",
- "categoryId": 2,
- "url": "https://privy.com/",
- "companyId": "privy"
- },
- "proclivity": {
- "name": "Proclivity",
- "categoryId": 4,
- "url": "http://www.proclivitysystems.com/",
- "companyId": "proclivity_media"
- },
- "prodperfect": {
- "name": "ProdPerfect",
- "categoryId": 6,
- "url": "https://prodperfect.com/",
- "companyId": "prodperfect"
- },
- "productsup": {
- "name": "ProductsUp",
- "categoryId": 4,
- "url": "https://productsup.io/",
- "companyId": "productsup"
- },
- "profiliad": {
- "name": "Profiliad",
- "categoryId": 6,
- "url": "http://profiliad.com/",
- "companyId": "profiliad"
- },
- "profitshare": {
- "name": "Profitshare",
- "categoryId": 6,
- "url": "https://profitshare.ro/",
- "companyId": "profitshare"
- },
- "proformics": {
- "name": "Proformics",
- "categoryId": 6,
- "url": "http://proformics.com/",
- "companyId": "proformics_digital"
- },
- "programattik": {
- "name": "Programattik",
- "categoryId": 4,
- "url": "http://www.programattik.com/",
- "companyId": "ttnet"
- },
- "project_wonderful": {
- "name": "Project Wonderful",
- "categoryId": 4,
- "url": "http://www.projectwonderful.com/",
- "companyId": "project_wonderful"
- },
- "propel_marketing": {
- "name": "Propel Marketing",
- "categoryId": 4,
- "url": "http://propelmarketing.com/",
- "companyId": "propel_marketing"
- },
- "propeller_ads": {
- "name": "Propeller Ads",
- "categoryId": 4,
- "url": "http://www.propellerads.com/",
- "companyId": "propeller_ads"
- },
- "propermedia": {
- "name": "Proper Media",
- "categoryId": 4,
- "url": "https://proper.io/",
- "companyId": "propermedia"
- },
- "props": {
- "name": "Props",
- "categoryId": 4,
- "url": "http://props.id/",
- "companyId": "props"
- },
- "propvideo_net": {
- "name": "propvideo.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "prospecteye": {
- "name": "ProspectEye",
- "categoryId": 4,
- "url": "https://www.prospecteye.com/",
- "companyId": "prospecteye"
- },
- "prosperent": {
- "name": "Prosperent",
- "categoryId": 4,
- "url": "http://prosperent.com",
- "companyId": "prosperent"
- },
- "prostor": {
- "name": "Prostor",
- "categoryId": 4,
- "url": "http://prostor-lite.ru/",
- "companyId": "prostor"
- },
- "provide_support": {
- "name": "Provide Support",
- "categoryId": 2,
- "url": "http://www.providesupport.com/",
- "companyId": "provide_support"
- },
- "proximic": {
- "name": "Proximic",
- "categoryId": 4,
- "url": "http://www.proximic.com/",
- "companyId": "proximic"
- },
- "proxistore.com": {
- "name": "Proxistore",
- "categoryId": 4,
- "url": "https://www.proxistore.com/",
- "companyId": "proxistore"
- },
- "pscp.tv": {
- "name": "Periscope",
- "categoryId": 7,
- "url": "https://www.pscp.tv/",
- "companyId": "periscope"
- },
- "pstatic.net": {
- "name": "Naver CDN",
- "categoryId": 9,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "psyma": {
- "name": "Psyma",
- "categoryId": 4,
- "url": "http://www.psyma.com/",
- "companyId": "psyma"
- },
- "pt_engine": {
- "name": "Pt engine",
- "categoryId": 6,
- "url": "http://www.ptengine.jp/",
- "companyId": "pt_engine"
- },
- "pub-fit": {
- "name": "Pub-Fit",
- "categoryId": 4,
- "url": "http://www.pub-fit.com/",
- "companyId": "pub-fit"
- },
- "pub.network": {
- "name": "pub.network",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "pubble": {
- "name": "Pubble",
- "categoryId": 2,
- "url": "http://www.pubble.co/",
- "companyId": "pubble"
- },
- "pubdirecte": {
- "name": "Pubdirecte",
- "categoryId": 4,
- "url": "http://www.pubdirecte.com/",
- "companyId": "pubdirecte"
- },
- "pubgears": {
- "name": "PubGears",
- "categoryId": 4,
- "url": "http://pubgears.com/",
- "companyId": "pubgears"
- },
- "public_ideas": {
- "name": "Public Ideas",
- "categoryId": 4,
- "url": "http://www.publicidees.co.uk/",
- "companyId": "public-idees"
- },
- "publicidad.net": {
- "name": "Publicidad.net",
- "categoryId": 4,
- "url": "http://www.en.publicidad.net/",
- "companyId": "publicidad.net"
- },
- "publir": {
- "name": "Publir",
- "categoryId": 4,
- "url": "http://www.publir.com",
- "companyId": "publir"
- },
- "pubmatic": {
- "name": "PubMatic",
- "categoryId": 4,
- "url": "http://www.pubmatic.com/",
- "companyId": "pubmatic"
- },
- "pubnub.com": {
- "name": "PubNub",
- "categoryId": 8,
- "url": "https://www.pubnub.com/",
- "companyId": null
- },
- "puboclic": {
- "name": "Puboclic",
- "categoryId": 4,
- "url": "http://www.puboclic.com/",
- "companyId": "puboclic"
- },
- "pulpix.com": {
- "name": "Pulpix",
- "categoryId": 4,
- "url": "https://www.pulpix.com/",
- "companyId": "adyoulike"
- },
- "pulpo_media": {
- "name": "Pulpo Media",
- "categoryId": 4,
- "url": "http://www.pulpomedia.com/home.html",
- "companyId": "pulpo_media"
- },
- "pulse360": {
- "name": "Pulse360",
- "categoryId": 4,
- "url": "http://www.pulse360.com",
- "companyId": "pulse360"
- },
- "pulse_insights": {
- "name": "Pulse Insights",
- "categoryId": 6,
- "url": "http://pulseinsights.com/",
- "companyId": "pulse_insights"
- },
- "pulsepoint": {
- "name": "PulsePoint",
- "categoryId": 4,
- "url": "http://www.contextweb.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "punchtab": {
- "name": "PunchTab",
- "categoryId": 4,
- "url": "http://www.punchtab.com/",
- "companyId": "punchtab"
- },
- "purch": {
- "name": "Purch",
- "categoryId": 4,
- "url": "http://www.purch.com/",
- "companyId": "purch"
- },
- "pure_chat": {
- "name": "Pure Chat",
- "categoryId": 2,
- "url": "https://www.purechat.com",
- "companyId": "pure_chat"
- },
- "pureprofile": {
- "name": "Pureprofile",
- "categoryId": 6,
- "url": "https://www.pureprofile.com/us/",
- "companyId": "pureprofile"
- },
- "purlive": {
- "name": "PurLive",
- "categoryId": 4,
- "url": "http://www.purlive.com/",
- "companyId": "purlive"
- },
- "puserving.com": {
- "name": "puserving.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "push.world": {
- "name": "Push.world",
- "categoryId": 2,
- "url": "https://push.world/en",
- "companyId": "push.world"
- },
- "push_engage": {
- "name": "Push Engage",
- "categoryId": 2,
- "url": "https://www.pushengage.com/",
- "companyId": "push_engage"
- },
- "pushame.com": {
- "name": "pushame.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushbullet": {
- "name": "Pushbullet",
- "categoryId": 2,
- "url": "https://www.pushbullet.com/",
- "companyId": "pushbullet"
- },
- "pushcrew": {
- "name": "VWO Engage",
- "categoryId": 2,
- "url": "https://vwo.com/engage/",
- "companyId": "wingify"
- },
- "pusher.com": {
- "name": "Pusher",
- "categoryId": 6,
- "url": "https://pusher.com/",
- "companyId": null
- },
- "pushnative.com": {
- "name": "pushnative.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushnews": {
- "name": "Pushnews",
- "categoryId": 4,
- "url": "https://www.pushnews.eu/",
- "companyId": "pushnews"
- },
- "pushno.com": {
- "name": "pushno.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwhy.com": {
- "name": "pushwhy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwoosh.com": {
- "name": "Pushwoosh",
- "categoryId": 2,
- "url": "https://www.pushwoosh.com/",
- "companyId": "pushwoosh"
- },
- "pvclouds.com": {
- "name": "pvclouds.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "q1media": {
- "name": "Q1Media",
- "categoryId": 4,
- "url": "http://q1media.com/",
- "companyId": "q1media"
- },
- "q_division": {
- "name": "Q-Division",
- "categoryId": 4,
- "url": "https://q-division.de/",
- "companyId": null
- },
- "qbaka": {
- "name": "Qbaka",
- "categoryId": 6,
- "url": "https://qbaka.com/",
- "companyId": "qbaka"
- },
- "qcri_analytics": {
- "name": "QCRI Analytics",
- "categoryId": 6,
- "url": "http://qcri.org/",
- "companyId": "qatar_computing_research_institute"
- },
- "qeado": {
- "name": "Qeado",
- "categoryId": 6,
- "url": "https://www.qeado.com/",
- "companyId": "qeado"
- },
- "qihoo_360": {
- "name": "Qihoo 360",
- "categoryId": 6,
- "url": "https://www.360totalsecurity.com/en/",
- "companyId": "qihoo_360_technology"
- },
- "qq.com": {
- "name": "qq.com",
- "categoryId": 8,
- "url": "http://www.qq.com/",
- "companyId": "qq.com"
- },
- "qrius": {
- "name": "Qrius",
- "categoryId": 7,
- "url": "http://www.qrius.me/",
- "companyId": "mediafed"
- },
- "qualaroo": {
- "name": "Qualaroo",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "qualia": {
- "name": "Qualia",
- "categoryId": 4,
- "url": "http://www.bluecava.com/",
- "companyId": "qualia"
- },
- "qualtrics": {
- "name": "Qualtrics",
- "categoryId": 6,
- "url": "http://www.qualtrics.com/",
- "companyId": "qualtrics"
- },
- "quantcast": {
- "name": "Quantcast",
- "categoryId": 4,
- "url": "http://www.quantcast.com/",
- "companyId": "quantcast"
- },
- "quantcount": {
- "name": "Quantcount",
- "categoryId": 6,
- "url": "http://www.quantcast.com",
- "companyId": "quantcast"
- },
- "quantum_metric": {
- "name": "Quantum Metric",
- "categoryId": 6,
- "url": "https://www.quantummetric.com/",
- "companyId": "quantum_metric"
- },
- "quartic.pl": {
- "name": "Quartic",
- "categoryId": 6,
- "url": "https://www.quarticon.com/",
- "companyId": "quarticon"
- },
- "qubit": {
- "name": "Qubit Opentag",
- "categoryId": 6,
- "url": "http://www.qubit.com/",
- "companyId": "qubit"
- },
- "questback": {
- "name": "Questback",
- "categoryId": 2,
- "url": "http://www1.questback.com/",
- "companyId": "questback"
- },
- "queue-it": {
- "name": "Queue-it",
- "categoryId": 6,
- "url": "https://queue-it.com/",
- "companyId": null
- },
- "quick-counter.net": {
- "name": "Quick-counter.net",
- "categoryId": 6,
- "url": "http://www.quick-counter.net/",
- "companyId": "quick-counter.net"
- },
- "quigo_adsonar": {
- "name": "Quigo AdSonar",
- "categoryId": 4,
- "url": "http://www.quigo.com",
- "companyId": "verizon"
- },
- "quinstreet": {
- "name": "QuinStreet",
- "categoryId": 4,
- "url": "http://www.quinstreet.com/",
- "companyId": "quinstreet"
- },
- "quintelligence": {
- "name": "Quintelligence",
- "categoryId": 6,
- "url": "http://www.quintelligence.com/",
- "companyId": "quintelligence"
- },
- "quisma": {
- "name": "Quisma",
- "categoryId": 4,
- "url": "http://www.quisma.com/en/",
- "companyId": "wpp"
- },
- "quora.com": {
- "name": "Quora",
- "categoryId": 7,
- "url": "https://quora.com/",
- "companyId": null
- },
- "r_advertising": {
- "name": "R-Advertising",
- "categoryId": 4,
- "url": "http://www.r-advertising.com/",
- "companyId": "r-advertising"
- },
- "rackcdn.com": {
- "name": "Rackspace",
- "categoryId": 9,
- "url": "https://www.rackspace.com/",
- "companyId": null
- },
- "radarurl": {
- "name": "RadarURL",
- "categoryId": 6,
- "url": "http://radarurl.com/",
- "companyId": "radarurl"
- },
- "radial": {
- "name": "Radial",
- "categoryId": 4,
- "url": "http://www.clearsaleing.com/",
- "companyId": "radial"
- },
- "radiumone": {
- "name": "RadiumOne",
- "categoryId": 4,
- "url": "http://www.radiumone.com/index.html",
- "companyId": "rythmone"
- },
- "raisenow": {
- "name": "RaiseNow",
- "categoryId": 6,
- "url": "https://www.raisenow.com/de",
- "companyId": "raisenow"
- },
- "rakuten_display": {
- "name": "Rakuten Display",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/display",
- "companyId": "rakuten"
- },
- "rakuten_globalmarket": {
- "name": "Rakuten",
- "categoryId": 4,
- "url": "https://www.rakuten.co.jp/",
- "companyId": "rakuten"
- },
- "rakuten_widget": {
- "name": "Rakuten Widget",
- "categoryId": 4,
- "url": "http://global.rakuten.com/corp/",
- "companyId": "rakuten"
- },
- "rambler": {
- "name": "Rambler",
- "categoryId": 6,
- "url": "https://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_count": {
- "name": "Rambler Count",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_widget": {
- "name": "Rambler Widget",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rapidspike": {
- "name": "RapidSpike",
- "categoryId": 6,
- "url": "https://www.rapidspike.com",
- "companyId": "rapidspike"
- },
- "ravelin": {
- "name": "Ravelin",
- "categoryId": 6,
- "url": "https://www.ravelin.com/",
- "companyId": null
- },
- "rawgit": {
- "name": "RawGit",
- "categoryId": 9,
- "url": "http://rawgit.com/",
- "companyId": null
- },
- "raygun": {
- "name": "Raygun",
- "categoryId": 4,
- "url": "https://raygun.com/",
- "companyId": "raygun"
- },
- "rbc_counter": {
- "name": "RBC Counter",
- "categoryId": 6,
- "url": "http://www.rbc.ru/",
- "companyId": "rbc_group"
- },
- "rcs.it": {
- "name": "RCS",
- "categoryId": 4,
- "url": "http://www.rcsmediagroup.it/",
- "companyId": "rcs"
- },
- "rd_station": {
- "name": "RD Station",
- "categoryId": 6,
- "url": "http://www.rdstation.com/en/",
- "companyId": "rd_station"
- },
- "reachforce": {
- "name": "ReachForce",
- "categoryId": 6,
- "url": "http://www.reachforce.com/",
- "companyId": "reachforce"
- },
- "reachjunction": {
- "name": "ReachJunction",
- "categoryId": 4,
- "url": "http://www.reachjunction.com/",
- "companyId": "reachjunction"
- },
- "reachlocal": {
- "name": "ReachLocal",
- "categoryId": 4,
- "url": "http://www.reachlocal.com/",
- "companyId": "reachlocal"
- },
- "reactful": {
- "name": "Reactful",
- "categoryId": 4,
- "url": "http://www.reactful.com/",
- "companyId": "reactful"
- },
- "reactivpub": {
- "name": "Reactivpub",
- "categoryId": 6,
- "url": "http://www.reactivpub.com/",
- "companyId": "r-advertising"
- },
- "reactx": {
- "name": "ReactX",
- "categoryId": 4,
- "url": "http://home.skinected.com",
- "companyId": "reactx"
- },
- "readerboard": {
- "name": "ReaderBoard",
- "categoryId": 7,
- "url": "http://www.readrboard.com",
- "companyId": "centre_phi"
- },
- "readme": {
- "name": "ReadMe",
- "categoryId": 6,
- "url": "https://readme.com/",
- "companyId": "readme"
- },
- "readspeaker.com": {
- "name": "ReadSpeaker",
- "categoryId": 2,
- "url": "https://www.readspeaker.com/",
- "companyId": null
- },
- "realclick": {
- "name": "RealClick",
- "categoryId": 4,
- "url": "http://www.realclick.co.kr/",
- "companyId": "realclick"
- },
- "realperson.de": {
- "name": "Realperson Chat",
- "categoryId": 2,
- "url": "http://www.optimise-it.de/",
- "companyId": "optimise_it"
- },
- "realtime": {
- "name": "Realtime",
- "categoryId": 2,
- "url": "http://www.realtime.co/",
- "companyId": "realtime"
- },
- "realytics": {
- "name": "Realytics",
- "categoryId": 6,
- "url": "https://www.realytics.io/",
- "companyId": "realytics"
- },
- "rebel_mouse": {
- "name": "Rebel Mouse",
- "categoryId": 6,
- "url": "https://www.rebelmouse.com/",
- "companyId": "rebelmouse"
- },
- "recettes.net": {
- "name": "Recettes.net",
- "categoryId": 8,
- "url": "http://www.recettes.net/",
- "companyId": "recettes.net"
- },
- "recopick": {
- "name": "RecoPick",
- "categoryId": 4,
- "url": "https://recopick.com/",
- "companyId": "recopick"
- },
- "recreativ": {
- "name": "Recreativ",
- "categoryId": 4,
- "url": "http://recreativ.ru/",
- "companyId": "recreativ"
- },
- "recruitics": {
- "name": "Recruitics",
- "categoryId": 6,
- "url": "http://recruitics.com/",
- "companyId": "recruitics"
- },
- "red_ventures": {
- "name": "Red Ventures",
- "categoryId": 6,
- "url": "https://www.redventures.com/",
- "companyId": "red_ventures"
- },
- "redblue_de": {
- "name": "redblue",
- "categoryId": 6,
- "url": "https://www.redblue.de/",
- "companyId": null
- },
- "redcdn.pl": {
- "name": "redGalaxy CDN",
- "categoryId": 9,
- "url": "http://www.atendesoftware.pl/",
- "companyId": "atende_software"
- },
- "reddit": {
- "name": "Reddit",
- "categoryId": 7,
- "url": "http://reddit.com",
- "companyId": "reddit"
- },
- "redhelper": {
- "name": "RedHelper",
- "categoryId": 2,
- "url": "http://redhelper.com/",
- "companyId": "redhelper"
- },
- "redlotus": {
- "name": "RedLotus",
- "categoryId": 4,
- "url": "http://triggit.com/",
- "companyId": "redlotus"
- },
- "redtram": {
- "name": "RedTram",
- "categoryId": 4,
- "url": "http://www.redtram.com/",
- "companyId": "redtram"
- },
- "redtube.com": {
- "name": "redtube.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "redux_media": {
- "name": "Redux Media",
- "categoryId": 4,
- "url": "http://reduxmedia.com/",
- "companyId": "redux_media"
- },
- "reed_business_information": {
- "name": "Reed Business Information",
- "categoryId": 6,
- "url": "http://www.reedbusiness.com/",
- "companyId": "andera_partners"
- },
- "reembed.com": {
- "name": "reEmbed",
- "categoryId": 0,
- "url": "https://www.reembed.com/",
- "companyId": "reembed"
- },
- "reevoo.com": {
- "name": "Reevoo",
- "categoryId": 4,
- "url": "https://www.reevoo.com/en/",
- "companyId": "reevoo"
- },
- "refericon": {
- "name": "Refericon",
- "categoryId": 4,
- "url": "https://refericon.pl/#",
- "companyId": "refericon"
- },
- "referlocal": {
- "name": "ReferLocal",
- "categoryId": 4,
- "url": "http://referlocal.com/",
- "companyId": "referlocal"
- },
- "refersion": {
- "name": "Refersion",
- "categoryId": 4,
- "url": "https://www.refersion.com/",
- "companyId": "refersion"
- },
- "refined_labs": {
- "name": "Refined Labs",
- "categoryId": 4,
- "url": "http://www.refinedlabs.com",
- "companyId": "refined_labs"
- },
- "reflektion": {
- "name": "Reflektion",
- "categoryId": 4,
- "url": "http://",
- "companyId": "reflektion"
- },
- "reformal": {
- "name": "Reformal",
- "categoryId": 2,
- "url": "http://reformal.ru/",
- "companyId": "reformal"
- },
- "reinvigorate": {
- "name": "Reinvigorate",
- "categoryId": 6,
- "url": "http://www.reinvigorate.net/",
- "companyId": "media_temple"
- },
- "rekko": {
- "name": "Rekko",
- "categoryId": 4,
- "url": "http://convert.us/",
- "companyId": "rekko"
- },
- "reklam_store": {
- "name": "Reklam Store",
- "categoryId": 4,
- "url": "http://www.reklamstore.com",
- "companyId": "reklam_store"
- },
- "reklamport": {
- "name": "Reklamport",
- "categoryId": 4,
- "url": "http://www.reklamport.com/",
- "companyId": "reklamport"
- },
- "reklamz": {
- "name": "ReklamZ",
- "categoryId": 4,
- "url": "http://www.reklamz.com/",
- "companyId": "reklamz"
- },
- "rekmob": {
- "name": "Rekmob",
- "categoryId": 4,
- "url": "https://www.rekmob.com/",
- "companyId": "rekmob"
- },
- "relap": {
- "name": "Relap",
- "categoryId": 4,
- "url": "https://relap.io/",
- "companyId": "relap"
- },
- "relay42": {
- "name": "Relay42",
- "categoryId": 5,
- "url": "http://synovite.com",
- "companyId": "relay42"
- },
- "relestar": {
- "name": "Relestar",
- "categoryId": 6,
- "url": "https://relestar.com/",
- "companyId": "relestar"
- },
- "relevant4.com": {
- "name": "relevant4 GmbH",
- "categoryId": 8,
- "url": "https://www.relevant4.com/",
- "companyId": null
- },
- "remintrex": {
- "name": "Remintrex",
- "categoryId": 4,
- "url": "http://www.remintrex.com/",
- "companyId": null
- },
- "remove.video": {
- "name": "remove.video",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "repost.us": {
- "name": "Repost.us",
- "categoryId": 4,
- "url": "http://www.freerangecontent.com/",
- "companyId": "repost"
- },
- "republer.com": {
- "name": "Republer",
- "categoryId": 4,
- "url": "http://republer.com/",
- "companyId": "republer"
- },
- "res-meter": {
- "name": "Res-meter",
- "categoryId": 6,
- "url": "http://respublica.al/res-meter",
- "companyId": "respublica"
- },
- "research_now": {
- "name": "Research Now",
- "categoryId": 4,
- "url": "http://www.researchnow.com/",
- "companyId": "research_now"
- },
- "resonate_networks": {
- "name": "Resonate Networks",
- "categoryId": 4,
- "url": "http://www.resonatenetworks.com/",
- "companyId": "resonate"
- },
- "respond": {
- "name": "Respond",
- "categoryId": 4,
- "url": "http://respondhq.com/",
- "companyId": "respond"
- },
- "responsetap": {
- "name": "ResponseTap",
- "categoryId": 4,
- "url": "http://www.adinsight.eu/",
- "companyId": "responsetap"
- },
- "result_links": {
- "name": "Result Links",
- "categoryId": 4,
- "url": "http://www.resultlinks.com/",
- "companyId": "result_links"
- },
- "resultspage.com": {
- "name": "SLI Systems",
- "categoryId": 6,
- "url": "https://www.sli-systems.com/",
- "companyId": "sli_systems"
- },
- "retailrocket.net": {
- "name": "Retail Rocket",
- "categoryId": 4,
- "url": "https://retailrocket.net/",
- "companyId": "retail_rocket"
- },
- "retarget_app": {
- "name": "Retarget App",
- "categoryId": 4,
- "url": "https://retargetapp.com/",
- "companyId": "retargetapp"
- },
- "retargeter_beacon": {
- "name": "ReTargeter Beacon",
- "categoryId": 4,
- "url": "http://www.retargeter.com/",
- "companyId": "retargeter"
- },
- "retargeting.cl": {
- "name": "Retargeting.cl",
- "categoryId": 4,
- "url": "http://retargeting.cl/",
- "companyId": "retargeting"
- },
- "retention_science": {
- "name": "Retention Science",
- "categoryId": 4,
- "url": "http://retentionscience.com/",
- "companyId": "retention_science"
- },
- "reuters_media": {
- "name": "Reuters media",
- "categoryId": 9,
- "url": "https://reuters.com",
- "companyId": null
- },
- "revcontent": {
- "name": "RevContent",
- "categoryId": 4,
- "url": "https://www.revcontent.com/",
- "companyId": "revcontent"
- },
- "reve_marketing": {
- "name": "Reve Marketing",
- "categoryId": 4,
- "url": "http://tellafriend.socialtwist.com/",
- "companyId": "reve_marketing"
- },
- "revenue": {
- "name": "Revenue",
- "categoryId": 4,
- "url": "https://revenue.com/",
- "companyId": "revenue"
- },
- "revenuehits": {
- "name": "RevenueHits",
- "categoryId": 4,
- "url": "http://www.revenuehits.com/",
- "companyId": "revenuehits"
- },
- "revenuemantra": {
- "name": "RevenueMantra",
- "categoryId": 4,
- "url": "http://www.revenuemantra.com/",
- "companyId": "revenuemantra"
- },
- "revive_adserver": {
- "name": "Revive Adserver",
- "categoryId": 4,
- "url": "https://www.revive-adserver.com/",
- "companyId": "revive_adserver"
- },
- "revolver_maps": {
- "name": "Revolver Maps",
- "categoryId": 6,
- "url": "http://www.revolvermaps.com/",
- "companyId": "revolver_maps"
- },
- "revresponse": {
- "name": "RevResponse",
- "categoryId": 4,
- "url": "http://www.netline.com/",
- "companyId": "netline"
- },
- "rewords": {
- "name": "ReWords",
- "categoryId": 4,
- "url": "http://www.rewords.pl/",
- "companyId": "rewords"
- },
- "rhythmone": {
- "name": "RhythmOne",
- "categoryId": 4,
- "url": "http://www.adconductor.com/",
- "companyId": "rhythmone"
- },
- "rhythmone_beacon": {
- "name": "Rhythmone Beacon",
- "categoryId": 4,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "ria.ru": {
- "name": "ria.ru",
- "categoryId": 8,
- "url": "https://ria.ru/",
- "companyId": null
- },
- "rich_media_banner_network": {
- "name": "Rich Media Banner Network",
- "categoryId": 4,
- "url": "http://rmbn.ru/",
- "companyId": "rich_media_banner_network"
- },
- "richrelevance": {
- "name": "RichRelevance",
- "categoryId": 2,
- "url": "http://www.richrelevance.com/",
- "companyId": "richrelevance"
- },
- "ringier.ch": {
- "name": "Ringier",
- "categoryId": 6,
- "url": "http://ringier.ch/en",
- "companyId": "ringier"
- },
- "rio_seo": {
- "name": "Rio SEO",
- "categoryId": 7,
- "url": "http://www.meteorsolutions.com",
- "companyId": "rio_seo"
- },
- "riskfield.com": {
- "name": "Riskified",
- "categoryId": 2,
- "url": "https://www.riskified.com/",
- "companyId": "riskfield"
- },
- "rncdn3.com": {
- "name": "Reflected Networks",
- "categoryId": 9,
- "url": "http://www.rncdn3.com/",
- "companyId": null
- },
- "ro2.biz": {
- "name": "Ro2.biz",
- "categoryId": 4,
- "url": "http://ro2.biz/index.php?r=adikku",
- "companyId": "ro2.biz"
- },
- "roblox": {
- "name": "Roblox",
- "categoryId": 8,
- "url": "https://www.roblox.com/",
- "companyId": null
- },
- "rockerbox": {
- "name": "Rockerbox",
- "categoryId": 6,
- "url": "https://www.rockerbox.com/privacy",
- "companyId": "rockerbox"
- },
- "rocket.ia": {
- "name": "Rocket.ia",
- "categoryId": 4,
- "url": "https://rocket.la/",
- "companyId": "rocket.la"
- },
- "roi_trax": {
- "name": "ROI trax",
- "categoryId": 4,
- "url": "http://www.oneupweb.com/",
- "companyId": "oneupweb"
- },
- "roistat": {
- "name": "Roistat",
- "categoryId": 6,
- "url": "https://roistat.com",
- "companyId": "roistat"
- },
- "rollad": {
- "name": "Rollad",
- "categoryId": 4,
- "url": "http://rollad.ru",
- "companyId": "rollad"
- },
- "rollbar": {
- "name": "Rollbar",
- "categoryId": 6,
- "url": "http://www.rollbar.com/",
- "companyId": "rollbar"
- },
- "roost": {
- "name": "Roost",
- "categoryId": 6,
- "url": "http://roost.me/",
- "companyId": "roost"
- },
- "rooster": {
- "name": "Rooster",
- "categoryId": 6,
- "url": "http://www.getrooster.com/",
- "companyId": "rooster"
- },
- "roq.ad": {
- "name": "Roq.ad",
- "categoryId": 4,
- "url": "https://www.roq.ad/",
- "companyId": "roq.ad"
- },
- "rotaban": {
- "name": "RotaBan",
- "categoryId": 4,
- "url": "http://www.rotaban.ru/",
- "companyId": "rotaban"
- },
- "routenplaner-karten.com": {
- "name": "Routenplaner Karten",
- "categoryId": 2,
- "url": "https://www.routenplaner-karten.com/",
- "companyId": null
- },
- "rovion": {
- "name": "Rovion",
- "categoryId": 4,
- "url": "http://www.rovion.com/",
- "companyId": "rovion"
- },
- "rsspump": {
- "name": "RSSPump",
- "categoryId": 2,
- "url": "http://www.rsspump.com",
- "companyId": "rsspump"
- },
- "rtb_house": {
- "name": "RTB House",
- "categoryId": 4,
- "url": "http://en.adpilot.com/",
- "companyId": "rtb_house"
- },
- "rtblab": {
- "name": "RTBmarkt",
- "categoryId": 4,
- "url": "http://www.rtbmarkt.de/en/home/",
- "companyId": "rtbmarkt"
- },
- "rtbsuperhub.com": {
- "name": "rtbsuperhub.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "rtl_group": {
- "name": "RTL Group",
- "categoryId": 8,
- "url": "http://www.rtlgroup.com/www/htm/home.aspx",
- "companyId": "rtl_group"
- },
- "rtmark.net": {
- "name": "Advertising Technologies Ltd",
- "categoryId": 4,
- "url": "http://rtmark.net/",
- "companyId": "big_wall_vision"
- },
- "rubicon": {
- "name": "Rubicon",
- "categoryId": 4,
- "url": "http://rubiconproject.com/",
- "companyId": "rubicon_project"
- },
- "ruhrgebiet": {
- "name": "Ruhrgebiet",
- "categoryId": 4,
- "url": "https://www.ruhrgebiet-onlineservices.de/",
- "companyId": "ruhrgebiet"
- },
- "rummycircle": {
- "name": "RummyCircle",
- "categoryId": 4,
- "url": "https://www.rummycircle.com/",
- "companyId": "rummycircle"
- },
- "run": {
- "name": "RUN",
- "categoryId": 4,
- "url": "http://www.rundsp.com/",
- "companyId": "run"
- },
- "runative": {
- "name": "Runative",
- "categoryId": 4,
- "url": "https://runative.com/",
- "companyId": null
- },
- "rune": {
- "name": "Rune",
- "categoryId": 6,
- "url": "http://www.secretrune.com/",
- "companyId": "rune_inc."
- },
- "runmewivel.com": {
- "name": "runmewivel.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "rythmxchange": {
- "name": "Rythmxchange",
- "categoryId": 0,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "s24_com": {
- "name": "Shopping24 internet group",
- "categoryId": 4,
- "url": "https://www.s24.com/",
- "companyId": null
- },
- "s3xified.com": {
- "name": "s3xified.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sabavision": {
- "name": "SabaVision",
- "categoryId": 4,
- "url": "http://www.sabavision.com/en/",
- "companyId": "sabavision"
- },
- "sagemetrics": {
- "name": "SageMetrics",
- "categoryId": 4,
- "url": "http://www.sagemetrics.com",
- "companyId": "ipmg"
- },
- "sailthru_horizon": {
- "name": "Sailthru Horizon",
- "categoryId": 4,
- "url": "https://www.sailthru.com",
- "companyId": "sailthru"
- },
- "salecycle": {
- "name": "SaleCycle",
- "categoryId": 4,
- "url": "http://www.salecycle.com/",
- "companyId": "salecycle"
- },
- "sales_feed": {
- "name": "Sales Feed",
- "categoryId": 4,
- "url": "https://www.salesfeed.com/",
- "companyId": "sales_feed"
- },
- "sales_manago": {
- "name": "SALESmanago",
- "categoryId": 6,
- "url": "https://www.salesmanago.com/",
- "companyId": "sales_manago"
- },
- "salesforce.com": {
- "name": "Salesforce",
- "categoryId": 4,
- "url": "https://www.salesforce.com/eu/",
- "companyId": "salesforce"
- },
- "salesforce_live_agent": {
- "name": "Salesforce Live Agent",
- "categoryId": 2,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "salesfusion": {
- "name": "SalesFUSION",
- "categoryId": 4,
- "url": "http://salesfusion.com/",
- "companyId": "salesfusion"
- },
- "salespider_media": {
- "name": "SaleSpider Media",
- "categoryId": 4,
- "url": "http://salespidermedia.com/",
- "companyId": "salespider_media"
- },
- "salesviewer": {
- "name": "SalesViewer",
- "categoryId": 6,
- "url": "https://www.salesviewer.com/",
- "companyId": "salesviewer"
- },
- "samba.tv": {
- "name": "Samba TV",
- "categoryId": 4,
- "url": "https://samba.tv/",
- "companyId": "samba_tv"
- },
- "sanoma.fi": {
- "name": "Sanoma",
- "categoryId": 4,
- "url": "https://sanoma.com/",
- "companyId": "sanoma"
- },
- "sap_crm": {
- "name": "SAP CRM",
- "categoryId": 6,
- "url": "https://www.sap.com/products/crm.html",
- "companyId": "sap"
- },
- "sap_sales_cloud": {
- "name": "SAP Sales Cloud",
- "categoryId": 2,
- "url": "http://leadforce1.com/",
- "companyId": "sap"
- },
- "sap_xm": {
- "name": "SAP Exchange Media",
- "categoryId": 4,
- "url": "http://sapexchange.media/",
- "companyId": null
- },
- "sape.ru": {
- "name": "Sape",
- "categoryId": 6,
- "url": "https://www.sape.ru/en",
- "companyId": "sape"
- },
- "sapo_ads": {
- "name": "SAPO Ads",
- "categoryId": 4,
- "url": "http://www.sapo.pt/",
- "companyId": "sapo"
- },
- "sas": {
- "name": "SAS",
- "categoryId": 6,
- "url": "http://www.sas.com/",
- "companyId": "sas"
- },
- "say.ac": {
- "name": "Say.ac",
- "categoryId": 4,
- "url": "http://say.ac",
- "companyId": "say.ac"
- },
- "say_media": {
- "name": "Say Media",
- "categoryId": 4,
- "url": "http://www.saymedia.com/",
- "companyId": "say_media"
- },
- "sayyac": {
- "name": "Sayyac",
- "categoryId": 6,
- "url": "http://www.sayyac.com/",
- "companyId": "sayyac"
- },
- "scarabresearch": {
- "name": "Scarab Research",
- "categoryId": 4,
- "url": "https://www.scarabresearch.com/",
- "companyId": "emarsys"
- },
- "schibsted": {
- "name": "Schibsted Media Group",
- "categoryId": 8,
- "url": "http://www.schibsted.com/",
- "companyId": "schibsted_asa"
- },
- "schneevonmorgen.com": {
- "name": "Schnee von Morgen",
- "categoryId": 0,
- "url": "http://www.schneevonmorgen.com/",
- "companyId": null
- },
- "scoota": {
- "name": "Scoota",
- "categoryId": 4,
- "url": "http://scoota.com/",
- "companyId": "rockabox"
- },
- "scorecard_research_beacon": {
- "name": "ScoreCard Research Beacon",
- "categoryId": 6,
- "url": "https://www.scorecardresearch.com/",
- "companyId": "comscore"
- },
- "scout_analytics": {
- "name": "Scout Analytics",
- "categoryId": 4,
- "url": "http://scoutanalytics.com/",
- "companyId": "scout_analytics"
- },
- "scribblelive": {
- "name": "ScribbleLive",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "scribol": {
- "name": "Scribol",
- "categoryId": 4,
- "url": "http://scribol.com/",
- "companyId": "scribol"
- },
- "scripps_analytics": {
- "name": "Scripps Analytics",
- "categoryId": 6,
- "url": "http://www.scrippsnetworksinteractive.com/",
- "companyId": "scripps_networks"
- },
- "scroll": {
- "name": "Scroll",
- "categoryId": 5,
- "url": "https://scroll.com/",
- "companyId": "scroll"
- },
- "scupio": {
- "name": "Scupio",
- "categoryId": 4,
- "url": "http://ad.scupio.com/",
- "companyId": "bridgewell"
- },
- "search123": {
- "name": "Search123",
- "categoryId": 4,
- "url": "http://www.search123.com/",
- "companyId": "search123"
- },
- "searchforce": {
- "name": "SearchForce",
- "categoryId": 4,
- "url": "http://www.searchforce.com/",
- "companyId": "searchforce"
- },
- "searchignite": {
- "name": "SearchIgnite",
- "categoryId": 4,
- "url": "https://searchignite.com/",
- "companyId": "zeta"
- },
- "searchrev": {
- "name": "SearchRev",
- "categoryId": 4,
- "url": "http://www.searchrev.com/",
- "companyId": "searchrev"
- },
- "second_media": {
- "name": "Second Media",
- "categoryId": 4,
- "url": "http://www.secondmedia.com/",
- "companyId": "second_media"
- },
- "securedtouch": {
- "name": "SecuredTouch",
- "categoryId": 6,
- "url": "https://www.securedtouch.com/",
- "companyId": null
- },
- "securedvisit": {
- "name": "SecuredVisit",
- "categoryId": 4,
- "url": "http://securedvisit.com/",
- "companyId": "securedvisit"
- },
- "seeding_alliance": {
- "name": "Seeding Alliance",
- "categoryId": 4,
- "url": "http://seeding-alliance.de",
- "companyId": "stroer"
- },
- "seedtag.com": {
- "name": "Seedtag",
- "categoryId": 4,
- "url": "https://www.seedtag.com/en/",
- "companyId": "seedtag"
- },
- "seevolution": {
- "name": "SeeVolution",
- "categoryId": 6,
- "url": "http://www.seevolution.com",
- "companyId": "seevolution"
- },
- "segment": {
- "name": "Segment",
- "categoryId": 6,
- "url": "https://segment.io/",
- "companyId": "segment"
- },
- "segmento": {
- "name": "Segmento",
- "categoryId": 4,
- "url": "https://segmento.ru/en",
- "companyId": "segmento"
- },
- "segmint": {
- "name": "Segmint",
- "categoryId": 6,
- "url": "http://www.segmint.com/",
- "companyId": "segmint"
- },
- "sekindo": {
- "name": "Sekindo",
- "categoryId": 4,
- "url": "http://www.sekindo.com/",
- "companyId": "sekindo"
- },
- "sellpoints": {
- "name": "Sellpoints",
- "categoryId": 4,
- "url": "https://www.sellpoints.com/",
- "companyId": "sellpoints"
- },
- "semantiqo.com": {
- "name": "Semantiqo",
- "categoryId": 4,
- "url": "https://semantiqo.com/",
- "companyId": null
- },
- "semasio": {
- "name": "Semasio",
- "categoryId": 4,
- "url": "http://semasio.com/",
- "companyId": "semasio"
- },
- "semilo": {
- "name": "Semilo",
- "categoryId": 4,
- "url": "http://www.semilo.nl/",
- "companyId": "semilo"
- },
- "semknox.com": {
- "name": "SEMKNOX GmbH",
- "categoryId": 5,
- "url": "https://semknox.com/",
- "companyId": null
- },
- "sendinblue": {
- "name": "sendinblue",
- "categoryId": 4,
- "url": "https://fr.sendinblue.com/",
- "companyId": "sendinblue"
- },
- "sendpulse.com": {
- "name": "SendPulse",
- "categoryId": 3,
- "url": "https://sendpulse.com/",
- "companyId": null
- },
- "sendsay": {
- "name": "Sendsay",
- "categoryId": 2,
- "url": "https://sendsay.ru",
- "companyId": "sendsay"
- },
- "sense_digital": {
- "name": "Sense Digital",
- "categoryId": 6,
- "url": "http://sensedigital.in/",
- "companyId": "sense_digital"
- },
- "sensors_data": {
- "name": "Sensors Data",
- "categoryId": 6,
- "url": "https://www.sensorsdata.cn/",
- "companyId": "sensors_data"
- },
- "sentifi.com": {
- "name": "Sentifi",
- "categoryId": 6,
- "url": "https://sentifi.com/",
- "companyId": "sentifi"
- },
- "sentry": {
- "name": "Sentry",
- "categoryId": 6,
- "url": "https://sentry.io/",
- "companyId": "sentry"
- },
- "sepyra": {
- "name": "Sepyra",
- "categoryId": 4,
- "url": "http://sepyra.com/",
- "companyId": "sepyra"
- },
- "sessioncam": {
- "name": "SessionCam",
- "categoryId": 6,
- "url": "http://www.sessioncam.com/",
- "companyId": "sessioncam"
- },
- "sessionly": {
- "name": "Sessionly",
- "categoryId": 2,
- "url": "https://www.sessionly.io/",
- "companyId": "sessionly"
- },
- "sevenone_media": {
- "name": "SevenOne Media",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "sexadnetwork": {
- "name": "SexAdNetwork",
- "categoryId": 3,
- "url": "http://www.sexadnetwork.com/",
- "companyId": "sexadnetwork"
- },
- "sexinyourcity": {
- "name": "SexInYourCity",
- "categoryId": 3,
- "url": "http://www.sexinyourcity.com/",
- "companyId": "sexinyourcity"
- },
- "sextracker": {
- "name": "SexTracker",
- "categoryId": 3,
- "url": "http://webmasters.sextracker.com/",
- "companyId": "sextracker"
- },
- "sexypartners.net": {
- "name": "sexypartners.net",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "seznam": {
- "name": "Seznam",
- "categoryId": 6,
- "url": "https://onas.seznam.cz/cz/",
- "companyId": "seznam"
- },
- "shareaholic": {
- "name": "Shareaholic",
- "categoryId": 6,
- "url": "hhttps://www.shareaholic.com/",
- "companyId": "shareaholic"
- },
- "shareasale": {
- "name": "ShareASale",
- "categoryId": 4,
- "url": "http://www.shareasale.com/",
- "companyId": "shareasale"
- },
- "sharecompany": {
- "name": "ShareCompany",
- "categoryId": 2,
- "url": "http://sharecompany.nl",
- "companyId": "sharecompany"
- },
- "sharepoint": {
- "name": "Microsoft SharePoint",
- "categoryId": 2,
- "url": "https://products.office.com/en-us/sharepoint/sharepoint-online-collaboration-software",
- "companyId": "microsoft"
- },
- "sharethis": {
- "name": "ShareThis",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "sharethrough": {
- "name": "ShareThrough",
- "categoryId": 4,
- "url": "http://www.sharethrough.com/",
- "companyId": "sharethrough"
- },
- "sharpspring": {
- "name": "Sharpspring",
- "categoryId": 6,
- "url": "https://sharpspring.com/",
- "companyId": "sharpspring"
- },
- "sheego.de": {
- "name": "sheego.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "sheerid": {
- "name": "SheerID",
- "categoryId": 4,
- "url": "http://www.sheerid.com/",
- "companyId": "sheerid"
- },
- "shinystat": {
- "name": "ShinyStat",
- "categoryId": 6,
- "url": "http://www.shinystat.com/",
- "companyId": "shinystat"
- },
- "shop_target": {
- "name": "Shop Target",
- "categoryId": 4,
- "url": "http://shoptarget.com.br/",
- "companyId": "shopback"
- },
- "shopauskunft.de": {
- "name": "ShopAuskunft.de",
- "categoryId": 2,
- "url": "https://shopauskunft.de/",
- "companyId": null
- },
- "shopgate.com": {
- "name": "Shopgate",
- "categoryId": 2,
- "url": "https://www.shopgate.com/",
- "companyId": null
- },
- "shopify_stats": {
- "name": "Shopify Stats",
- "categoryId": 4,
- "url": "http://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopifycdn.com": {
- "name": "Shopify CDN",
- "categoryId": 9,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopifycloud.com": {
- "name": "Shopify Cloud",
- "categoryId": 2,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopper_approved": {
- "name": "Shopper Approved",
- "categoryId": 2,
- "url": "http://www.shopperapproved.com",
- "companyId": "shopper_approved"
- },
- "shopping_com": {
- "name": "Shopping.com",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "shopping_flux": {
- "name": "Shopping Flux",
- "categoryId": 6,
- "url": "http://www.shopping-flux.com/",
- "companyId": "shopping_flux"
- },
- "shoprunner": {
- "name": "ShopRunner",
- "categoryId": 2,
- "url": "https://www.shoprunner.com",
- "companyId": "shoprunner"
- },
- "shopsocially": {
- "name": "ShopSocially",
- "categoryId": 2,
- "url": "http://shopsocially.com/",
- "companyId": "shopsocially"
- },
- "shopzilla": {
- "name": "Shopzilla",
- "categoryId": 4,
- "url": "http://www.shopzilla.com/",
- "companyId": "shopzilla"
- },
- "shortnews": {
- "name": "ShortNews.de",
- "categoryId": 8,
- "url": "http://www.shortnews.de/#",
- "companyId": null
- },
- "shrink": {
- "name": "Shrink",
- "categoryId": 2,
- "url": "http://shink.in/",
- "companyId": "shrink.in"
- },
- "shutterstock": {
- "name": "Shutterstock",
- "categoryId": 8,
- "url": "https://www.shutterstock.com/",
- "companyId": "shutterstock_inc"
- },
- "siblesectiveal.club": {
- "name": "siblesectiveal.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sidecar": {
- "name": "Sidecar",
- "categoryId": 6,
- "url": "http://hello.getsidecar.com/",
- "companyId": "sidecar"
- },
- "sift_science": {
- "name": "Sift Science",
- "categoryId": 6,
- "url": "https://siftscience.com/",
- "companyId": "sift_science"
- },
- "signal": {
- "name": "Signal",
- "categoryId": 5,
- "url": "https://www.signal.co/",
- "companyId": "signal_digital"
- },
- "signifyd": {
- "name": "Signifyd",
- "categoryId": 6,
- "url": "https://www.signifyd.com/",
- "companyId": "signifyd"
- },
- "silverpop": {
- "name": "Silverpop",
- "categoryId": 2,
- "url": "http://www.silverpop.com/",
- "companyId": "ibm"
- },
- "similardeals.net": {
- "name": "SimilarDeals",
- "categoryId": 8,
- "url": "http://www.similardeals.net/",
- "companyId": null
- },
- "simplereach": {
- "name": "SimpleReach",
- "categoryId": 6,
- "url": "https://www.nativo.com/simplereach",
- "companyId": "nativo"
- },
- "simpli.fi": {
- "name": "Simpli.fi",
- "categoryId": 4,
- "url": "http://www.simpli.fi",
- "companyId": "simpli.fi"
- },
- "sina": {
- "name": "Sina",
- "categoryId": 6,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "sina_cdn": {
- "name": "Sina CDN",
- "categoryId": 9,
- "url": "https://www.sina.com.cn/",
- "companyId": "sina"
- },
- "singlefeed": {
- "name": "SingleFeed",
- "categoryId": 4,
- "url": "https://www.singlefeed.com/",
- "companyId": "singlefeed"
- },
- "sirdata": {
- "name": "Sirdata",
- "categoryId": 6,
- "url": "http://www.sirdata.com/home/",
- "companyId": "sirdata"
- },
- "site24x7": {
- "name": "Site24x7",
- "categoryId": 6,
- "url": "https://www.site24x7.com/",
- "companyId": "zoho_corp"
- },
- "site_booster": {
- "name": "Site Booster",
- "categoryId": 7,
- "url": "https://sitebooster.com/",
- "companyId": "site_booster"
- },
- "site_stratos": {
- "name": "Site Stratos",
- "categoryId": 4,
- "url": "http://www.infocube.co.jp/",
- "companyId": "infocube"
- },
- "siteapps": {
- "name": "SiteApps",
- "categoryId": 2,
- "url": "http://siteapps.com",
- "companyId": "siteapps"
- },
- "sitebro": {
- "name": "SiteBro",
- "categoryId": 6,
- "url": "http://www.sitebro.net/",
- "companyId": "sitebro"
- },
- "siteheart": {
- "name": "SiteHeart",
- "categoryId": 2,
- "url": "http://siteheart.com/",
- "companyId": "siteheart"
- },
- "siteimprove": {
- "name": "Siteimprove",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "siteimprove_analytics": {
- "name": "SiteImprove Analytics",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "sitelabweb.com": {
- "name": "sitelabweb.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sitemeter": {
- "name": "SiteMeter",
- "categoryId": 6,
- "url": "http://www.sitemeter.com/",
- "companyId": "sitemeter,_inc."
- },
- "sitescout": {
- "name": "SiteScout by Centro",
- "categoryId": 4,
- "url": "http://www.sitescout.com",
- "companyId": "centro"
- },
- "sitetag": {
- "name": "SiteTag",
- "categoryId": 2,
- "url": "http://www.sitetag.us/",
- "companyId": "sitetag"
- },
- "sitewit": {
- "name": "SiteWit",
- "categoryId": 4,
- "url": "http://www.sitewit.com/",
- "companyId": "sitewit"
- },
- "six_apart_advertising": {
- "name": "Six Apart Advertising",
- "categoryId": 4,
- "url": "http://www.sixapart.com/advertising/",
- "companyId": "six_apart"
- },
- "sixt-neuwagen.de": {
- "name": "sixt-neuwagen.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "skadtec.com": {
- "name": "GP One GmbH",
- "categoryId": 6,
- "url": "http://www.gp-one.com/",
- "companyId": null
- },
- "skimlinks": {
- "name": "SkimLinks",
- "categoryId": 4,
- "url": "http://www.skimlinks.com/",
- "companyId": "skimlinks"
- },
- "skroutz": {
- "name": "Skroutz",
- "categoryId": 6,
- "url": "https://www.skroutz.gr/",
- "companyId": "skroutz"
- },
- "skyglue": {
- "name": "SkyGlue",
- "categoryId": 6,
- "url": "http://www.skyglue.com/",
- "companyId": "skyglue_technology"
- },
- "skype": {
- "name": "Skype",
- "categoryId": 2,
- "url": "http://www.skype.com",
- "companyId": "microsoft"
- },
- "skysa": {
- "name": "Skysa",
- "categoryId": 2,
- "url": "http://www.skysa.com/",
- "companyId": "skysa"
- },
- "skyscnr.com": {
- "name": "Skyscanner CDN",
- "categoryId": 9,
- "url": "https://www.skyscanner.net/",
- "companyId": null
- },
- "slashdot_widget": {
- "name": "Slashdot Widget",
- "categoryId": 2,
- "url": "http://slashdot.org",
- "companyId": "slashdot"
- },
- "sleeknote": {
- "name": "Sleeknote",
- "categoryId": 2,
- "url": "https://sleeknote.com/",
- "companyId": "sleeknote"
- },
- "sli_systems": {
- "name": "SLI Systems",
- "categoryId": 2,
- "url": "http://www.sli-systems.com",
- "companyId": "sli_systems"
- },
- "slice_factory": {
- "name": "Slice Factory",
- "categoryId": 2,
- "url": "http://www.slicefactory.com/",
- "companyId": "slice_factory"
- },
- "slimcutmedia": {
- "name": "SlimCutMedia",
- "categoryId": 6,
- "url": "http://www.slimcutmedia.com/",
- "companyId": "slimcutmedia"
- },
- "slingpic": {
- "name": "Slingpic",
- "categoryId": 4,
- "url": "http://slingpic.com/",
- "companyId": "affectv"
- },
- "smaato": {
- "name": "Smaato",
- "categoryId": 4,
- "url": "http://www.smaato.com/",
- "companyId": "smaato"
- },
- "smart4ads": {
- "name": "smart4ads",
- "categoryId": 4,
- "url": "http://www.smart4ads.com",
- "companyId": "smart4ads"
- },
- "smart_adserver": {
- "name": "SMART AdServer",
- "categoryId": 4,
- "url": "https://smartadserver.com/",
- "companyId": "smart_adserver"
- },
- "smart_call": {
- "name": "Smart Call",
- "categoryId": 2,
- "url": "https://smartcall.kz/",
- "companyId": "smart_call"
- },
- "smart_content": {
- "name": "Smart Content",
- "categoryId": 4,
- "url": "http://www.getsmartcontent.com",
- "companyId": "get_smart_content"
- },
- "smart_device_media": {
- "name": "Smart Device Media",
- "categoryId": 4,
- "url": "http://www.smartdevicemedia.com/",
- "companyId": "smart_device_media"
- },
- "smart_leads": {
- "name": "Smart Leads",
- "categoryId": 4,
- "url": "http://www.cnt.my/",
- "companyId": "smart_leads"
- },
- "smart_selling": {
- "name": "Smart Selling",
- "categoryId": 2,
- "url": "https://smartselling.cz/",
- "companyId": "smart_selling"
- },
- "smartad": {
- "name": "smartAD",
- "categoryId": 4,
- "url": "http://smartad.eu/",
- "companyId": "smartad"
- },
- "smartbn": {
- "name": "SmartBN",
- "categoryId": 4,
- "url": "http://smartbn.ru/",
- "companyId": "smartbn"
- },
- "smartclick.net": {
- "name": "SmartClick",
- "categoryId": 4,
- "url": "http://smartclick.net/",
- "companyId": null
- },
- "smartclip": {
- "name": "SmartClip",
- "categoryId": 4,
- "url": "http://www.smartclip.com/",
- "companyId": "smartclip"
- },
- "smartcontext": {
- "name": "SmartContext",
- "categoryId": 4,
- "url": "http://smartcontext.pl/",
- "companyId": "smartcontext"
- },
- "smarter_remarketer": {
- "name": "SmarterHQ",
- "categoryId": 4,
- "url": "https://smarterhq.com",
- "companyId": "smarterhq"
- },
- "smarter_travel": {
- "name": "Smarter Travel Media",
- "categoryId": 4,
- "url": "https://www.smartertravel.com/",
- "companyId": "iac_apps"
- },
- "smarterclick": {
- "name": "Smarterclick",
- "categoryId": 4,
- "url": "http://www.smarterclick.co.uk/",
- "companyId": "smarter_click"
- },
- "smartertrack": {
- "name": "SmarterTrack",
- "categoryId": 4,
- "url": "http://www.smartertrack.com/",
- "companyId": "smartertrack"
- },
- "smartlink.cool": {
- "name": "smartlink.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "smartlook": {
- "name": "Smartlook",
- "categoryId": 2,
- "url": "https://www.smartlook.com/",
- "companyId": "smartlook"
- },
- "smartstream.tv": {
- "name": "SmartStream.TV",
- "categoryId": 4,
- "url": "https://www.smartstream.tv/en",
- "companyId": "smartstream"
- },
- "smartsupp_chat": {
- "name": "Smartsupp Chat",
- "categoryId": 2,
- "url": "https://www.smartsupp.com/",
- "companyId": "smartsuppp"
- },
- "smi2.ru": {
- "name": "smi2.ru",
- "categoryId": 6,
- "url": "https://smi2.net/",
- "companyId": "media2_stat.media"
- },
- "smooch": {
- "name": "Smooch",
- "categoryId": 2,
- "url": "https://smooch.io/",
- "companyId": "smooch"
- },
- "smowtion": {
- "name": "Smowtion",
- "categoryId": 4,
- "url": "http://www.smowtion.com/",
- "companyId": "smowtion"
- },
- "smx_ventures": {
- "name": "SMX Ventures",
- "categoryId": 6,
- "url": "http://smxeventures.com/",
- "companyId": "smx_ventures"
- },
- "smyte": {
- "name": "Smyte",
- "categoryId": 6,
- "url": "https://www.smyte.com/",
- "companyId": "smyte"
- },
- "snacktv": {
- "name": "SnackTV",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snacktv_player": {
- "name": "SnackTV-Player",
- "categoryId": 0,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snap": {
- "name": "Snap",
- "categoryId": 2,
- "url": "http://www.snap.com/",
- "companyId": "snap_technologies"
- },
- "snap_engage": {
- "name": "Snap Engage",
- "categoryId": 2,
- "url": "https://snapengage.com/",
- "companyId": "snap_engage"
- },
- "snapchat": {
- "name": "Snapchat For Business",
- "categoryId": 4,
- "url": "https://www.snapchat.com/",
- "companyId": "snap_technologies"
- },
- "snigelweb": {
- "name": "SnigelWeb, Inc.",
- "categoryId": 4,
- "url": "http://www.snigelweb.com/",
- "companyId": "snigelweb_inc"
- },
- "snoobi": {
- "name": "Snoobi",
- "categoryId": 6,
- "url": "http://www.snoobi.eu/",
- "companyId": "snoobi"
- },
- "snoobi_analytics": {
- "name": "Snoobi Analytics",
- "categoryId": 6,
- "url": "http://www.snoobi.com/",
- "companyId": "snoobi_oy"
- },
- "snowplow": {
- "name": "Snowplow",
- "categoryId": 6,
- "url": "http://snowplowanalytics.com/",
- "companyId": "snowplow"
- },
- "soasta_mpulse": {
- "name": "SOASTA mPulse",
- "categoryId": 6,
- "url": "http://www.soasta.com/",
- "companyId": "akamai"
- },
- "sociable_labs": {
- "name": "Sociable Labs",
- "categoryId": 4,
- "url": "http://www.sociablelabs.com/",
- "companyId": "sociable_labs"
- },
- "social_amp": {
- "name": "Social Amp",
- "categoryId": 4,
- "url": "http://www.merkleinc.com/",
- "companyId": "dentsu_aegis_network"
- },
- "social_annex": {
- "name": "Social Annex",
- "categoryId": 4,
- "url": "http://www.socialannex.com",
- "companyId": "social_annex"
- },
- "social_miner": {
- "name": "Social Miner",
- "categoryId": 7,
- "url": "https://socialminer.com/",
- "companyId": "social_miner"
- },
- "socialbeat": {
- "name": "socialbeat",
- "categoryId": 4,
- "url": "http://www.socialbeat.it/",
- "companyId": "socialbeat"
- },
- "socialrms": {
- "name": "SocialRMS",
- "categoryId": 7,
- "url": "http://socialinterface.com/socialrms/",
- "companyId": "socialinterface"
- },
- "sociaplus.com": {
- "name": "SociaPlus",
- "categoryId": 6,
- "url": "https://sociaplus.com/",
- "companyId": null
- },
- "sociomantic": {
- "name": "Sociomantic",
- "categoryId": 4,
- "url": "http://www.sociomantic.com/",
- "companyId": "sociomantic_labs_gmbh"
- },
- "sohu": {
- "name": "Sohu",
- "categoryId": 7,
- "url": "http://www.sohu.com",
- "companyId": "sohu"
- },
- "sojern": {
- "name": "Sojern",
- "categoryId": 4,
- "url": "http://www.sojern.com/",
- "companyId": "sojern"
- },
- "sokrati": {
- "name": "Sokrati",
- "categoryId": 4,
- "url": "http://sokrati.com/",
- "companyId": "sokrati"
- },
- "solads.media": {
- "name": "solads.media",
- "categoryId": 4,
- "url": "http://solads.media/",
- "companyId": null
- },
- "solidopinion": {
- "name": "SolidOpinion",
- "categoryId": 2,
- "url": "https://solidopinion.com/",
- "companyId": "solidopinion"
- },
- "solve_media": {
- "name": "Solve Media",
- "categoryId": 4,
- "url": "http://solvemedia.com/",
- "companyId": "solve_media"
- },
- "soma_2": {
- "name": "SOMA 2",
- "categoryId": 4,
- "url": "http://www.webcombi.de/",
- "companyId": "soma_2_gmbh"
- },
- "somoaudience": {
- "name": "SoMo Audience",
- "categoryId": 4,
- "url": "https://somoaudience.com/",
- "companyId": "somoaudience"
- },
- "sonobi": {
- "name": "Sonobi",
- "categoryId": 4,
- "url": "http://sonobi.com/",
- "companyId": "sonobi"
- },
- "sophus3": {
- "name": "Sophus3",
- "categoryId": 4,
- "url": "http://www.sophus3.com/",
- "companyId": "sophus3"
- },
- "sortable": {
- "name": "Sortable",
- "categoryId": 4,
- "url": "https://sortable.com/",
- "companyId": "sortable"
- },
- "soundcloud": {
- "name": "SoundCloud",
- "categoryId": 0,
- "url": "http://soundcloud.com/",
- "companyId": "soundcloud"
- },
- "sourceknowledge_pixel": {
- "name": "SourceKnowledge Pixel",
- "categoryId": 4,
- "url": "http://www.provenpixel.com/",
- "companyId": "sourceknowledge"
- },
- "sourcepoint": {
- "name": "Sourcepoint",
- "categoryId": 4,
- "url": "https://www.sourcepoint.com/",
- "companyId": "sourcepoint"
- },
- "sovrn": {
- "name": "sovrn",
- "categoryId": 4,
- "url": "https://www.sovrn.com/",
- "companyId": "sovrn"
- },
- "sovrn_viewability_solutions": {
- "name": "Sovrn Signal",
- "categoryId": 4,
- "url": "https://www.sovrn.com/publishers/signal/",
- "companyId": "sovrn"
- },
- "spark_studios": {
- "name": "Spark Studios",
- "categoryId": 0,
- "url": "http://www.sparkstudios.com/",
- "companyId": "spark_studios"
- },
- "sparkasse.de": {
- "name": "sparkasse.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "speakpipe": {
- "name": "SpeakPipe",
- "categoryId": 2,
- "url": "http://www.speakpipe.com/",
- "companyId": "speakpipe"
- },
- "specific_media": {
- "name": "Specific Media",
- "categoryId": 4,
- "url": "http://www.specificmedia.com",
- "companyId": "specific_media"
- },
- "spectate": {
- "name": "Spectate",
- "categoryId": 6,
- "url": "http://spectate.com/",
- "companyId": "spectate"
- },
- "speed_shift_media": {
- "name": "Speed Shift Media",
- "categoryId": 4,
- "url": "http://www.speedshiftmedia.com/",
- "companyId": "speed_shift_media"
- },
- "speedcurve": {
- "name": "SpeedCurve",
- "categoryId": 6,
- "url": "https://speedcurve.com/",
- "companyId": null
- },
- "speedyads": {
- "name": "SpeedyAds",
- "categoryId": 4,
- "url": "http://www.entireweb.com/speedyads/",
- "companyId": "entireweb"
- },
- "speee": {
- "name": "Speee",
- "categoryId": 4,
- "url": "https://speee.jp",
- "companyId": "speee"
- },
- "sphere": {
- "name": "Sphere",
- "categoryId": 4,
- "url": "http://www.sphere.com/",
- "companyId": "verizon"
- },
- "spheremall": {
- "name": "SphereMall",
- "categoryId": 6,
- "url": "https://spheremall.com",
- "companyId": "spheremall"
- },
- "sphereup": {
- "name": "SphereUp",
- "categoryId": 2,
- "url": "http://zoomd.com/",
- "companyId": "zoomd"
- },
- "spicy": {
- "name": "Spicy",
- "categoryId": 4,
- "url": "http://sspicy.ru/#main",
- "companyId": "spicy_ssp"
- },
- "spider.ad": {
- "name": "Spider.Ad",
- "categoryId": 4,
- "url": "http://spider.ad/",
- "companyId": "spider.ad"
- },
- "spider_ads": {
- "name": "Spider Ads",
- "categoryId": 4,
- "url": "http://www.spiderads.eu/",
- "companyId": "spiderads"
- },
- "spinnakr": {
- "name": "Spinnakr",
- "categoryId": 6,
- "url": "http://spinnakr.com/",
- "companyId": "spinnakr"
- },
- "spokenlayer": {
- "name": "SpokenLayer",
- "categoryId": 0,
- "url": "http://www.spokenlayer.com",
- "companyId": "spokenlayer"
- },
- "spongecell": {
- "name": "Spongecell",
- "categoryId": 4,
- "url": "http://www.spongecell.com/",
- "companyId": "spongecell"
- },
- "sponsorads.de": {
- "name": "SponsorAds.de",
- "categoryId": 4,
- "url": "http://sponsorads.de",
- "companyId": "sponsorads.de"
- },
- "sportsbet_affiliates": {
- "name": "Sportsbet Affiliates",
- "categoryId": 4,
- "url": "http://www.sportsbetaffiliates.com.au/",
- "companyId": "sportsbet_affiliates"
- },
- "spot.im": {
- "name": "Spot.IM",
- "categoryId": 7,
- "url": "https://www.spot.im/",
- "companyId": "spot.im"
- },
- "spoteffect": {
- "name": "Spoteffect",
- "categoryId": 6,
- "url": "http://www.spoteffects.com/home/",
- "companyId": "spoteffect"
- },
- "spotify": {
- "name": "Spotify",
- "categoryId": 0,
- "url": "https://www.spotify.com/",
- "companyId": "spotify"
- },
- "spotify_embed": {
- "name": "Spotify Embed",
- "categoryId": 0,
- "url": "https://www.spotify.com",
- "companyId": "spotify"
- },
- "spotscenered.info": {
- "name": "spotscenered.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "spotxchange": {
- "name": "SpotX",
- "categoryId": 4,
- "url": "https://www.spotx.tv/",
- "companyId": "rtl_group"
- },
- "spoutable": {
- "name": "Spoutable",
- "categoryId": 4,
- "url": "http://spoutable.com/",
- "companyId": "spoutable"
- },
- "springboard": {
- "name": "SpringBoard",
- "categoryId": 4,
- "url": "http://home.springboardplatform.com/",
- "companyId": "springboard"
- },
- "springserve": {
- "name": "SpringServe",
- "categoryId": 4,
- "url": "http://springserve.com/",
- "companyId": "springserve"
- },
- "sprinklr": {
- "name": "Sprinklr",
- "categoryId": 4,
- "url": "https://www.sprinklr.com/",
- "companyId": "sprinklr"
- },
- "sputnik": {
- "name": "Sputnik",
- "categoryId": 6,
- "url": "https://cnt.sputnik.ru/",
- "companyId": "sputnik"
- },
- "squadata": {
- "name": "Squadata",
- "categoryId": 4,
- "url": "http://www.email-match.net/",
- "companyId": "squadata"
- },
- "squarespace.com": {
- "name": "Squarespace",
- "categoryId": 6,
- "url": "https://www.squarespace.com/",
- "companyId": null
- },
- "srvtrck.com": {
- "name": "srvtrck.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "srvvtrk.com": {
- "name": "srvvtrk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sstatic.net": {
- "name": "Stack Exchange",
- "categoryId": 9,
- "url": "https://sstatic.net/",
- "companyId": null
- },
- "st-hatena": {
- "name": "Hatena",
- "categoryId": 7,
- "url": "http://www.hatena.ne.jp/",
- "companyId": "hatena_jp"
- },
- "stackadapt": {
- "name": "StackAdapt",
- "categoryId": 4,
- "url": "http://www.stackadapt.com/",
- "companyId": "stackadapt"
- },
- "stackpathdns.com": {
- "name": "StackPath",
- "categoryId": 9,
- "url": "https://www.stackpath.com/",
- "companyId": null
- },
- "stailamedia_com": {
- "name": "stailamedia.com",
- "categoryId": 4,
- "url": "http://stailamedia.com/",
- "companyId": null
- },
- "stalluva.pro": {
- "name": "stalluva.pro",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "startapp": {
- "name": "StartApp",
- "categoryId": 4,
- "url": "https://www.startapp.com/",
- "companyId": null
- },
- "stat24": {
- "name": "Stat24",
- "categoryId": 6,
- "url": "http://www.stat24.com/en/",
- "companyId": "stat24"
- },
- "stat4u": {
- "name": "stat4u",
- "categoryId": 6,
- "url": "http://stat.4u.pl/",
- "companyId": "stat4u"
- },
- "statcounter": {
- "name": "Statcounter",
- "categoryId": 6,
- "url": "http://www.statcounter.com/",
- "companyId": "statcounter"
- },
- "stathat": {
- "name": "StatHat",
- "categoryId": 6,
- "url": "http://www.stathat.com/",
- "companyId": "stathat"
- },
- "statisfy": {
- "name": "Statisfy",
- "categoryId": 6,
- "url": "http://www.statisfy.com/",
- "companyId": "statisfy"
- },
- "statsy.net": {
- "name": "statsy.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "statuscake": {
- "name": "StatusCake",
- "categoryId": 6,
- "url": "https://www.statuscake.com/",
- "companyId": "statuscake"
- },
- "statuspage.io": {
- "name": "Statuspage",
- "categoryId": 2,
- "url": "https://www.statuspage.io/",
- "companyId": "atlassian"
- },
- "stayfriends.de": {
- "name": "stayfriends.de",
- "categoryId": 8,
- "url": "https://www.stayfriends.de/",
- "companyId": null
- },
- "steelhouse": {
- "name": "Steel House Media",
- "categoryId": 4,
- "url": "https://steelhouse.com/",
- "companyId": "steelhouse"
- },
- "steepto.com": {
- "name": "Steepto",
- "categoryId": 4,
- "url": "https://www.steepto.com/",
- "companyId": null
- },
- "stepstone.com": {
- "name": "StepStone",
- "categoryId": 8,
- "url": "https://www.stepstone.com/",
- "companyId": null
- },
- "stetic": {
- "name": "Stetic",
- "categoryId": 6,
- "url": "https://www.stetic.com/",
- "companyId": "stetic"
- },
- "stickyads": {
- "name": "StickyAds",
- "categoryId": 4,
- "url": "http://corporate.comcast.com/",
- "companyId": "comcast"
- },
- "stocktwits": {
- "name": "StockTwits",
- "categoryId": 2,
- "url": "http://stocktwits.com",
- "companyId": "stocktwits"
- },
- "storify": {
- "name": "Storify",
- "categoryId": 4,
- "url": "https://storify.com/",
- "companyId": "adobe"
- },
- "storygize": {
- "name": "Storygize",
- "categoryId": 4,
- "url": "http://www.storygize.com/",
- "companyId": null
- },
- "strands_recommender": {
- "name": "Strands Recommender",
- "categoryId": 4,
- "url": "http://recommender.strands.com",
- "companyId": "strands"
- },
- "strava": {
- "name": "Strava",
- "categoryId": 6,
- "url": "https://strava.com",
- "companyId": "strava"
- },
- "streak": {
- "name": "Streak",
- "categoryId": 2,
- "url": "http://www.streak.com/",
- "companyId": "streak"
- },
- "streamrail.com": {
- "name": "StreamRail",
- "categoryId": 4,
- "url": "https://www.streamrail.com/",
- "companyId": "ironsource"
- },
- "stride": {
- "name": "Stride",
- "categoryId": 6,
- "url": "https://www.getstride.com/",
- "companyId": "stride_software"
- },
- "stripchat.com": {
- "name": "stripchat.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stripe.com": {
- "name": "Stripe",
- "categoryId": 2,
- "url": "https://stripe.com/",
- "companyId": null
- },
- "stripst.com": {
- "name": "stripst.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stroer_digital_media": {
- "name": "Stroer Digital Media",
- "categoryId": 4,
- "url": "http://www.stroeer.de/",
- "companyId": "stroer"
- },
- "strossle": {
- "name": "Strossle",
- "categoryId": 4,
- "url": "https://strossle.com/",
- "companyId": "strossle"
- },
- "struq": {
- "name": "Struq",
- "categoryId": 4,
- "url": "http://www.struq.com/",
- "companyId": "quantcast"
- },
- "stumbleupon_widgets": {
- "name": "StumbleUpon Widgets",
- "categoryId": 7,
- "url": "http://www.stumbleupon.com/",
- "companyId": "stumbleupon"
- },
- "sub2": {
- "name": "Sub2",
- "categoryId": 4,
- "url": "http://www.sub2tech.com/",
- "companyId": "sub2"
- },
- "sublime_skinz": {
- "name": "Sublime",
- "categoryId": 4,
- "url": "https://sublimeskinz.com/home",
- "companyId": "sublime_skinz"
- },
- "suggest.io": {
- "name": "Suggest.io",
- "categoryId": 4,
- "url": "https://suggest.io/",
- "companyId": "suggest.io"
- },
- "sumologic.com": {
- "name": "Sumologic",
- "categoryId": 6,
- "url": "https://www.sumologic.com/",
- "companyId": null
- },
- "sumome": {
- "name": "Sumo",
- "categoryId": 6,
- "url": "https://sumo.com/",
- "companyId": "sumome"
- },
- "sundaysky": {
- "name": "SundaySky",
- "categoryId": 4,
- "url": "http://www.sundaysky.com/",
- "companyId": "sundaysky"
- },
- "supercounters": {
- "name": "SuperCounters",
- "categoryId": 6,
- "url": "http://www.supercounters.com/",
- "companyId": "supercounters"
- },
- "superfastcdn.com": {
- "name": "superfastcdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "supership": {
- "name": "Supership",
- "categoryId": 4,
- "url": "https://supership.jp/en/",
- "companyId": "supership"
- },
- "supplyframe": {
- "name": "SupplyFrame",
- "categoryId": 4,
- "url": "https://supplyframe.com/",
- "companyId": "supplyframe"
- },
- "surf_by_surfingbird": {
- "name": "Surf by Surfingbird",
- "categoryId": 2,
- "url": "http://surfingbird.ru/",
- "companyId": "surfingbird"
- },
- "survata": {
- "name": "Survata",
- "categoryId": 4,
- "url": "https://www.survata.com/",
- "companyId": "survata"
- },
- "sweettooth": {
- "name": "Sweettooth",
- "categoryId": 2,
- "url": "https://www.sweettoothrewards.com/",
- "companyId": "sweet_tooth_rewards"
- },
- "swiftype": {
- "name": "Swiftype",
- "categoryId": 9,
- "url": "https://swiftype.com/",
- "companyId": "elastic"
- },
- "swisscom": {
- "name": "Swisscom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "switch_concepts": {
- "name": "Switch Concepts",
- "categoryId": 4,
- "url": "http://www.switchconcepts.co.uk/",
- "companyId": "switch_concepts"
- },
- "swoop": {
- "name": "Swoop",
- "categoryId": 4,
- "url": "http://swoop.com/",
- "companyId": "swoop"
- },
- "sykes": {
- "name": "Sykes",
- "categoryId": 6,
- "url": "http://www.sykescottages.co.uk/",
- "companyId": "sykes_cottages"
- },
- "symantec": {
- "name": "Symantec (Norton Secured Seal)",
- "categoryId": 5,
- "url": "https://www.symantec.com/page.jsp?id=ssl-resources&tabID=3#",
- "companyId": "symantec"
- },
- "symphony_talent": {
- "name": "Symphony Talent",
- "categoryId": 2,
- "url": "http://www.symphonytalent.com/",
- "companyId": "symphony_talent"
- },
- "synacor": {
- "name": "Synacor",
- "categoryId": 4,
- "url": "https://www.synacor.com/",
- "companyId": "synacor"
- },
- "syncapse": {
- "name": "Syncapse",
- "categoryId": 4,
- "url": "http://www.clickable.com/",
- "companyId": "syncapse"
- },
- "synergy-e": {
- "name": "Synergy-E",
- "categoryId": 4,
- "url": "http://synergy-e.com/",
- "companyId": "synergy-e"
- },
- "t-mobile": {
- "name": "Deutsche Telekom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "t8cdn.com": {
- "name": "t8cdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "tableteducation.com": {
- "name": "tableteducation.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "taboola": {
- "name": "Taboola",
- "categoryId": 4,
- "url": "http://www.taboola.com",
- "companyId": "taboola"
- },
- "tacoda": {
- "name": "Tacoda",
- "categoryId": 4,
- "url": "http://www.tacoda.com/",
- "companyId": "verizon"
- },
- "tag_commander": {
- "name": "Commanders Act",
- "categoryId": 5,
- "url": "https://www.commandersact.com/en/",
- "companyId": "tag_commander"
- },
- "tagcade": {
- "name": "Tagcade",
- "categoryId": 4,
- "url": "https://www.pubvantage.com/",
- "companyId": "pubvantage"
- },
- "taggify": {
- "name": "Taggify",
- "categoryId": 4,
- "url": "http://new.taggify.net/",
- "companyId": "taggify"
- },
- "taggy": {
- "name": "TAGGY",
- "categoryId": 4,
- "url": "http://taggy.jp/",
- "companyId": "taggy"
- },
- "tagman": {
- "name": "TagMan",
- "categoryId": 5,
- "url": "http://www.tagman.com/",
- "companyId": "ensighten"
- },
- "tail_target": {
- "name": "Tail",
- "categoryId": 6,
- "url": "https://www.tail.digital/",
- "companyId": "tail.digital"
- },
- "tailsweep": {
- "name": "Tailsweep",
- "categoryId": 4,
- "url": "http://www.tailsweep.se/",
- "companyId": "tailsweep"
- },
- "tamedia.ch": {
- "name": "Tamedia",
- "categoryId": 4,
- "url": "https://www.tamedia.ch/",
- "companyId": null
- },
- "tanx": {
- "name": "Tanx",
- "categoryId": 4,
- "url": "http://tanx.com/",
- "companyId": "tanx"
- },
- "taobao": {
- "name": "Taobao",
- "categoryId": 4,
- "url": "https://world.taobao.com/",
- "companyId": "alibaba"
- },
- "tapad": {
- "name": "Tapad",
- "categoryId": 4,
- "url": "http://www.tapad.com/",
- "companyId": "telenor"
- },
- "tapinfluence": {
- "name": "TapInfluence",
- "categoryId": 4,
- "url": "http://theblogfrog.com/",
- "companyId": "tapinfluence"
- },
- "tarafdari": {
- "name": "Tarafdari",
- "categoryId": 4,
- "url": "https://www.tarafdari.com/",
- "companyId": "tarafdari"
- },
- "target_2_sell": {
- "name": "Target 2 Sell",
- "categoryId": 4,
- "url": "http://www.target2sell.com/en/",
- "companyId": "target_2_sell"
- },
- "target_circle": {
- "name": "Target Circle",
- "categoryId": 6,
- "url": "http://targetcircle.com",
- "companyId": "target_circle"
- },
- "target_fuel": {
- "name": "Target Fuel",
- "categoryId": 6,
- "url": "http://targetfuel.com/",
- "companyId": "target_fuel"
- },
- "tawk": {
- "name": "Tawk",
- "categoryId": 2,
- "url": "https://www.tawk.to/",
- "companyId": "tawk"
- },
- "tbn.ru": {
- "name": "TBN.ru",
- "categoryId": 4,
- "url": "http://www.agava.ru",
- "companyId": "agava"
- },
- "tchibo_de": {
- "name": "tchibo.de",
- "categoryId": 8,
- "url": "http://tchibo.de/",
- "companyId": null
- },
- "tdsrmbl_net": {
- "name": "tdsrmbl.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "teads": {
- "name": "Teads",
- "categoryId": 4,
- "url": "http://teads.tv/",
- "companyId": "teads"
- },
- "tealeaf": {
- "name": "Tealeaf",
- "categoryId": 6,
- "url": "https://www.ibm.com/digital-marketing",
- "companyId": "ibm"
- },
- "tealium": {
- "name": "Tealium",
- "categoryId": 5,
- "url": "http://www.tealium.com/",
- "companyId": "tealium"
- },
- "teaser.cc": {
- "name": "Teaser.cc",
- "categoryId": 4,
- "url": "http://www.teaser.cc/",
- "companyId": "teaser.cc"
- },
- "tedemis": {
- "name": "Tedemis",
- "categoryId": 4,
- "url": "http://www.tedemis.com",
- "companyId": "tedemis"
- },
- "teletech": {
- "name": "TeleTech",
- "categoryId": 4,
- "url": "http://www.webmetro.com/whoweare/technology.aspx",
- "companyId": "teletech"
- },
- "tender": {
- "name": "Tender",
- "categoryId": 2,
- "url": "http://www.tenderapp.com/",
- "companyId": "tender"
- },
- "tensitionschoo.club": {
- "name": "tensitionschoo.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "teroti": {
- "name": "Teroti",
- "categoryId": 4,
- "url": "http://www.teroti.com/",
- "companyId": "teroti"
- },
- "terren": {
- "name": "Terren",
- "categoryId": 4,
- "url": "http://www.webterren.com/",
- "companyId": "terren"
- },
- "teufel.de": {
- "name": "teufel.de",
- "categoryId": 8,
- "url": "https://www.teufel.de/",
- "companyId": null
- },
- "the_adex": {
- "name": "The ADEX",
- "categoryId": 4,
- "url": "http://www.theadex.com/",
- "companyId": "prosieben_sat1"
- },
- "the_deck": {
- "name": "The DECK",
- "categoryId": 4,
- "url": "http://decknetwork.net/",
- "companyId": "the_deck"
- },
- "the_guardian": {
- "name": "The Guardian",
- "categoryId": 8,
- "url": "https://www.theguardian.com/",
- "companyId": "the_guardian"
- },
- "the_reach_group": {
- "name": "The Reach Group",
- "categoryId": 4,
- "url": "http://www.redvertisment.com",
- "companyId": "the_reach_group"
- },
- "the_search_agency": {
- "name": "The Search Agency",
- "categoryId": 4,
- "url": "http://www.thesearchagency.com/",
- "companyId": "the_search_agency"
- },
- "the_sun": {
- "name": "The Sun",
- "categoryId": 8,
- "url": "https://www.thesun.co.uk/",
- "companyId": "the_sun"
- },
- "the_weather_company": {
- "name": "The Weather Company",
- "categoryId": 4,
- "url": "http://www.theweathercompany.com/",
- "companyId": "ibm"
- },
- "themoviedb": {
- "name": "The Movie DB",
- "categoryId": 8,
- "url": "https://www.themoviedb.org/",
- "companyId": "themoviedb"
- },
- "thinglink": {
- "name": "ThingLink",
- "categoryId": 4,
- "url": "http://www.thinglink.com/",
- "companyId": "thinglink"
- },
- "threatmetrix": {
- "name": "ThreatMetrix",
- "categoryId": 6,
- "url": "http://threatmetrix.com/",
- "companyId": "threatmetrix"
- },
- "tidbit": {
- "name": "Tidbit",
- "categoryId": 2,
- "url": "http://tidbit.co.in/",
- "companyId": "tidbit"
- },
- "tidio": {
- "name": "Tidio",
- "categoryId": 2,
- "url": "https://www.tidio.com/",
- "companyId": "tidio_chat"
- },
- "tiktok_analytics": {
- "name": "TikTok Analytics",
- "categoryId": 6,
- "url": "https://analytics.tiktok.com",
- "companyId": "bytedance_inc"
- },
- "tiller": {
- "name": "Tiller",
- "categoryId": 4,
- "url": "https://www.tiller.com/",
- "companyId": "tiller"
- },
- "timezondb": {
- "name": "TimezonDB",
- "categoryId": 4,
- "url": "https://timezonedb.com/",
- "companyId": "timezonedb"
- },
- "tinypass": {
- "name": "Piano",
- "categoryId": 5,
- "url": "https://piano.io/",
- "companyId": "piano"
- },
- "tisoomi": {
- "name": "Tisoomi",
- "categoryId": 4,
- "url": "https://tisoomi-services.com/",
- "companyId": null
- },
- "tlv_media": {
- "name": "TLV Media",
- "categoryId": 4,
- "url": "http://www.tlvmedia.com",
- "companyId": "tlvmedia"
- },
- "tns": {
- "name": "TNS",
- "categoryId": 6,
- "url": "http://www.tnsglobal.com/",
- "companyId": "wpp"
- },
- "tomnewsupdate.info": {
- "name": "tomnewsupdate.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "tomorrow_focus": {
- "name": "Tomorrow Focus",
- "categoryId": 4,
- "url": "http://www.tomorrow-focus.com",
- "companyId": "hubert_burda_media"
- },
- "tonefuse": {
- "name": "ToneFuse",
- "categoryId": 4,
- "url": "http://www.tonefuse.com/",
- "companyId": "tonefuse"
- },
- "top_mail": {
- "name": "Top Mail",
- "categoryId": 6,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "toplist.cz": {
- "name": "toplist.cz",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "toponclick_com": {
- "name": "toponclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "topsy": {
- "name": "Topsy",
- "categoryId": 4,
- "url": "http://topsy.com/",
- "companyId": "topsy"
- },
- "torbit": {
- "name": "Torbit",
- "categoryId": 6,
- "url": "http://torbit.com/",
- "companyId": "torbit"
- },
- "toro": {
- "name": "TORO",
- "categoryId": 4,
- "url": "http://toroadvertising.com/",
- "companyId": "toro_advertising"
- },
- "tororango.com": {
- "name": "tororango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "total_media": {
- "name": "Total Media",
- "categoryId": 4,
- "url": "http://www.totalmedia.co.il/eng/",
- "companyId": "total_media"
- },
- "touchcommerce": {
- "name": "Nuance",
- "categoryId": 2,
- "url": "https://www.nuance.com/omni-channel-customer-engagement/digital.html",
- "companyId": "touchcommerce"
- },
- "tovarro.com": {
- "name": "Tovarro",
- "categoryId": 4,
- "url": "https://www.tovarro.com/",
- "companyId": null
- },
- "tp-cdn.com": {
- "name": "TrialPay",
- "categoryId": 4,
- "url": "https://www.trialpay.com/",
- "companyId": null
- },
- "tracc.it": {
- "name": "Kiwe.io",
- "categoryId": 6,
- "url": "https://www.kiwe.io/",
- "companyId": null
- },
- "tracemyip": {
- "name": "TraceMyIP",
- "categoryId": 4,
- "url": "http://www.tracemyip.org/",
- "companyId": "tracemyip"
- },
- "traceview": {
- "name": "TraceView",
- "categoryId": 6,
- "url": "http://www.appneta.com/",
- "companyId": "appneta"
- },
- "track_duck": {
- "name": "Track Duck",
- "categoryId": 6,
- "url": "https://trackduck.com/",
- "companyId": "track_duck"
- },
- "trackjs": {
- "name": "TrackJS",
- "categoryId": 6,
- "url": "http://www.trackjs.com/",
- "companyId": "trackjs"
- },
- "trackset_conversionlab": {
- "name": "Trackset ConversionLab",
- "categoryId": 4,
- "url": "http://www.trackset.com/",
- "companyId": "trackset"
- },
- "trackuity": {
- "name": "Trackuity",
- "categoryId": 2,
- "url": "http://www.trackuity.com/",
- "companyId": "trackuity"
- },
- "tradedesk": {
- "name": "TradeDesk",
- "categoryId": 4,
- "url": "http://www.thetradedesk.com/",
- "companyId": "the_trade_desk"
- },
- "tradedoubler": {
- "name": "TradeDoubler",
- "categoryId": 4,
- "url": "http://www.tradedoubler.com/",
- "companyId": "tradedoubler"
- },
- "tradelab": {
- "name": "Tradelab",
- "categoryId": 4,
- "url": "http://www.tradelab.fr/",
- "companyId": "tradelab"
- },
- "tradetracker": {
- "name": "TradeTracker",
- "categoryId": 4,
- "url": "http://www.tradetracker.com",
- "companyId": "tradetracker"
- },
- "traffective": {
- "name": "Traffective",
- "categoryId": 4,
- "url": "https://traffective.com/",
- "companyId": null
- },
- "traffic_fuel": {
- "name": "Traffic Fuel",
- "categoryId": 4,
- "url": "https://trafficfuel.com/",
- "companyId": "traffic_fuel"
- },
- "traffic_revenue": {
- "name": "Traffic Revenue",
- "categoryId": 4,
- "url": "http://www.trafficrevenue.net/",
- "companyId": "traffic_revenue"
- },
- "traffic_stars": {
- "name": "Traffic Stars",
- "categoryId": 3,
- "url": "https://trafficstars.com/#index_page",
- "companyId": "traffic_stars"
- },
- "trafficbroker": {
- "name": "TrafficBroker",
- "categoryId": 4,
- "url": "http://trafficbroker.com/",
- "companyId": "trafficbroker"
- },
- "trafficfabrik.com": {
- "name": "Traffic Fabrik",
- "categoryId": 3,
- "url": "https://www.trafficfabrik.com/",
- "companyId": null
- },
- "trafficfactory": {
- "name": "Traffic Factory",
- "categoryId": 4,
- "url": "https://www.trafficfactory.biz/",
- "companyId": null
- },
- "trafficforce": {
- "name": "TrafficForce",
- "categoryId": 4,
- "url": "http://www.trafficforce.com/",
- "companyId": "trafficforce"
- },
- "traffichaus": {
- "name": "TrafficHaus",
- "categoryId": 3,
- "url": "http://www.traffichaus.com",
- "companyId": "traffichaus"
- },
- "trafficjunky": {
- "name": "TrafficJunky",
- "categoryId": 3,
- "url": "http://www.trafficjunky.net/",
- "companyId": "trafficjunky"
- },
- "traffiliate": {
- "name": "Traffiliate",
- "categoryId": 4,
- "url": "http://www.traffiliate.com/",
- "companyId": "dsnr_media_group"
- },
- "trafic": {
- "name": "Trafic",
- "categoryId": 6,
- "url": "http://www.trafic.ro/",
- "companyId": "trafic"
- },
- "trafmag.com": {
- "name": "TrafMag",
- "categoryId": 4,
- "url": "https://trafmag.com/",
- "companyId": "trafmag"
- },
- "transcend": {
- "name": "Transcend Consent",
- "categoryId": 14,
- "url": "https://transcend.io/consent/",
- "companyId": "transcend"
- },
- "transcend_telemetry": {
- "name": "Transcend Telemetry",
- "categoryId": 6,
- "url": "https://transcend.io",
- "companyId": "transcend"
- },
- "transmatic": {
- "name": "Transmatic",
- "categoryId": 6,
- "url": "http://www.transmatico.com/en/",
- "companyId": "transmatico"
- },
- "travel_audience": {
- "name": "Travel Audience",
- "categoryId": 6,
- "url": "https://travelaudience.com/",
- "companyId": "travel_audience"
- },
- "trbo": {
- "name": "trbo",
- "categoryId": 4,
- "url": "http://www.trbo.com/",
- "companyId": "trbo"
- },
- "treasuredata": {
- "name": "Treasure Data",
- "categoryId": 6,
- "url": "https://www.treasuredata.com/",
- "companyId": "arm"
- },
- "tremor_video": {
- "name": "Tremor Video",
- "categoryId": 0,
- "url": "http://www.tremormedia.com/",
- "companyId": "tremor_video"
- },
- "trendcounter": {
- "name": "trendcounter",
- "categoryId": 6,
- "url": "http://www.trendcounter.com/",
- "companyId": "trendcounter"
- },
- "trendemon": {
- "name": "TrenDemon",
- "categoryId": 6,
- "url": "http://trendemon.com",
- "companyId": "trendemon"
- },
- "tribal_fusion": {
- "name": "Tribal Fusion",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com/",
- "companyId": "exponential_interactive"
- },
- "tribal_fusion_notice": {
- "name": "Tribal Fusion Notice",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com",
- "companyId": "exponential_interactive"
- },
- "triblio": {
- "name": "Triblio",
- "categoryId": 6,
- "url": "https://triblio.com/",
- "companyId": "triblio"
- },
- "trigger_mail_marketing": {
- "name": "Trigger Mail Marketing",
- "categoryId": 4,
- "url": "http://www.triggeremailmarketing.com/",
- "companyId": "trigger_mail_marketing"
- },
- "triggerbee": {
- "name": "Triggerbee",
- "categoryId": 2,
- "url": "https://triggerbee.com/",
- "companyId": "triggerbee"
- },
- "tripadvisor": {
- "name": "TripAdvisor",
- "categoryId": 8,
- "url": "http://iac.com/",
- "companyId": "iac_apps"
- },
- "triplelift": {
- "name": "TripleLift",
- "categoryId": 4,
- "url": "http://triplelift.com/",
- "companyId": "triplelift"
- },
- "triptease": {
- "name": "Triptease",
- "categoryId": 2,
- "url": "https://www.triptease.com",
- "companyId": "triptease"
- },
- "triton_digital": {
- "name": "Triton Digital",
- "categoryId": 0,
- "url": "http://www.tritondigital.com/",
- "companyId": "triton_digital"
- },
- "trovus_revelations": {
- "name": "Trovus Revelations",
- "categoryId": 4,
- "url": "http://www.trovus.co.uk/",
- "companyId": "trovus_revelations"
- },
- "trsv3.com": {
- "name": "trsv3.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "true_fit": {
- "name": "True Fit",
- "categoryId": 4,
- "url": "https://www.truefit.com/",
- "companyId": "true_fit"
- },
- "trueanthem": {
- "name": "True Anthem",
- "categoryId": 4,
- "url": "https://www.trueanthem.com/",
- "companyId": "trueanthem"
- },
- "trueffect": {
- "name": "TruEffect",
- "categoryId": 4,
- "url": "http://www.trueffect.com/",
- "companyId": "trueffect"
- },
- "truehits.net": {
- "name": "Truehits.net",
- "categoryId": 6,
- "url": "http://truehits.net/",
- "companyId": "truehits.net"
- },
- "trumba": {
- "name": "Trumba",
- "categoryId": 4,
- "url": "http://www.trumba.com",
- "companyId": "trumba"
- },
- "truoptik": {
- "name": "Tru Optik",
- "categoryId": 6,
- "url": "http://truoptik.com/",
- "companyId": null
- },
- "trustarc": {
- "name": "TrustArc",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_consent": {
- "name": "Truste Consent",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_notice": {
- "name": "TRUSTe Notice",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "truste_seal": {
- "name": "TRUSTe Seal",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "trusted_shops": {
- "name": "Trusted Shops",
- "categoryId": 5,
- "url": "http://www.trustedshops.com/",
- "companyId": "trusted_shops"
- },
- "trustev": {
- "name": "Trustev",
- "categoryId": 6,
- "url": "http://www.trustev.com/",
- "companyId": "trustev"
- },
- "trustlogo": {
- "name": "TrustLogo",
- "categoryId": 5,
- "url": "http://www.comodo.com/",
- "companyId": "comodo"
- },
- "trustpilot": {
- "name": "Trustpilot",
- "categoryId": 2,
- "url": "http://www.trustpilot.com",
- "companyId": "trustpilot"
- },
- "trustwave.com": {
- "name": "Trustwave",
- "categoryId": 8,
- "url": "https://www.trustwave.com/home/",
- "companyId": null
- },
- "tubecorporate": {
- "name": "Tube Corporate",
- "categoryId": 3,
- "url": "https://tubecorporate.com/",
- "companyId": null
- },
- "tubecup.org": {
- "name": "tubecup.org",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "tubemogul": {
- "name": "TubeMogul",
- "categoryId": 4,
- "url": "http://tubemogul.com/",
- "companyId": "tubemogul"
- },
- "tumblr_analytics": {
- "name": "Tumblr Analytics",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "tumblr_buttons": {
- "name": "Tumblr Buttons",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tumblr_dashboard": {
- "name": "Tumblr Dashboard",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tune_in": {
- "name": "Tune In",
- "categoryId": 0,
- "url": "http://tunein.com/",
- "companyId": "tunein"
- },
- "turbo": {
- "name": "Turbo",
- "categoryId": 4,
- "url": "http://www.turboadv.com/",
- "companyId": "turbo"
- },
- "turn_inc.": {
- "name": "Turn Inc.",
- "categoryId": 4,
- "url": "https://www.amobee.com/company/",
- "companyId": "singtel"
- },
- "turner": {
- "name": "Warner Media",
- "categoryId": 6,
- "url": "https://www.warnermedia.com/",
- "companyId": "turner"
- },
- "turnsocial": {
- "name": "TurnSocial",
- "categoryId": 7,
- "url": "http://turnsocial.com/",
- "companyId": "turnsocial"
- },
- "turnto": {
- "name": "TurnTo",
- "categoryId": 2,
- "url": "http://www.turntonetworks.com/",
- "companyId": "turnto_networks"
- },
- "tvsquared.com": {
- "name": "TVSquared",
- "categoryId": 4,
- "url": "http://tvsquared.com/",
- "companyId": "tvsquared"
- },
- "tweetboard": {
- "name": "Tweetboard",
- "categoryId": 7,
- "url": "http://tweetboard.com/alpha/",
- "companyId": "tweetboard"
- },
- "tweetmeme": {
- "name": "TweetMeme",
- "categoryId": 7,
- "url": "http://tweetmeme.com/",
- "companyId": "tweetmeme"
- },
- "twenga": {
- "name": "Twenga Solutions",
- "categoryId": 4,
- "url": "https://www.twenga-solutions.com/",
- "companyId": null
- },
- "twiago": {
- "name": "Twiago",
- "categoryId": 4,
- "url": "https://www.twiago.com/",
- "companyId": "twiago"
- },
- "twine": {
- "name": "Twine",
- "categoryId": 6,
- "url": "http://twinedigital.com/",
- "companyId": "twine_digital"
- },
- "twitch.tv": {
- "name": "Twitch",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitch_cdn": {
- "name": "Twitch CDN",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitter": {
- "name": "Twitter",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twitter_ads": {
- "name": "Twitter Advertising",
- "categoryId": 4,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_analytics": {
- "name": "Twitter Analytics",
- "categoryId": 6,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twitter_badge": {
- "name": "Twitter Badge",
- "categoryId": 7,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_button": {
- "name": "Twitter Button",
- "categoryId": 7,
- "url": "http://twitter.com",
- "companyId": "twitter"
- },
- "twitter_conversion_tracking": {
- "name": "Twitter Conversion Tracking",
- "categoryId": 4,
- "url": "https://twitter.com/",
- "companyId": "twitter"
- },
- "twitter_for_business": {
- "name": "Twitter for Business",
- "categoryId": 4,
- "url": "https://business.twitter.com/",
- "companyId": "twitter"
- },
- "twitter_syndication": {
- "name": "Twitter Syndication",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twittercounter": {
- "name": "TwitterCounter",
- "categoryId": 6,
- "url": "http://twittercounter.com/",
- "companyId": "twitter_counter"
- },
- "twyn": {
- "name": "Twyn",
- "categoryId": 4,
- "url": "http://www.twyn.com",
- "companyId": "twyn"
- },
- "txxx.com": {
- "name": "txxx.com",
- "categoryId": 8,
- "url": "https://txxx.com",
- "companyId": null
- },
- "tynt": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://www.tynt.com/",
- "companyId": "33across"
- },
- "typeform": {
- "name": "Typeform",
- "categoryId": 2,
- "url": "https://www.typeform.com/",
- "companyId": null
- },
- "typepad_stats": {
- "name": "Typepad Stats",
- "categoryId": 6,
- "url": "http://www.typepad.com/features/statistics.ht",
- "companyId": "typepad"
- },
- "typography.com": {
- "name": "Webfonts by Hoefler&Co",
- "categoryId": 9,
- "url": "https://www.typography.com/",
- "companyId": null
- },
- "tyroo": {
- "name": "Tyroo",
- "categoryId": 7,
- "url": "http://www.tyroo.com/",
- "companyId": "tyroo"
- },
- "tzetze": {
- "name": "TzeTze",
- "categoryId": 2,
- "url": "http://www.tzetze.it/",
- "companyId": "tzetze"
- },
- "ubersetzung-app.com": {
- "name": "ubersetzung-app.com",
- "categoryId": 12,
- "url": "https://www.ubersetzung-app.com/",
- "companyId": null
- },
- "ucfunnel": {
- "name": "ucfunnel",
- "categoryId": 4,
- "url": "https://www.ucfunnel.com/",
- "companyId": "ucfunnel"
- },
- "ucoz": {
- "name": "uCoz",
- "categoryId": 6,
- "url": "http://www.ucoz.net/",
- "companyId": "ucoz"
- },
- "uliza": {
- "name": "Uliza",
- "categoryId": 4,
- "url": "http://uliza.jp/index.html",
- "companyId": "uliza"
- },
- "umbel": {
- "name": "Umbel",
- "categoryId": 6,
- "url": "http://umbel.com",
- "companyId": "umbel"
- },
- "umebiggestern.club": {
- "name": "umebiggestern.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "unanimis": {
- "name": "Unanimis",
- "categoryId": 4,
- "url": "http://www.unanimis.co.uk/",
- "companyId": "switch_concepts"
- },
- "unbounce": {
- "name": "Unbounce",
- "categoryId": 6,
- "url": "http://unbounce.com/",
- "companyId": "unbounce"
- },
- "unbxd": {
- "name": "UNBXD",
- "categoryId": 6,
- "url": "http://unbxd.com/",
- "companyId": "unbxd"
- },
- "under-box.com": {
- "name": "under-box.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "undercomputer.com": {
- "name": "undercomputer.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "underdog_media": {
- "name": "Underdog Media",
- "categoryId": 4,
- "url": "http://www.underdogmedia.com",
- "companyId": "underdog_media"
- },
- "undertone": {
- "name": "Undertone",
- "categoryId": 4,
- "url": "https://www.undertone.com/",
- "companyId": "perion"
- },
- "unica": {
- "name": "Unica",
- "categoryId": 2,
- "url": "http://www.unica.com/",
- "companyId": "ibm"
- },
- "unister": {
- "name": "Unister",
- "categoryId": 6,
- "url": "http://www.unister.de/",
- "companyId": "unister"
- },
- "unite": {
- "name": "Unite",
- "categoryId": 4,
- "url": "http://unite.me/#",
- "companyId": "unite"
- },
- "united_digital_group": {
- "name": "United Digital Group",
- "categoryId": 4,
- "url": "https://www.udg.de/",
- "companyId": "united_digital_group"
- },
- "united_internet_media_gmbh": {
- "name": "United Internet Media GmbH",
- "categoryId": 4,
- "url": "https://www.united-internet.de/",
- "companyId": "united_internet"
- },
- "univide": {
- "name": "Univide",
- "categoryId": 4,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "unpkg.com": {
- "name": "unpkg",
- "categoryId": 9,
- "url": "https://unpkg.com/#/",
- "companyId": null
- },
- "unruly_media": {
- "name": "Unruly Media",
- "categoryId": 4,
- "url": "http://www.unrulymedia.com/",
- "companyId": "unruly"
- },
- "untriel_finger_printing": {
- "name": "Untriel Finger Printing",
- "categoryId": 6,
- "url": "https://www.untriel.nl/",
- "companyId": "untriel"
- },
- "upland_clickability_beacon": {
- "name": "Upland Clickability Beacon",
- "categoryId": 4,
- "url": "http://www.clickability.com/",
- "companyId": "upland_software"
- },
- "uppr.de": {
- "name": "uppr GmbH",
- "categoryId": 4,
- "url": "https://uppr.de/",
- "companyId": null
- },
- "upravel.com": {
- "name": "upravel.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "upsellit": {
- "name": "UpSellit",
- "categoryId": 2,
- "url": "http://www.upsellit.com",
- "companyId": "upsellit"
- },
- "upsight": {
- "name": "Upsight",
- "categoryId": 6,
- "url": "http://www.upsight.com/",
- "companyId": "upsight"
- },
- "uptain": {
- "name": "Uptain",
- "categoryId": 6,
- "url": "http://www.uptain.de/en/regaining-lost-customers/",
- "companyId": "uptain"
- },
- "uptolike.com": {
- "name": "Uptolike",
- "categoryId": 7,
- "url": "https://www.uptolike.com/",
- "companyId": "uptolike"
- },
- "uptrends": {
- "name": "Uptrends",
- "categoryId": 6,
- "url": "http://www.uptrends.com/",
- "companyId": "uptrends"
- },
- "urban-media.com": {
- "name": "Urban Media GmbH",
- "categoryId": 4,
- "url": "https://www.urban-media.com/",
- "companyId": null
- },
- "urban_airship": {
- "name": "Urban Airship",
- "categoryId": 6,
- "url": "https://www.urbanairship.com/",
- "companyId": "urban_airship"
- },
- "usability_tools": {
- "name": "Usability Tools",
- "categoryId": 6,
- "url": "http://usabilitytools.com/",
- "companyId": "usability_tools"
- },
- "usabilla": {
- "name": "Usabilla",
- "categoryId": 2,
- "url": "https://usabilla.com/",
- "companyId": "usabilla"
- },
- "usemax": {
- "name": "Usemax",
- "categoryId": 4,
- "url": "http://www.usemax.de",
- "companyId": "usemax"
- },
- "usemessages.com": {
- "name": "usemessages.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "usercycle": {
- "name": "USERcycle",
- "categoryId": 6,
- "url": "http://usercycle.com/",
- "companyId": "usercycle"
- },
- "userdive": {
- "name": "USERDIVE",
- "categoryId": 6,
- "url": "http://userdive.com/",
- "companyId": "userdive"
- },
- "userecho": {
- "name": "UserEcho",
- "categoryId": 2,
- "url": "http://userecho.com",
- "companyId": "userecho"
- },
- "userlike.com": {
- "name": "Userlike",
- "categoryId": 2,
- "url": "https://www.userlike.com/",
- "companyId": "userlike"
- },
- "userpulse": {
- "name": "UserPulse",
- "categoryId": 2,
- "url": "http://www.userpulse.com/",
- "companyId": "userpulse"
- },
- "userreplay": {
- "name": "UserReplay",
- "categoryId": 6,
- "url": "https://www.userreplay.com/",
- "companyId": "userreplay"
- },
- "userreport": {
- "name": "UserReport",
- "categoryId": 2,
- "url": "http://www.userreport.com/",
- "companyId": "userreport"
- },
- "userrules": {
- "name": "UserRules",
- "categoryId": 2,
- "url": "http://www.userrules.com/",
- "companyId": "userrules_software"
- },
- "usersnap": {
- "name": "Usersnap",
- "categoryId": 2,
- "url": "http://usersnap.com/",
- "companyId": "usersnap"
- },
- "uservoice": {
- "name": "UserVoice",
- "categoryId": 2,
- "url": "http://uservoice.com/",
- "companyId": "uservoice"
- },
- "userzoom.com": {
- "name": "UserZoom",
- "categoryId": 2,
- "url": "https://www.userzoom.com/",
- "companyId": "userzoom"
- },
- "usocial": {
- "name": "Usocial",
- "categoryId": 7,
- "url": "https://usocial.pro/en",
- "companyId": "usocial"
- },
- "utarget": {
- "name": "uTarget",
- "categoryId": 4,
- "url": "http://utarget.ru/",
- "companyId": "utarget"
- },
- "uuidksinc.net": {
- "name": "uuidksinc.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "v12_group": {
- "name": "V12 Group",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "vacaneedasap.com": {
- "name": "vacaneedasap.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "valassis": {
- "name": "Valassis",
- "categoryId": 4,
- "url": "http://www.brand.net/",
- "companyId": "valassis"
- },
- "validclick": {
- "name": "ValidClick",
- "categoryId": 4,
- "url": "http://inuvo.com/",
- "companyId": "inuvo"
- },
- "valiton": {
- "name": "Valiton",
- "categoryId": 4,
- "url": "https://www.valiton.com/",
- "companyId": "hubert_burda_media"
- },
- "valueclick_media": {
- "name": "ValueClick Media",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "valuecommerce": {
- "name": "ValueCommerce",
- "categoryId": 4,
- "url": "https://www.valuecommerce.ne.jp",
- "companyId": "valuecommerce"
- },
- "valued_opinions": {
- "name": "Valued Opinions",
- "categoryId": 4,
- "url": "http://valuedopinions.com",
- "companyId": "valued_opinions"
- },
- "vanksen": {
- "name": "Vanksen",
- "categoryId": 4,
- "url": "http://www.buzzparadise.com/",
- "companyId": "vanksen"
- },
- "varick_media_management": {
- "name": "Varick Media Management",
- "categoryId": 4,
- "url": "http://www.varickmm.com/",
- "companyId": "varick_media_management"
- },
- "vcita": {
- "name": "Vcita",
- "categoryId": 6,
- "url": "https://www.vcita.com/",
- "companyId": "vcita"
- },
- "vcommission": {
- "name": "vCommission",
- "categoryId": 4,
- "url": "http://www.vcommission.com/",
- "companyId": "vcommission"
- },
- "vdopia": {
- "name": "Vdopia",
- "categoryId": 4,
- "url": "http://mobile.vdopia.com/",
- "companyId": "vdopia"
- },
- "ve_interactive": {
- "name": "Ve Interactive",
- "categoryId": 4,
- "url": "https://www.veinteractive.com",
- "companyId": "ve_interactive"
- },
- "vee24": {
- "name": "VEE24",
- "categoryId": 0,
- "url": "https://www.vee24.com/",
- "companyId": "vee24"
- },
- "velocecdn.com": {
- "name": "velocecdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "velti_mgage_visualize": {
- "name": "Velti mGage Visualize",
- "categoryId": 4,
- "url": "http://www.velti.com/",
- "companyId": "velti"
- },
- "vendemore": {
- "name": "Vendemore",
- "categoryId": 1,
- "url": "https://vendemore.com/",
- "companyId": "ratos"
- },
- "venturead.com": {
- "name": "venturead.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "venyoo": {
- "name": "Venyoo",
- "categoryId": 2,
- "url": "http://venyoo.ru/",
- "companyId": "venyoo"
- },
- "veoxa": {
- "name": "Veoxa",
- "categoryId": 4,
- "url": "http://www.veoxa.com/",
- "companyId": "veoxa"
- },
- "vergic.com": {
- "name": "Vergic",
- "categoryId": 1,
- "url": "https://www.vergic.com/",
- "companyId": null
- },
- "vero": {
- "name": "Vero",
- "categoryId": 4,
- "url": "http://www.getvero.com/",
- "companyId": "vero"
- },
- "vertical_acuity": {
- "name": "Vertical Acuity",
- "categoryId": 4,
- "url": "http://www.verticalacuity.com/",
- "companyId": "outbrain"
- },
- "vertical_leap": {
- "name": "Vertical Leap",
- "categoryId": 4,
- "url": "http://www.vertical-leap.co.uk/",
- "companyId": "vertical_leap"
- },
- "verticalresponse": {
- "name": "VerticalResponse",
- "categoryId": 4,
- "url": "http://www.verticalresponse.com",
- "companyId": "verticalresponse"
- },
- "verticalscope": {
- "name": "VerticalScope",
- "categoryId": 4,
- "url": "http://www.verticalscope.com",
- "companyId": "verticalscope"
- },
- "vertoz": {
- "name": "Vertoz",
- "categoryId": 4,
- "url": "http://www.vertoz.com/",
- "companyId": "vertoz"
- },
- "veruta": {
- "name": "Veruta",
- "categoryId": 4,
- "url": "http://www.veruta.com/",
- "companyId": "veruta"
- },
- "verve_mobile": {
- "name": "Verve Mobile",
- "categoryId": 4,
- "url": "http://www.vervemobile.com/",
- "companyId": "verve_mobile"
- },
- "vg_wort": {
- "name": "VG Wort",
- "categoryId": 6,
- "url": "https://tom.vgwort.de/portal/showHelp",
- "companyId": "vg_wort"
- },
- "vi": {
- "name": "Vi",
- "categoryId": 4,
- "url": "http://www.vi.ru/",
- "companyId": "vi"
- },
- "viacom_tag_container": {
- "name": "Viacom Tag Container",
- "categoryId": 4,
- "url": "http://www.viacom.com/",
- "companyId": "viacom"
- },
- "viafoura": {
- "name": "Viafoura",
- "categoryId": 4,
- "url": "http://www.viafoura.com/",
- "companyId": "viafoura"
- },
- "vibrant_ads": {
- "name": "Vibrant Ads",
- "categoryId": 4,
- "url": "http://www.vibrantmedia.com/",
- "companyId": "vibrant_media"
- },
- "vicomi.com": {
- "name": "Vicomi",
- "categoryId": 6,
- "url": "http://www.vicomi.com/",
- "companyId": "vicomi"
- },
- "vidazoo.com": {
- "name": "Vidazoo",
- "categoryId": 4,
- "url": "https://www.vidazoo.com/",
- "companyId": null
- },
- "video_desk": {
- "name": "Video Desk",
- "categoryId": 0,
- "url": "https://www.videodesk.com/",
- "companyId": "video_desk"
- },
- "video_potok": {
- "name": "Video Potok",
- "categoryId": 0,
- "url": "http://videopotok.pro/",
- "companyId": "videopotok"
- },
- "videoadex.com": {
- "name": "VideoAdX",
- "categoryId": 4,
- "url": "https://www.videoadex.com/",
- "companyId": "digiteka"
- },
- "videology": {
- "name": "Videology",
- "categoryId": 4,
- "url": "https://videologygroup.com/",
- "companyId": "singtel"
- },
- "videonow": {
- "name": "VideoNow",
- "categoryId": 4,
- "url": "https://videonow.ru/",
- "companyId": "videonow"
- },
- "videoplayerhub.com": {
- "name": "videoplayerhub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "videoplaza": {
- "name": "Videoplaza",
- "categoryId": 4,
- "url": "http://www.videoplaza.com/",
- "companyId": "videoplaza"
- },
- "videostep": {
- "name": "VideoStep",
- "categoryId": 4,
- "url": "https://www.videostep.com/",
- "companyId": "videostep"
- },
- "vidgyor": {
- "name": "Vidgyor",
- "categoryId": 0,
- "url": "http://vidgyor.com/",
- "companyId": "vidgyor"
- },
- "vidible": {
- "name": "Vidible",
- "categoryId": 4,
- "url": "http://vidible.tv/",
- "companyId": "verizon"
- },
- "vidora": {
- "name": "Vidora",
- "categoryId": 0,
- "url": "https://www.vidora.com/",
- "companyId": "vidora"
- },
- "vietad": {
- "name": "VietAd",
- "categoryId": 4,
- "url": "http://vietad.vn/",
- "companyId": "vietad"
- },
- "viglink": {
- "name": "VigLink",
- "categoryId": 4,
- "url": "http://www.viglink.com",
- "companyId": "viglink"
- },
- "vigo": {
- "name": "Vigo",
- "categoryId": 6,
- "url": "https://vigo.one/",
- "companyId": "vigo"
- },
- "vimeo": {
- "name": "Vimeo",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "vindico_group": {
- "name": "Vindico Group",
- "categoryId": 4,
- "url": "http://www.vindicogroup.com/",
- "companyId": "vindico_group"
- },
- "vinted": {
- "name": "Vinted",
- "categoryId": 8,
- "url": "https://www.vinted.com/",
- "companyId": null
- },
- "viral_ad_network": {
- "name": "Viral Ad Network",
- "categoryId": 4,
- "url": "http://viraladnetwork.joinvan.com/",
- "companyId": "viral_ad_network"
- },
- "viral_loops": {
- "name": "Viral Loops",
- "categoryId": 2,
- "url": "https://viral-loops.com/",
- "companyId": "viral-loops"
- },
- "viralgains": {
- "name": "ViralGains",
- "categoryId": 4,
- "url": "https://www.viralgains.com/",
- "companyId": null
- },
- "viralmint": {
- "name": "ViralMint",
- "categoryId": 7,
- "url": "http://www.viralmint.com",
- "companyId": "viralmint"
- },
- "virgul": {
- "name": "Virgul",
- "categoryId": 4,
- "url": "http://www.virgul.com/",
- "companyId": "virgul"
- },
- "virool_player": {
- "name": "Virool Player",
- "categoryId": 4,
- "url": "https://www.virool.com/",
- "companyId": "virool"
- },
- "virtusize": {
- "name": "Virtusize",
- "categoryId": 5,
- "url": "http://www.virtusize.com/",
- "companyId": "virtusize"
- },
- "visible_measures": {
- "name": "Visible Measures",
- "categoryId": 4,
- "url": "http://www.visiblemeasures.com/",
- "companyId": "visible_measures"
- },
- "vision_critical": {
- "name": "Vision Critical",
- "categoryId": 6,
- "url": "http://visioncritical.com/",
- "companyId": "vision_critical"
- },
- "visit_streamer": {
- "name": "Visit Streamer",
- "categoryId": 6,
- "url": "http://www.visitstreamer.com/",
- "companyId": "visit_streamer"
- },
- "visitortrack": {
- "name": "VisitorTrack",
- "categoryId": 4,
- "url": "http://www.netfactor.com/",
- "companyId": "netfactor"
- },
- "visitorville": {
- "name": "VisitorVille",
- "categoryId": 6,
- "url": "http://www.visitorville.com",
- "companyId": "visitorville"
- },
- "visscore": {
- "name": "VisScore",
- "categoryId": 4,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "visual_iq": {
- "name": "Visual IQ",
- "categoryId": 6,
- "url": "http://visualiq.com/",
- "companyId": "visualiq"
- },
- "visual_revenue": {
- "name": "Visual Revenue",
- "categoryId": 6,
- "url": "http://visualrevenue.com/",
- "companyId": "outbrain"
- },
- "visual_website_optimizer": {
- "name": "VWO",
- "categoryId": 6,
- "url": "https://vwo.com/",
- "companyId": "wingify"
- },
- "visualdna": {
- "name": "VisualDNA",
- "categoryId": 4,
- "url": "http://www.visualdna.com/",
- "companyId": "nielsen"
- },
- "visualstudio.com": {
- "name": "Visualstudio.com",
- "categoryId": 8,
- "url": "https://www.visualstudio.com/",
- "companyId": "microsoft"
- },
- "visualvisitor": {
- "name": "VisualVisitor",
- "categoryId": 6,
- "url": "http://www.visualvisitor.com/",
- "companyId": "visualvisitor"
- },
- "vivalu": {
- "name": "VIVALU",
- "categoryId": 4,
- "url": "https://www.vivalu.com/",
- "companyId": "vivalu"
- },
- "vivistats": {
- "name": "ViviStats",
- "categoryId": 6,
- "url": "http://en.vivistats.com/",
- "companyId": "vivistats"
- },
- "vizury": {
- "name": "Vizury",
- "categoryId": 4,
- "url": "http://www.vizury.com/website/",
- "companyId": "vizury"
- },
- "vizzit": {
- "name": "Vizzit",
- "categoryId": 4,
- "url": "http://www.vizzit.se/h/en/",
- "companyId": "vizzit"
- },
- "vk.com": {
- "name": "Vk.com",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "megafon"
- },
- "vkontakte": {
- "name": "VKontakte",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "megafon"
- },
- "vkontakte_widgets": {
- "name": "VKontakte Widgets",
- "categoryId": 7,
- "url": "http://vk.com/developers.php",
- "companyId": "megafon"
- },
- "vntsm.com": {
- "name": "Venatus Media",
- "categoryId": 4,
- "url": "https://www.venatusmedia.com/",
- "companyId": "venatus"
- },
- "vodafone.de": {
- "name": "vodafone.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "voicefive": {
- "name": "VoiceFive",
- "categoryId": 6,
- "url": "https://www.voicefive.com",
- "companyId": "comscore"
- },
- "volusion_chat": {
- "name": "Volusion Chat",
- "categoryId": 2,
- "url": "https://www.volusion.com/",
- "companyId": "volusion"
- },
- "voluum": {
- "name": "Voluum",
- "categoryId": 4,
- "url": "https://voluum.com/",
- "companyId": "codewise"
- },
- "vooxe.com": {
- "name": "vooxe.com",
- "categoryId": 8,
- "url": "http://www.vooxe.com/",
- "companyId": null
- },
- "vorwerk.de": {
- "name": "vorwerk.de",
- "categoryId": 8,
- "url": "https://corporate.vorwerk.de/home/",
- "companyId": null
- },
- "vox": {
- "name": "Vox",
- "categoryId": 2,
- "url": "https://www.voxmedia.com/",
- "companyId": "vox"
- },
- "voxus": {
- "name": "Voxus",
- "categoryId": 4,
- "url": "http://www.voxus.tv/",
- "companyId": "voxus"
- },
- "vpon": {
- "name": "VPON",
- "categoryId": 4,
- "url": "http://www.vpon.com/en/",
- "companyId": "vpon"
- },
- "vpscash": {
- "name": "VPSCash",
- "categoryId": 4,
- "url": "http://vpscash.nl/home",
- "companyId": "vps_cash"
- },
- "vtracy.de": {
- "name": "vtracy.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "vuukle": {
- "name": "Vuukle",
- "categoryId": 6,
- "url": "http://vuukle.com/",
- "companyId": "vuukle"
- },
- "vzaar": {
- "name": "Vzaar",
- "categoryId": 0,
- "url": "http://vzaar.com/",
- "companyId": "vzaar"
- },
- "w3counter": {
- "name": "W3Counter",
- "categoryId": 6,
- "url": "http://www.w3counter.com/",
- "companyId": "awio_web_services"
- },
- "w3roi": {
- "name": "w3roi",
- "categoryId": 6,
- "url": "http://www.w3roi.com/",
- "companyId": "w3roi"
- },
- "wahoha": {
- "name": "Wahoha",
- "categoryId": 2,
- "url": "http://wahoha.com/",
- "companyId": "wahoha"
- },
- "walkme.com": {
- "name": "WalkMe",
- "categoryId": 2,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "wall_street_on_demand": {
- "name": "Wall Street on Demand",
- "categoryId": 4,
- "url": "http://www.wallst.com",
- "companyId": "markit_on_demand"
- },
- "walmart": {
- "name": "Walmart",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "wamcash": {
- "name": "Wamcash",
- "categoryId": 3,
- "url": "http://wamcash.com/",
- "companyId": "wamcash"
- },
- "wanelo": {
- "name": "Wanelo",
- "categoryId": 2,
- "url": "https://wanelo.com/",
- "companyId": "wanelo"
- },
- "warp.ly": {
- "name": "Warp.ly",
- "categoryId": 6,
- "url": "https://warp.ly/",
- "companyId": "warp.ly"
- },
- "way2traffic": {
- "name": "Way2traffic",
- "categoryId": 4,
- "url": "http://www.way2traffic.com/",
- "companyId": "way2traffic"
- },
- "wayfair_com": {
- "name": "Wayfair",
- "categoryId": 8,
- "url": "https://www.wayfair.com/",
- "companyId": null
- },
- "wdr.de": {
- "name": "wdr.de",
- "categoryId": 8,
- "url": "https://www1.wdr.de/index.html",
- "companyId": null
- },
- "web-stat": {
- "name": "Web-Stat",
- "categoryId": 6,
- "url": "http://www.web-stat.net/",
- "companyId": "web-stat"
- },
- "web.de": {
- "name": "web.de",
- "categoryId": 8,
- "url": "https://web.de/",
- "companyId": null
- },
- "web.stat": {
- "name": "Web.STAT",
- "categoryId": 6,
- "url": "http://webstat.net/",
- "companyId": "web.stat"
- },
- "web_service_award": {
- "name": "Web Service Award",
- "categoryId": 6,
- "url": "http://webserviceaward.com/english/",
- "companyId": "web_service_award"
- },
- "web_traxs": {
- "name": "Web Traxs",
- "categoryId": 6,
- "url": "http://websolutions.thomasnet.com/web-traxs-analytics.php",
- "companyId": "thomasnet_websolutions"
- },
- "web_wipe_analytics": {
- "name": "Web Wipe Analytics",
- "categoryId": 6,
- "url": "http://tensquare.de",
- "companyId": "tensquare"
- },
- "webads": {
- "name": "WebAds",
- "categoryId": 4,
- "url": "http://www.webads.co.uk/",
- "companyId": "webads"
- },
- "webantenna": {
- "name": "WebAntenna",
- "categoryId": 6,
- "url": "http://www.bebit.co.jp/webantenna/",
- "companyId": "webantenna"
- },
- "webclicks24_com": {
- "name": "webclicks24.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "webclose.net": {
- "name": "webclose.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "webcollage": {
- "name": "Webcollage",
- "categoryId": 2,
- "url": "http://www.webcollage.com/",
- "companyId": "webcollage"
- },
- "webedia": {
- "name": "Webedia",
- "categoryId": 4,
- "url": "http://fr.webedia-group.com/",
- "companyId": "fimalac_group"
- },
- "webeffective": {
- "name": "WebEffective",
- "categoryId": 6,
- "url": "http://www.keynote.com/",
- "companyId": "keynote_systems"
- },
- "webengage": {
- "name": "WebEngage",
- "categoryId": 2,
- "url": "http://webengage.com/",
- "companyId": "webengage"
- },
- "webgains": {
- "name": "Webgains",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "webgozar": {
- "name": "WebGozar",
- "categoryId": 6,
- "url": "http://webgozar.com/",
- "companyId": "webgozar"
- },
- "webhelpje": {
- "name": "Webhelpje",
- "categoryId": 2,
- "url": "http://www.webhelpje.nl/",
- "companyId": "webhelpje"
- },
- "webleads_tracker": {
- "name": "Webleads Tracker",
- "categoryId": 6,
- "url": "http://www.webleads-tracker.fr/",
- "companyId": "webleads_tracker"
- },
- "webmecanik": {
- "name": "Webmecanik",
- "categoryId": 6,
- "url": "http://www.webmecanik.com/en/",
- "companyId": "webmecanik"
- },
- "weborama": {
- "name": "Weborama",
- "categoryId": 4,
- "url": "https://weborama.com/",
- "companyId": "weborama"
- },
- "webprospector": {
- "name": "WebProspector",
- "categoryId": 6,
- "url": "http://www.webprospector.de/",
- "companyId": "webprospector"
- },
- "webstat": {
- "name": "WebSTAT",
- "categoryId": 6,
- "url": "http://www.webstat.com/",
- "companyId": "webstat"
- },
- "webstat.se": {
- "name": "Webstat.se",
- "categoryId": 6,
- "url": "http://www.webstat.se/",
- "companyId": "webstat.se"
- },
- "webtrack": {
- "name": "webtrack",
- "categoryId": 6,
- "url": "http://www.webtrack.biz/",
- "companyId": "webtrack"
- },
- "webtraffic": {
- "name": "Webtraffic",
- "categoryId": 6,
- "url": "http://www.webtraffic.se/",
- "companyId": "schibsted_asa"
- },
- "webtrekk": {
- "name": "Webtrekk",
- "categoryId": 6,
- "url": "http://www.webtrekk.com/",
- "companyId": "webtrekk"
- },
- "webtrekk_cc": {
- "name": "Webtrek Control Cookie",
- "categoryId": 6,
- "url": "https://www.webtrekk.com/en/home/",
- "companyId": "webtrekk"
- },
- "webtrends": {
- "name": "Webtrends",
- "categoryId": 6,
- "url": "http://www.webtrends.com/",
- "companyId": "webtrends"
- },
- "webtrends_ads": {
- "name": "Webtrends Ads",
- "categoryId": 4,
- "url": "http://www.webtrends.com",
- "companyId": "webtrends"
- },
- "webvisor": {
- "name": "WebVisor",
- "categoryId": 6,
- "url": "http://webvisor.ru",
- "companyId": "yandex"
- },
- "wedcs": {
- "name": "WEDCS",
- "categoryId": 4,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "weebly_ads": {
- "name": "Weebly Ads",
- "categoryId": 4,
- "url": "http://www.weebly.com",
- "companyId": "weebly"
- },
- "weibo_widget": {
- "name": "Weibo Widget",
- "categoryId": 4,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "westlotto_com": {
- "name": "westlotto.com",
- "categoryId": 8,
- "url": "http://westlotto.com/",
- "companyId": null
- },
- "wetter_com": {
- "name": "Wetter.com",
- "categoryId": 8,
- "url": "http://www.wetter.com/",
- "companyId": null
- },
- "whatbroadcast": {
- "name": "Whatbroadcast",
- "categoryId": 2,
- "url": "https://www.whatsbroadcast.com/",
- "companyId": "whatsbroadcast"
- },
- "whos.amung.us": {
- "name": "Whos.amung.us",
- "categoryId": 6,
- "url": "http://whos.amung.us/",
- "companyId": "whos.amung.us"
- },
- "whoson": {
- "name": "WhosOn",
- "categoryId": 6,
- "url": "http://www.whoson.com/",
- "companyId": "whoson"
- },
- "wibbitz": {
- "name": "Wibbitz",
- "categoryId": 0,
- "url": "http://www.wibbitz.com/",
- "companyId": "wibbitz"
- },
- "wibiya_toolbar": {
- "name": "Wibiya Toolbar",
- "categoryId": 7,
- "url": "http://www.wibiya.com/",
- "companyId": "wibiya"
- },
- "widdit": {
- "name": "Widdit",
- "categoryId": 2,
- "url": "http://www.predictad.com/",
- "companyId": "widdit"
- },
- "widerplanet": {
- "name": "WiderPlanet",
- "categoryId": 4,
- "url": "http://widerplanet.com/",
- "companyId": "wider_planet"
- },
- "widespace": {
- "name": "Widespace",
- "categoryId": 4,
- "url": "https://www.widespace.com/",
- "companyId": "widespace"
- },
- "widgetbox": {
- "name": "WidgetBox",
- "categoryId": 2,
- "url": "http://www.widgetbox.com/",
- "companyId": "widgetbox"
- },
- "wiget_media": {
- "name": "Wiget Media",
- "categoryId": 4,
- "url": "http://wigetmedia.com",
- "companyId": "wiget_media"
- },
- "wigzo": {
- "name": "Wigzo",
- "categoryId": 4,
- "url": "https://www.wigzo.com/",
- "companyId": "wigzo"
- },
- "wikia-services.com": {
- "name": "Wikia Services",
- "categoryId": 8,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikia_beacon": {
- "name": "Wikia Beacon",
- "categoryId": 6,
- "url": "http://www.wikia.com/",
- "companyId": "wikia"
- },
- "wikia_cdn": {
- "name": "Wikia CDN",
- "categoryId": 9,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikimedia.org": {
- "name": "WikiMedia",
- "categoryId": 9,
- "url": "https://wikimediafoundation.org/",
- "companyId": "wikimedia_foundation"
- },
- "winaffiliates": {
- "name": "Winaffiliates",
- "categoryId": 6,
- "url": "http://www.winaffiliates.com/",
- "companyId": "winaffiliates"
- },
- "wipmania": {
- "name": "WIPmania",
- "categoryId": 6,
- "url": "http://www.wipmania.com/",
- "companyId": "wipmania"
- },
- "wiqhit": {
- "name": "WiQhit",
- "categoryId": 6,
- "url": "https://wiqhit.com/nl/",
- "companyId": "wiqhit"
- },
- "wirecard": {
- "name": "Wirecard",
- "categoryId": 2,
- "url": "https://www.wirecard.com/",
- "companyId": null
- },
- "wiredminds": {
- "name": "WiredMinds",
- "categoryId": 6,
- "url": "http://www.wiredminds.de/",
- "companyId": "wiredminds"
- },
- "wirtualna_polska": {
- "name": "Wirtualna Polska",
- "categoryId": 4,
- "url": "http://reklama.wp.pl/",
- "companyId": "wirtualna_polska"
- },
- "wisepops": {
- "name": "WisePops",
- "categoryId": 4,
- "url": "http://wisepops.com/",
- "companyId": "wisepops"
- },
- "wishpond": {
- "name": "Wishpond",
- "categoryId": 2,
- "url": "http://wishpond.com",
- "companyId": "wishpond"
- },
- "wistia": {
- "name": "Wistia",
- "categoryId": 6,
- "url": "http://wistia.com/",
- "companyId": "wistia"
- },
- "wix.com": {
- "name": "Wix",
- "categoryId": 8,
- "url": "https://www.wix.com/",
- "companyId": "wix"
- },
- "wixab": {
- "name": "Wixab",
- "categoryId": 6,
- "url": "http://wixab.com/en/",
- "companyId": "wixab"
- },
- "wixmp": {
- "name": "Wix Media Platform",
- "categoryId": 9,
- "url": "https://www.wixmp.com/",
- "companyId": "wix"
- },
- "wnzmauurgol.com": {
- "name": "wnzmauurgol.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "wonderpush": {
- "name": "WonderPush",
- "categoryId": 2,
- "url": "https://www.wonderpush.com/",
- "companyId": "wonderpush"
- },
- "woopic.com": {
- "name": "woopic.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "woopra": {
- "name": "Woopra",
- "categoryId": 6,
- "url": "http://www.woopra.com/",
- "companyId": "woopra"
- },
- "wordpress_ads": {
- "name": "Wordpress Ads",
- "categoryId": 4,
- "url": "https://wordpress.com/",
- "companyId": "automattic"
- },
- "wordpress_stats": {
- "name": "WordPress Stats",
- "categoryId": 6,
- "url": "http://wordpress.org/extend/plugins/stats/",
- "companyId": "automattic"
- },
- "wordstream": {
- "name": "WordStream",
- "categoryId": 6,
- "url": "http://www.wordstream.com/",
- "companyId": "wordstream"
- },
- "worldnaturenet_xyz": {
- "name": "worldnaturenet.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "wp.pl": {
- "name": "Wirtualna Polska ",
- "categoryId": 4,
- "url": "https://www.wp.pl/",
- "companyId": "wp"
- },
- "wp_engine": {
- "name": "WP Engine",
- "categoryId": 5,
- "url": "https://wpengine.com/",
- "companyId": "wp_engine"
- },
- "writeup_clickanalyzer": {
- "name": "WriteUp ClickAnalyzer",
- "categoryId": 6,
- "url": "http://www.writeup.co.jp/",
- "companyId": "writeup"
- },
- "wurfl": {
- "name": "WURFL",
- "categoryId": 6,
- "url": "https://web.wurfl.io/",
- "companyId": "scientiamobile"
- },
- "wwwpromoter": {
- "name": "WWWPromoter",
- "categoryId": 4,
- "url": "http://wwwpromoter.com/",
- "companyId": "wwwpromoter"
- },
- "wykop": {
- "name": "Wykop",
- "categoryId": 7,
- "url": "http://www.wykop.pl",
- "companyId": "wykop"
- },
- "wysistat.com": {
- "name": "WysiStat",
- "categoryId": 6,
- "url": "https://www.wysistat.net/",
- "companyId": "wysistat"
- },
- "wywy.com": {
- "name": "wywy",
- "categoryId": 4,
- "url": "http://wywy.com/",
- "companyId": "tvsquared"
- },
- "x-lift": {
- "name": "X-lift",
- "categoryId": 4,
- "url": "https://www.x-lift.jp/",
- "companyId": "x-lift"
- },
- "xapads": {
- "name": "Xapads",
- "categoryId": 4,
- "url": "http://www.xapads.com/",
- "companyId": "xapads"
- },
- "xen-media.com": {
- "name": "xen-media.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "xfreeservice.com": {
- "name": "xfreeservice.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "xhamster": {
- "name": "xHamster",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "xing": {
- "name": "Xing",
- "categoryId": 6,
- "url": "http://www.xing.com/",
- "companyId": "xing"
- },
- "xmediaclicks": {
- "name": "XmediaClicks",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "xnxx_cdn": {
- "name": "xnxx CDN",
- "categoryId": 9,
- "url": "https://www.xnxx.com",
- "companyId": null
- },
- "xplosion": {
- "name": "xplosion",
- "categoryId": 4,
- "url": "http://www.xplosion.de/",
- "companyId": "xplosion_interactive"
- },
- "xtend": {
- "name": "XTEND",
- "categoryId": 4,
- "url": "http://www.xtendmedia.com/",
- "companyId": "matomy_media"
- },
- "xvideos_com": {
- "name": "xvideos.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "xxxlshop.de": {
- "name": "xxxlshop.de",
- "categoryId": 8,
- "url": "https://www.xxxlshop.de/",
- "companyId": null
- },
- "xxxlutz": {
- "name": "XXXLutz",
- "categoryId": 8,
- "url": "https://www.xxxlutz.de/",
- "companyId": "xxxlutz"
- },
- "yabbi": {
- "name": "Yabbi",
- "categoryId": 4,
- "url": "https://yabbi.me/",
- "companyId": null
- },
- "yabuka": {
- "name": "Yabuka",
- "categoryId": 4,
- "url": "http://www.yabuka.com/",
- "companyId": "yabuka"
- },
- "yahoo": {
- "name": "Yahoo!",
- "categoryId": 6,
- "url": "https://yahoo.com",
- "companyId": "verizon"
- },
- "yahoo_ad_exchange": {
- "name": "Yahoo! Ad Exchange",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/advertising",
- "companyId": "verizon"
- },
- "yahoo_ad_manager": {
- "name": "Yahoo! Ad Manager Plus",
- "categoryId": 4,
- "url": "https://developer.yahoo.com/analytics/",
- "companyId": "verizon"
- },
- "yahoo_analytics": {
- "name": "Yahoo! Analytics",
- "categoryId": 6,
- "url": "http://web.analytics.yahoo.com/",
- "companyId": "verizon"
- },
- "yahoo_commerce_central": {
- "name": "Yahoo! Commerce Central",
- "categoryId": 4,
- "url": "http://lexity.com/",
- "companyId": "verizon"
- },
- "yahoo_dot_tag": {
- "name": "Yahoo! DOT tag",
- "categoryId": 4,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "yahoo_japan_retargeting": {
- "name": "Yahoo! Japan Retargeting",
- "categoryId": 4,
- "url": "http://www.yahoo.com/",
- "companyId": "yahoo_japan"
- },
- "yahoo_overture": {
- "name": "Yahoo! Overture",
- "categoryId": 4,
- "url": "http://searchmarketing.yahoo.com",
- "companyId": "verizon"
- },
- "yahoo_small_business": {
- "name": "Yahoo! Small Business",
- "categoryId": 4,
- "url": "http://www.pixazza.com/",
- "companyId": "verizon"
- },
- "yandex": {
- "name": "Yandex",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex.api": {
- "name": "Yandex.API",
- "categoryId": 2,
- "url": "http://api.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_adexchange": {
- "name": "Yandex AdExchange",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_advisor": {
- "name": "Yandex.Advisor",
- "categoryId": 12,
- "url": "https://sovetnik.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_direct": {
- "name": "Yandex.Direct",
- "categoryId": 6,
- "url": "https://direct.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_metrika": {
- "name": "Yandex Metrika",
- "categoryId": 6,
- "url": "https://metrica.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_passport": {
- "name": "Yandex Passport",
- "categoryId": 2,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yapfiles.ru": {
- "name": "yapfiles.ru",
- "categoryId": 8,
- "url": "https://www.yapfiles.ru/",
- "companyId": null
- },
- "yashi": {
- "name": "Yashi",
- "categoryId": 4,
- "url": "http://www.yashi.com/",
- "companyId": "mass2"
- },
- "ybrant_media": {
- "name": "Ybrant Media",
- "categoryId": 4,
- "url": "http://www.addynamix.com/index.html",
- "companyId": "ybrant_media"
- },
- "ycontent": {
- "name": "Ycontent",
- "categoryId": 0,
- "url": "http://ycontent.com.br/",
- "companyId": "ycontent"
- },
- "yektanet": {
- "name": "Yektanet",
- "categoryId": 4,
- "url": "https://yektanet.com/",
- "companyId": "yektanet"
- },
- "yengo": {
- "name": "Yengo",
- "categoryId": 4,
- "url": "http://www.yengo.com/",
- "companyId": "yengo"
- },
- "yesmail": {
- "name": "Yesmail",
- "categoryId": 4,
- "url": "http://www.yesmail.com/",
- "companyId": "yes_mail"
- },
- "yesup_advertising": {
- "name": "YesUp Advertising",
- "categoryId": 4,
- "url": "http://yesup.net/",
- "companyId": "yesup"
- },
- "yesware": {
- "name": "Yesware",
- "categoryId": 2,
- "url": "http://www.yesware.com/",
- "companyId": "yesware"
- },
- "yieldbot": {
- "name": "Yieldbot",
- "categoryId": 6,
- "url": "https://www.yieldbot.com/",
- "companyId": "yieldbot"
- },
- "yieldify": {
- "name": "Yieldify",
- "categoryId": 4,
- "url": "http://www.yieldify.com/",
- "companyId": "yieldify"
- },
- "yieldlab": {
- "name": "Yieldlab",
- "categoryId": 4,
- "url": "http://www.yieldlab.de/",
- "companyId": "prosieben_sat1"
- },
- "yieldlove": {
- "name": "Yieldlove",
- "categoryId": 4,
- "url": "https://www.yieldlove.com/",
- "companyId": "yieldlove"
- },
- "yieldmo": {
- "name": "Yieldmo",
- "categoryId": 4,
- "url": "https://www.yieldmo.com/",
- "companyId": "yieldmo"
- },
- "yieldr": {
- "name": "Yieldr Ads",
- "categoryId": 4,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldr_air": {
- "name": "Yieldr Air",
- "categoryId": 6,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldsquare": {
- "name": "YieldSquare",
- "categoryId": 4,
- "url": "http://www.yieldsquare.com/",
- "companyId": "yieldsquare"
- },
- "yle": {
- "name": "YLE",
- "categoryId": 6,
- "url": "http://yle.fi/",
- "companyId": "yle"
- },
- "yllixmedia": {
- "name": "YllixMedia",
- "categoryId": 4,
- "url": "http://yllix.com/",
- "companyId": "yllixmedia"
- },
- "ymetrica1.com": {
- "name": "ymetrica1.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ymzrrizntbhde.com": {
- "name": "ymzrrizntbhde.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "yo_button": {
- "name": "Yo Button",
- "categoryId": 2,
- "url": "http://www.justyo.co/",
- "companyId": "yo"
- },
- "yodle": {
- "name": "Yodle",
- "categoryId": 4,
- "url": "http://www.yodle.com/",
- "companyId": "yodle"
- },
- "yola_analytics": {
- "name": "Yola Analytics",
- "categoryId": 6,
- "url": "https://www.yola.com/",
- "companyId": "yola"
- },
- "yomedia": {
- "name": "Yomedia",
- "categoryId": 4,
- "url": "http://www.pinetech.vn/",
- "companyId": "yomedia"
- },
- "yoochoose.net": {
- "name": "YOOCHOOSE",
- "categoryId": 4,
- "url": "https://yoochoose.com/",
- "companyId": null
- },
- "yotpo": {
- "name": "Yotpo",
- "categoryId": 1,
- "url": "https://www.yotpo.com/",
- "companyId": "yotpo"
- },
- "yottaa": {
- "name": "Yottaa",
- "categoryId": 6,
- "url": "https://www.yottaa.com/",
- "companyId": "yottaa"
- },
- "yottly": {
- "name": "Yottly",
- "categoryId": 4,
- "url": "https://yottly.com/",
- "companyId": "yottly"
- },
- "youcanbookme": {
- "name": "YouCanBookMe",
- "categoryId": 2,
- "url": "https://youcanbook.me/",
- "companyId": "youcanbookme"
- },
- "youku": {
- "name": "Youku",
- "categoryId": 0,
- "url": "http://www.youku.com/",
- "companyId": "youku"
- },
- "youporn": {
- "name": "YouPorn",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "youtube": {
- "name": "YouTube",
- "categoryId": 0,
- "url": "https://www.youtube.com/",
- "companyId": "google"
- },
- "youtube_subscription": {
- "name": "YouTube Subscription",
- "categoryId": 2,
- "url": "http://www.youtube.com/",
- "companyId": "google"
- },
- "yp": {
- "name": "YellowPages",
- "categoryId": 4,
- "url": "https://www.yellowpages.com/",
- "companyId": "thryv"
- },
- "ysance": {
- "name": "YSance",
- "categoryId": 4,
- "url": "http://www.ysance.com/en/index.html",
- "companyId": "ysance"
- },
- "yume": {
- "name": "YuMe",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yume,_inc.": {
- "name": "YuMe, Inc.",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yusp": {
- "name": "Yusp",
- "categoryId": 6,
- "url": "https://www.yusp.com/",
- "companyId": "yusp"
- },
- "zadarma": {
- "name": "Zadarma",
- "categoryId": 2,
- "url": "https://zadarma.com/",
- "companyId": "zadarma"
- },
- "zalando_de": {
- "name": "zalando.de",
- "categoryId": 8,
- "url": "https://zalando.de/",
- "companyId": "zalando"
- },
- "zalo": {
- "name": "Zalo",
- "categoryId": 2,
- "url": "https://zaloapp.com/",
- "companyId": "zalo"
- },
- "zanox": {
- "name": "Zanox",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "zaparena": {
- "name": "zaparena",
- "categoryId": 4,
- "url": "http://www.zaparena.com/",
- "companyId": "zapunited"
- },
- "zappos": {
- "name": "Zappos",
- "categoryId": 4,
- "url": "http://www.zappos.com/",
- "companyId": "zappos"
- },
- "zdassets.com": {
- "name": "Zendesk CDN",
- "categoryId": 8,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zebestof.com": {
- "name": "Zebestof",
- "categoryId": 4,
- "url": "http://www.zebestof.com/en/home/",
- "companyId": "zebestof"
- },
- "zedo": {
- "name": "Zedo",
- "categoryId": 4,
- "url": "http://www.zedo.com/",
- "companyId": "zedo"
- },
- "zemanta": {
- "name": "Zemanta",
- "categoryId": 2,
- "url": "http://www.zemanta.com/",
- "companyId": "zemanta"
- },
- "zencoder": {
- "name": "Zencoder",
- "categoryId": 0,
- "url": "https://zencoder.com/en/",
- "companyId": "zencoder"
- },
- "zendesk": {
- "name": "Zendesk",
- "categoryId": 2,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zergnet": {
- "name": "ZergNet",
- "categoryId": 2,
- "url": "http://www.zergnet.com/info",
- "companyId": "zergnet"
- },
- "zero.kz": {
- "name": "ZERO.kz",
- "categoryId": 6,
- "url": "http://zero.kz/",
- "companyId": "neolabs_zero"
- },
- "zeta": {
- "name": "Zeta",
- "categoryId": 2,
- "url": "https://zetaglobal.com/",
- "companyId": "zeta"
- },
- "zeusclicks": {
- "name": "ZeusClicks",
- "categoryId": 4,
- "url": "http://zeusclicks.com/",
- "companyId": null
- },
- "ziff_davis": {
- "name": "Ziff Davis",
- "categoryId": 4,
- "url": "https://www.ziffdavis.com/",
- "companyId": "ziff_davis"
- },
- "zift_solutions": {
- "name": "Zift Solutions",
- "categoryId": 6,
- "url": "https://ziftsolutions.com/",
- "companyId": "zift_solutions"
- },
- "zimbio.com": {
- "name": "Zimbio",
- "categoryId": 8,
- "url": "http://www.zimbio.com/",
- "companyId": null
- },
- "zippyshare_widget": {
- "name": "Zippyshare Widget",
- "categoryId": 2,
- "url": "http://www.zippyshare.com",
- "companyId": "zippyshare"
- },
- "zmags": {
- "name": "Zmags",
- "categoryId": 6,
- "url": "https://zmags.com/",
- "companyId": "zmags"
- },
- "zmctrack.net": {
- "name": "zmctrack.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zog.link": {
- "name": "zog.link",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zoho": {
- "name": "Zoho",
- "categoryId": 6,
- "url": "https://www.zohocorp.com/index.html",
- "companyId": "zoho_corp"
- },
- "zononi.com": {
- "name": "zononi.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "zopim": {
- "name": "Zopim",
- "categoryId": 2,
- "url": "http://www.zopim.com/",
- "companyId": "zendesk"
- },
- "zukxd6fkxqn.com": {
- "name": "zukxd6fkxqn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zwaar": {
- "name": "Zwaar",
- "categoryId": 4,
- "url": "http://www.zwaar.org",
- "companyId": "zwaar"
- },
- "zypmedia": {
- "name": "ZypMedia",
- "categoryId": 4,
- "url": "http://www.zypmedia.com/",
- "companyId": "zypmedia"
- }
- },
- "trackerDomains": {
- "mmtro.com": "1000mercis",
- "creative-serving.com": "161media",
- "p161.net": "161media",
- "analytics.163.com": "163",
- "1822direkt.de": "1822direkt.de",
- "1dmp.io": "1dmp.io",
- "opecloud.com": "1plusx",
- "1sponsor.com": "1sponsor",
- "tm.dentsu.de": "1tag",
- "1and1.com": "1und1",
- "1und1.de": "1und1",
- "uicdn.com": "1und1",
- "website-start.de": "1und1",
- "24-ads.com": "24-ads.com",
- "247-inc.net": "24_7",
- "d1af033869koo7.cloudfront.net": "24_7",
- "counter.24log.ru": "24log",
- "24smi.net": "24smi",
- "24smi.org": "24smi",
- "2leep.com": "2leep",
- "33across.com": "33across",
- "3dstats.com": "3dstats",
- "4cdn.org": "4chan",
- "4finance.com": "4finance_com",
- "4wnet.com": "4w_marketplace",
- "d3aa0ztdn3oibi.cloudfront.net": "500friends",
- "51.la": "51.la",
- "5min.com": "5min_media",
- "d1lm7kd3bd3yo9.cloudfront.net": "6sense",
- "grepdata.com": "6sense",
- "77tracking.com": "77tracking",
- "7tv.de": "7tv.de",
- "888media.net": "888media",
- "hit.8digits.com": "8digits",
- "94j7afz2nr.xyz": "94j7afz2nr.xyz",
- "statsanalytics.com": "99stats",
- "a3cloud.net": "a3cloud_net",
- "a8.net": "a8",
- "aaxads.com": "aaxads.com",
- "abtasty.com": "ab_tasty",
- "d1447tq2m68ekg.cloudfront.net": "ab_tasty",
- "ablida.de": "ablida",
- "ablida.net": "ablida",
- "durasite.net": "accelia",
- "accengage.net": "accengage",
- "ax.xrea.com": "accessanalyzer",
- "accesstrade.net": "accesstrade",
- "agcdn.com": "accord_group",
- "accmgr.com": "accordant_media",
- "p-td.com": "accuen_media",
- "acestream.net": "acestream.net",
- "acint.net": "acint.net",
- "acloudimages.com": "acloudimages",
- "acpm.fr": "acpm.fr",
- "acquia.com": "acquia.com",
- "ziyu.net": "acrweb",
- "actionpay.ru": "actionpay",
- "adnwb.ru": "actionpay",
- "adonweb.ru": "actionpay",
- "active-agent.com": "active_agent",
- "trackcmp.net": "active_campaign",
- "active-srv02.de": "active_performance",
- "active-tracking.de": "active_performance",
- "activeconversion.com": "activeconversion",
- "a-cast.jp": "activecore",
- "activemeter.com": "activemeter",
- "go.activengage.com": "activengage",
- "actonsoftware.com": "acton",
- "acuityplatform.com": "acuity_ads",
- "acxiom-online.com": "acxiom",
- "acxiom.com": "acxiom",
- "ad-blocker.org": "ad-blocker.org",
- "ads.ad-center.com": "ad-center",
- "ad-delivery.net": "ad-delivery.net",
- "ad-sys.com": "ad-sys",
- "adagionet.com": "ad.agio",
- "ad2click.go2cloud.org": "ad2click",
- "ad2games.com": "ad2games",
- "ad360.vn": "ad360",
- "ads.ad4game.com": "ad4game",
- "ad4mat.ar": "ad4mat",
- "ad4mat.at": "ad4mat",
- "ad4mat.be": "ad4mat",
- "ad4mat.bg": "ad4mat",
- "ad4mat.br": "ad4mat",
- "ad4mat.ch": "ad4mat",
- "ad4mat.co.uk": "ad4mat",
- "ad4mat.cz": "ad4mat",
- "ad4mat.de": "ad4mat",
- "ad4mat.dk": "ad4mat",
- "ad4mat.es": "ad4mat",
- "ad4mat.fi": "ad4mat",
- "ad4mat.fr": "ad4mat",
- "ad4mat.gr": "ad4mat",
- "ad4mat.hu": "ad4mat",
- "ad4mat.it": "ad4mat",
- "ad4mat.mx": "ad4mat",
- "ad4mat.net": "ad4mat",
- "ad4mat.nl": "ad4mat",
- "ad4mat.no": "ad4mat",
- "ad4mat.pl": "ad4mat",
- "ad4mat.ro": "ad4mat",
- "ad4mat.ru": "ad4mat",
- "ad4mat.se": "ad4mat",
- "ad4mat.tr": "ad4mat",
- "ad6.fr": "ad6media",
- "ad6media.co.uk": "ad6media",
- "ad6media.com": "ad6media",
- "ad6media.es": "ad6media",
- "ad6media.fr": "ad6media",
- "a2dfp.net": "ad_decisive",
- "addynamo.net": "ad_dynamo",
- "ebis.ne.jp": "ad_ebis",
- "adlightning.com": "ad_lightning",
- "admagnet.net": "ad_magnet",
- "amimg.net": "ad_magnet",
- "adspirit.de": "ad_spirit",
- "adspirit.net": "ad_spirit",
- "adac.de": "adac_de",
- "adacado.com": "adacado",
- "ozonemedia.com": "adadyn",
- "adrtx.net": "adality_gmbh",
- "adalliance.io": "adalliance.io",
- "adalyser.com": "adalyser.com",
- "adaos-ads.net": "adaos",
- "adap.tv": "adap.tv",
- "smrtlnks.com": "adaptiveblue_smartlinks",
- "yieldoptimizer.com": "adara_analytics",
- "adnetwork.adasiaholdings.com": "adasia_holdings",
- "adbetclickin.pink": "adbetclickin.pink",
- "adbetnet.com": "adbetnet.com",
- "adblade.com": "adblade.com",
- "adbooth.com": "adbooth",
- "adbooth.net": "adbooth",
- "adbox.lv": "adbox",
- "adbrn.com": "adbrain",
- "adbrite.com": "adbrite",
- "adbull.com": "adbull",
- "adbutler.com": "adbutler",
- "adc-serv.net": "adc_media",
- "adc-srv.net": "adc_media",
- "adcash.com": "adcash",
- "vuroll.in": "adchakra",
- "acs86.com": "adchina",
- "csbew.com": "adchina",
- "irs09.com": "adchina",
- "adcito.com": "adcito",
- "adcitomedia.com": "adcito",
- "adclear.net": "adclear",
- "swift.adclerks.com": "adclerks",
- "adclickmedia.com": "adclickmedia",
- "adclickzone.go2cloud.org": "adclickzone",
- "ad-cloud.jp": "adcloud",
- "admarvel.s3.amazonaws.com": "adcolony",
- "ads.admarvel.com": "adcolony",
- "adrdgt.com": "adconion",
- "amgdgt.com": "adconion",
- "adcrowd.com": "adcrowd",
- "shop2market.com": "adcurve",
- "addtocalendar.com": "add_to_calendar",
- "dpmsrv.com": "addaptive",
- "yagiay.com": "addefend",
- "addfreestats.com": "addfreestats",
- "addinto.com": "addinto",
- "addshoppers.com": "addshoppers",
- "shop.pe": "addshoppers",
- "addthis.com": "addthis",
- "addthiscdn.com": "addthis",
- "addthisedge.com": "addthis",
- "b2btracking.addvalue.de": "addvalue",
- "addyon.com": "addyon",
- "adeasy.ru": "adeasy",
- "ipredictive.com": "adelphic",
- "adengage.com": "adengage",
- "adespresso.com": "adespresso",
- "adexcite.com": "adexcite",
- "adextent.com": "adextent",
- "adf.ly": "adf.ly",
- "adfalcon.com": "adfalcon",
- "adfoc.us": "adfocus",
- "js.adforgames.com": "adforgames",
- "adform.net": "adform",
- "adformdsp.net": "adform",
- "seadform.net": "adform",
- "adfox.ru": "adfox",
- "adwolf.ru": "adfox",
- "adfreestyle.pl": "adfreestyle",
- "adfront.org": "adfront",
- "adfrontiers.com": "adfrontiers",
- "adgear.com": "adgear",
- "adgrx.com": "adgear",
- "adgebra.co.in": "adgebra",
- "adgenie.co.uk": "adgenie",
- "ad.adgile.com": "adgile",
- "ad.antventure.com": "adgile",
- "adglare.net": "adglare.net",
- "adsafety.net": "adglue",
- "smartadcheck.de": "adgoal",
- "smartredirect.de": "adgoal",
- "adgorithms.com": "adgorithms",
- "adgoto.com": "adgoto",
- "adguard.com": "adguard",
- "adhands.ru": "adhands",
- "adhese.be": "adhese",
- "adhese.com": "adhese",
- "adhese.net": "adhese",
- "adhitzads.com": "adhitz",
- "adhood.com": "adhood",
- "afy11.net": "adify",
- "cdn.adikteev.com": "adikteev",
- "adimpact.com": "adimpact",
- "adinch.com": "adinch",
- "adition.com": "adition",
- "adjal.com": "adjal",
- "cdn.adjs.net": "adjs",
- "adjug.com": "adjug",
- "adjust.com": "adjust",
- "adk2.com": "adk2",
- "cdn.adsrvmedia.com": "adk2",
- "cdn.cdnrl.com": "adk2",
- "adklip.com": "adklip",
- "adkengage.com": "adknowledge",
- "adknowledge.com": "adknowledge",
- "bidsystem.com": "adknowledge",
- "blogads.com": "adknowledge",
- "cubics.com": "adknowledge",
- "yarpp.org": "adknowledge",
- "adsearch.adkontekst.pl": "adkontekst",
- "netsprint.eu": "adkontekst.pl",
- "adlabs.ru": "adlabs",
- "clickiocdn.com": "adlabs",
- "luxup.ru": "adlabs",
- "mixmarket.biz": "adlabs",
- "ad-serverparc.nl": "adlantic",
- "adimg.net": "adlantis",
- "adlantis.jp": "adlantis",
- "cdn.adless.io": "adless",
- "api.publishers.adlive.io": "adlive_header_bidding",
- "adlooxtracking.com": "adloox",
- "adx1.com": "admachine",
- "adman.gr": "adman",
- "adman.in.gr": "adman",
- "admanmedia.com": "adman_media",
- "admantx.com": "admantx.com",
- "admaster.net": "admaster",
- "cdnmaster.com": "admaster",
- "admaster.com.cn": "admaster.cn",
- "admasterapi.com": "admaster.cn",
- "admatic.com.tr": "admatic",
- "ads5.admatic.com.tr": "admatic",
- "cdn2.admatic.com.tr": "admatic",
- "lib-3pas.admatrix.jp": "admatrix",
- "admaxserver.com": "admax",
- "admaxim.com": "admaxim",
- "admaya.in": "admaya",
- "admedia.com": "admedia",
- "adizio.com": "admedo_com",
- "admedo.com": "admedo_com",
- "admeira.ch": "admeira.ch",
- "admeld.com": "admeld",
- "admeo.ru": "admeo",
- "admaym.com": "admeta",
- "atemda.com": "admeta",
- "admicro.vn": "admicro",
- "vcmedia.vn": "admicro",
- "admitad.com": "admitad.com",
- "admixer.net": "admixer.net",
- "admized.com": "admized",
- "admo.tv": "admo.tv",
- "a.admob.com": "admob",
- "mm.admob.com": "admob",
- "mmv.admob.com": "admob",
- "p.admob.com": "admob",
- "run.admost.com": "admost",
- "dmmotion.com": "admotion",
- "nspmotion.com": "admotion",
- "admulti.com": "admulti",
- "adnegah.net": "adnegah",
- "adnet.vn": "adnet",
- "adnet.biz": "adnet.de",
- "adnet.de": "adnet.de",
- "adclick.lt": "adnet_media",
- "adnet.lt": "adnet_media",
- "ad.adnetwork.net": "adnetwork.net",
- "adnetworkperformance.com": "adnetworkperformance.com",
- "adserver.adnexio.com": "adnexio",
- "adnium.com": "adnium.com",
- "heias.com": "adnologies",
- "smaclick.com": "adnow",
- "st-n.ads3-adnow.com": "adnow",
- "adnymics.com": "adnymics",
- "adobe.com": "adobe_audience_manager",
- "demdex.net": "adobe_audience_manager",
- "everestjs.net": "adobe_audience_manager",
- "everesttech.net": "adobe_audience_manager",
- "scene7.com": "adobe_dynamic_media",
- "adobedtm.com": "adobe_dynamic_tag_management",
- "2o7.net": "adobe_experience_cloud",
- "du8783wkf05yr.cloudfront.net": "adobe_experience_cloud",
- "hitbox.com": "adobe_experience_cloud",
- "imageg.net": "adobe_experience_cloud",
- "nedstat.com": "adobe_experience_cloud",
- "omtrdc.net": "adobe_experience_cloud",
- "sitestat.com": "adobe_experience_cloud",
- "adobelogin.com": "adobe_login",
- "adobetag.com": "adobe_tagmanager",
- "typekit.com": "adobe_typekit",
- "typekit.net": "adobe_typekit",
- "adocean.pl": "adocean",
- "dmtry.com": "adometry",
- "adomik.com": "adomik",
- "adcde.com": "adon_network",
- "addlvr.com": "adon_network",
- "adfeedstrk.com": "adon_network",
- "adtrgt.com": "adon_network",
- "bannertgt.com": "adon_network",
- "cptgt.com": "adon_network",
- "cpvfeed.com": "adon_network",
- "cpvtgt.com": "adon_network",
- "mygeek.com": "adon_network",
- "popcde.com": "adon_network",
- "sdfje.com": "adon_network",
- "urtbk.com": "adon_network",
- "adonion.com": "adonion",
- "t.adonly.com": "adonly",
- "adoperator.com": "adoperator",
- "adoric.com": "adoric",
- "adorika.com": "adorika",
- "adorika.net": "adorika",
- "adosia.com": "adosia",
- "adotmob.com": "adotmob.com",
- "adotube.com": "adotube",
- "adparlor.com": "adparlor",
- "adparlour.com": "adparlor",
- "a4p.adpartner.pro": "adpartner",
- "adpeepshosted.com": "adpeeps",
- "adperfect.com": "adperfect",
- "adperium.com": "adperium",
- "adpilot.at": "adpilot",
- "erne.co": "adpilot",
- "adplan-ds.com": "adplan",
- "advg.jp": "adplan",
- "c.p-advg.com": "adplan",
- "adplus.co.id": "adplus",
- "adframesrc.com": "adprofy",
- "adserve.adpulse.ir": "adpulse",
- "ads.adpv.com": "adpv",
- "adreactor.com": "adreactor",
- "adrecord.com": "adrecord",
- "adrecover.com": "adrecover",
- "ad.vcm.jp": "adresult",
- "adresult.jp": "adresult",
- "adriver.ru": "adriver",
- "adroll.com": "adroll",
- "adrom.net": "adrom",
- "txt.eu": "adrom",
- "adru.net": "adru.net",
- "adrunnr.com": "adrunnr",
- "adsame.com": "adsame",
- "adsbookie.com": "adsbookie",
- "adscale.de": "adscale",
- "adscience.nl": "adscience",
- "adsco.re": "adsco.re",
- "adsensecamp.com": "adsensecamp",
- "adserverpub.com": "adserverpub",
- "online.adservicemedia.dk": "adservice_media",
- "adsfactor.net": "adsfactor",
- "ads.doclix.com": "adside",
- "adskeeper.co.uk": "adskeeper",
- "ssp.adskom.com": "adskom",
- "adslot.com": "adslot",
- "adsnative.com": "adsnative",
- "adsniper.ru": "adsniper.ru",
- "adspeed.com": "adspeed",
- "adspeed.net": "adspeed",
- "o333o.com": "adspyglass",
- "adstage-analytics.herokuapp.com": "adstage",
- "code.adstanding.com": "adstanding",
- "adstars.co.id": "adstars",
- "ad-stir.com": "adstir",
- "4dsply.com": "adsupply",
- "cdn.engine.adsupply.com": "adsupply",
- "trklnks.com": "adsupply",
- "adswizz.com": "adswizz",
- "adtaily.com": "adtaily",
- "adtaily.pl": "adtaily",
- "adtarget.me": "adtarget.me",
- "adtech.de": "adtech",
- "adtechus.com": "adtech",
- "adtegrity.net": "adtegrity",
- "adtpix.com": "adtegrity",
- "adtelligence.de": "adtelligence.de",
- "adentifi.com": "adtheorent",
- "adthink.com": "adthink",
- "advertstream.com": "adthink",
- "audienceinsights.net": "adthink",
- "adtiger.de": "adtiger",
- "adtimaserver.vn": "adtima",
- "adtng.com": "adtng.com",
- "adtoma.com": "adtoma",
- "adtomafusion.com": "adtoma",
- "adtr02.com": "adtr02.com",
- "track.adtraction.com": "adtraction",
- "adtraxx.de": "adtraxx",
- "adtriba.com": "adtriba.com",
- "adtrue.com": "adtrue",
- "adtrustmedia.com": "adtrustmedia",
- "ad.adtube.ir": "adtube",
- "awempire.com": "adult_webmaster_empire",
- "dditscdn.com": "adult_webmaster_empire",
- "livejasmin.com": "adult_webmaster_empire",
- "adultadworld.com": "adultadworld",
- "adworldmedia.com": "adultadworld",
- "adup-tech.com": "adup-tech.com",
- "advaction.ru": "advaction",
- "aucourant.info": "advaction",
- "schetu.net": "advaction",
- "dqfw2hlp4tfww.cloudfront.net": "advalo",
- "ahcdn.com": "advanced_hosters",
- "pix-cdn.org": "advanced_hosters",
- "s3.advarkads.com": "advark",
- "adventori.com": "adventori",
- "adnext.fr": "adverline",
- "adverline.com": "adverline",
- "surinter.net": "adverline",
- "adversaldisplay.com": "adversal",
- "adversalservers.com": "adversal",
- "go.adversal.com": "adversal",
- "adverserve.net": "adverserve",
- "ad.adverteerdirect.nl": "adverteerdirect",
- "adverticum.net": "adverticum",
- "advertise.com": "advertise.com",
- "advertisespace.com": "advertisespace",
- "adsdk.com": "advertising.com",
- "advertising.com": "advertising.com",
- "aol.com": "advertising.com",
- "atwola.com": "advertising.com",
- "pictela.net": "advertising.com",
- "verizonmedia.com": "advertising.com",
- "advertlets.com": "advertlets",
- "advertserve.com": "advertserve",
- "advidi.com": "advidi",
- "am10.ru": "advmaker.ru",
- "am15.net": "advmaker.ru",
- "advolution.de": "advolution",
- "adwebster.com": "adwebster",
- "ads.adwitserver.com": "adwit",
- "adworx.at": "adworx.at",
- "adworxs.net": "adworxs.net",
- "adxion.com": "adxion",
- "adxpansion.com": "adxpansion",
- "ads.adxpose.com": "adxpose",
- "event.adxpose.com": "adxpose",
- "servedby.adxpose.com": "adxpose",
- "adxprtz.com": "adxprtz.com",
- "adyoulike.com": "adyoulike",
- "omnitagjs.com": "adyoulike",
- "adzerk.net": "adzerk",
- "adzly.com": "adzly",
- "aemediatraffic.com": "aemediatraffic",
- "hprofits.com": "aemediatraffic",
- "amxdt.com": "aerify_media",
- "aerisapi.com": "aeris_weather",
- "aerisweather.com": "aeris_weather",
- "affectv.com": "affectv",
- "go.affec.tv": "affectv",
- "hybridtheory.com": "affectv",
- "track.affiliate-b.com": "affiliate-b",
- "affiliate4you.nl": "affiliate4you",
- "ads.affbuzzads.com": "affiliatebuzz",
- "affiliatefuture.com": "affiliatefuture",
- "affiliatelounge.com": "affiliatelounge",
- "affiliation-france.com": "affiliation_france",
- "affiliator.com": "affiliator",
- "affiliaweb.fr": "affiliaweb",
- "banner-rotation.com": "affilinet",
- "webmasterplan.com": "affilinet",
- "affimax.de": "affimax",
- "affinity.com": "affinity",
- "countby.com": "affinity.by",
- "affiz.net": "affiz_cpm",
- "pml.afftrack.com": "afftrack",
- "afgr2.com": "afgr2.com",
- "v2.afilio.com.br": "afilio",
- "afsanalytics.com": "afs_analystics",
- "ads.aftonbladet.se": "aftonbladet_ads",
- "aftv-serving.bid": "aftv-serving.bid",
- "agkn.com": "aggregate_knowledge",
- "agilone.com": "agilone",
- "adview.pl": "agora",
- "pingagenow.com": "ahalogy",
- "aimediagroup.com": "ai_media_group",
- "advombat.ru": "aidata",
- "aidata.io": "aidata",
- "aim4media.com": "aim4media",
- "muscache.com": "airbnb",
- "musthird.com": "airbnb",
- "airbrake.io": "airbrake",
- "airpr.com": "airpr.com",
- "ab.airpush.com": "airpush",
- "abmr.net": "akamai_technologies",
- "akamai.net": "akamai_technologies",
- "akamaihd.net": "akamai_technologies",
- "akamaized.net": "akamai_technologies",
- "akstat.io": "akamai_technologies",
- "edgekey.net": "akamai_technologies",
- "edgesuite.net": "akamai_technologies",
- "imiclk.com": "akamai_technologies",
- "akamoihd.net": "akamoihd.net",
- "adn-d.sp.gmossp-sp.jp": "akane",
- "akanoo.com": "akanoo",
- "akavita.com": "akavita",
- "ads.albawaba.com": "al_bawaba_advertising",
- "serve.albacross.com": "albacross",
- "aldi-international.com": "aldi-international.com",
- "alenty.com": "alenty",
- "alephd.com": "alephd.com",
- "alexametrics.com": "alexa_metrics",
- "d31qbv1cthcecs.cloudfront.net": "alexa_metrics",
- "d5nxst8fruw4z.cloudfront.net": "alexa_metrics",
- "alexa.com": "alexa_traffic_rank",
- "algolia.com": "algolia.net",
- "algolia.net": "algolia.net",
- "algovid.com": "algovid.com",
- "alibaba.com": "alibaba.com",
- "alicdn.com": "alibaba.com",
- "alipay.com": "alipay.com",
- "websitealive.com": "alivechat",
- "allegroimg.com": "allegro.pl",
- "allegrostatic.com": "allegro.pl",
- "allegrostatic.pl": "allegro.pl",
- "ngacm.com": "allegro.pl",
- "ngastatic.com": "allegro.pl",
- "i.btg360.com.br": "allin",
- "allo-pages.fr": "allo-pages.fr",
- "allotraffic.com": "allotraffic",
- "edge.alluremedia.com.au": "allure_media",
- "allyes.com": "allyes",
- "inputs.alooma.com": "alooma",
- "arena.altitude-arena.com": "altitude_digital",
- "amadesa.com": "amadesa",
- "amazon.ca": "amazon",
- "amazon.co.jp": "amazon",
- "amazon.co.uk": "amazon",
- "amazon.com": "amazon",
- "amazon.de": "amazon",
- "amazon.es": "amazon",
- "amazon.fr": "amazon",
- "amazon.it": "amazon",
- "d3io1k5o0zdpqr.cloudfront.net": "amazon",
- "amazon-adsystem.com": "amazon_adsystem",
- "serving-sys.com": "amazon_adsystem",
- "sizmek.com": "amazon_adsystem",
- "assoc-amazon.ca": "amazon_associates",
- "assoc-amazon.co.uk": "amazon_associates",
- "assoc-amazon.com": "amazon_associates",
- "assoc-amazon.de": "amazon_associates",
- "assoc-amazon.fr": "amazon_associates",
- "assoc-amazon.jp": "amazon_associates",
- "images-amazon.com": "amazon_cdn",
- "media-amazon.com": "amazon_cdn",
- "ssl-images-amazon.com": "amazon_cdn",
- "cloudfront.net": "amazon_cloudfront",
- "axx-eu.amazon-adsystem.com": "amazon_mobile_ads",
- "amazonpay.com": "amazon_payments",
- "payments-amazon.com": "amazon_payments",
- "aiv-cdn.net": "amazon_video",
- "amazonaws.com": "amazon_web_services",
- "amazonwebservices.com": "amazon_web_services",
- "awsstatic.com": "amazon_web_services",
- "adnetwork.net.vn": "ambient_digital",
- "adnetwork.vn": "ambient_digital",
- "ambientplatform.vn": "ambient_digital",
- "amgload.net": "amgload.net",
- "amoad.com": "amoad",
- "ad.amgdgt.com": "amobee",
- "ads.amgdgt.com": "amobee",
- "amobee.com": "amobee",
- "collective-media.net": "amp_platform",
- "amplitude.com": "amplitude",
- "d24n15hnbwhuhn.cloudfront.net": "amplitude",
- "ampproject.org": "ampproject.org",
- "anametrix.net": "anametrix",
- "ancestrycdn.com": "ancestry_cdn",
- "ancoraplatform.com": "ancora",
- "anetwork.ir": "anetwork",
- "aniview.com": "aniview.com",
- "a-ads.com": "anonymousads",
- "anormal-tracker.de": "anormal_tracker",
- "answerscloud.com": "answers_cloud_service",
- "anthill.vn": "ants",
- "ants.vn": "ants",
- "rt.analytics.anvato.net": "anvato",
- "tkx2-prod.anvato.net": "anvato",
- "w3.cdn.anvato.net": "anvato",
- "player.anyclip.com": "anyclip",
- "video-loader.com": "aol_be_on",
- "aolcdn.com": "aol_cdn",
- "isp.netscape.com": "aol_cdn",
- "apa.at": "apa.at",
- "apester.com": "apester",
- "apicit.net": "apicit.net",
- "carrierzone.com": "aplus_analytics",
- "appcues.com": "appcues",
- "appdynamics.com": "appdynamics",
- "de8of677fyt0b.cloudfront.net": "appdynamics",
- "eum-appdynamics.com": "appdynamics",
- "jscdn.appier.net": "appier",
- "applifier.com": "applifier",
- "assets.applovin.com": "applovin",
- "appmetrx.com": "appmetrx",
- "adnxs.com": "appnexus",
- "adnxs.net": "appnexus",
- "appsflyer.com": "appsflyer",
- "adne.tv": "apptv",
- "readserver.net": "apptv",
- "www.apture.com": "apture",
- "arcpublishing.com": "arcpublishing",
- "ard.de": "ard.de",
- "areyouahuman.com": "are_you_a_human",
- "arkoselabs.com": "arkoselabs.com",
- "art19.com": "art19",
- "banners.advsnx.net": "artimedia",
- "artlebedev.ru": "artlebedev.ru",
- "ammadv.it": "aruba_media_marketing",
- "arubamediamarketing.it": "aruba_media_marketing",
- "cya2.net": "arvato_canvas_fp",
- "asambeauty.com": "asambeauty.com",
- "ask.com": "ask.com",
- "aspnetcdn.com": "aspnetcdn",
- "cdn.astronomer.io": "astronomer",
- "ati-host.net": "at_internet",
- "aticdn.net": "at_internet",
- "xiti.com": "at_internet",
- "atedra.com": "atedra",
- "oadts.com": "atg_group",
- "as00.estara.com": "atg_optimization",
- "atgsvcs.com": "atg_recommendations",
- "adbureau.net": "atlas",
- "atdmt.com": "atlas",
- "atlassbx.com": "atlas",
- "track.roiservice.com": "atlas_profitbuilder",
- "atl-paas.net": "atlassian.net",
- "atlassian.com": "atlassian.net",
- "atlassian.net": "atlassian.net",
- "d12ramskps3070.cloudfront.net": "atlassian.net",
- "d1xfq2052q7thw.cloudfront.net": "atlassian_marketplace",
- "marketplace.atlassian.com": "atlassian_marketplace",
- "atomz.com": "atomz_search",
- "atsfi.de": "atsfi_de",
- "cdn.attracta.com": "attracta",
- "locayta.com": "attraqt",
- "ads.audience2media.com": "audience2media",
- "qwobl.net": "audience_ad_network",
- "revsci.net": "audience_science",
- "wunderloop.net": "audience_science",
- "12mlbe.com": "audiencerate",
- "audiencesquare.com": "audiencesquare.com",
- "auditude.com": "auditude",
- "audtd.com": "audtd.com",
- "cdn.augur.io": "augur",
- "aumago.com": "aumago",
- "clicktracks.com": "aurea_clicktracks",
- "ausgezeichnet.org": "ausgezeichnet_org",
- "advertising.gov.au": "australia.gov",
- "auth0.com": "auth0",
- "ai.autoid.com": "autoid",
- "optimost.com": "autonomy",
- "oc-track.autonomycloud.com": "autonomy_campaign",
- "track.yieldsoftware.com": "autonomy_campaign",
- "api.autopilothq.com": "autopilothq",
- "autoscout24.com": "autoscout24.com",
- "autoscout24.net": "autoscout24.com",
- "avail.net": "avail",
- "analytics.avanser.com.au": "avanser",
- "avmws.com": "avant_metrics",
- "avantlink.com": "avantlink",
- "ads.avazu.net": "avazu_network",
- "avenseo.com": "avenseo",
- "adspdbl.com": "avid_media",
- "avocet.io": "avocet",
- "aweber.com": "aweber",
- "awin.com": "awin",
- "awin1.com": "awin",
- "perfb.com": "awin",
- "ad.globe7.com": "axill",
- "azadify.com": "azadify",
- "azureedge.net": "azureedge.net",
- "b2bcontext.ru": "b2bcontext",
- "b2bvideo.ru": "b2bvideo",
- "babator.com": "babator.com",
- "backbeatmedia.com": "back_beat_media",
- "widgets.backtype.com": "backtype_widgets",
- "bahn.de": "bahn_de",
- "img-bahn.de": "bahn_de",
- "baidu.com": "baidu_ads",
- "baidustatic.com": "baidu_ads",
- "bdimg.com": "baidu_static",
- "bdstatic.com": "baidu_static",
- "baletingo.com": "baletingo.com",
- "bangdom.com": "bangdom.com",
- "widgets.bankrate.com": "bankrate",
- "bannerconnect.net": "banner_connect",
- "bannerflow.com": "bannerflow.com",
- "bannerplay.com": "bannerplay",
- "cdn.bannersnack.com": "bannersnack",
- "dn3y71tq7jf07.cloudfront.net": "barilliance",
- "getbarometer.s3.amazonaws.com": "barometer",
- "basilic.io": "basilic.io",
- "batanga.com": "batanga_network",
- "t4ft.de": "batch_media",
- "bauernative.com": "bauer_media",
- "baur.de": "baur.de",
- "baynote.net": "baynote_observer",
- "bazaarvoice.com": "bazaarvoice",
- "bbci.co.uk": "bbci",
- "tracking.bd4travel.com": "bd4travel",
- "beopinion.com": "be_opinion",
- "bfmio.com": "beachfront",
- "beaconads.com": "beacon_ad_network",
- "beampulse.com": "beampulse.com",
- "beanstalkdata.com": "beanstalk_data",
- "bebi.com": "bebi",
- "beeketing.com": "beeketing.com",
- "beeline.ru": "beeline.ru",
- "bidr.io": "beeswax",
- "tracker.beezup.com": "beezup",
- "begun.ru": "begun",
- "behavioralengine.com": "behavioralengine",
- "belboon.de": "belboon_gmbh",
- "cdn.belco.io": "belco",
- "belstat.be": "belstat",
- "belstat.com": "belstat",
- "belstat.de": "belstat",
- "belstat.fr": "belstat",
- "belstat.nl": "belstat",
- "bemobile.ua": "bemobile.ua",
- "tag.benchplatform.com": "bench_platform",
- "betterttv.net": "betterttv",
- "betweendigital.com": "betweendigital.com",
- "intencysrv.com": "betweendigital.com",
- "bid.run": "bid.run",
- "bidgear.com": "bidgear",
- "bidswitch.net": "bidswitch",
- "exe.bid": "bidswitch",
- "bttrack.com": "bidtellect",
- "bidtheatre.com": "bidtheatre",
- "bidvertiser.com": "bidvertiser",
- "bigmobileads.com": "big_mobile",
- "bigcommerce.com": "bigcommerce.com",
- "bigmir.net": "bigmir.net",
- "bigpoint-payment.com": "bigpoint",
- "bigpoint.com": "bigpoint",
- "bigpoint.net": "bigpoint",
- "bpcdn.net": "bigpoint",
- "bpsecure.com": "bigpoint",
- "bildstatic.de": "bild",
- "ad-cdn.bilgin.pro": "bilgin_pro",
- "pixel.bilinmedia.net": "bilin",
- "bat.r.msn.com": "bing_ads",
- "bing.com": "bing_ads",
- "bing.net": "bing_ads",
- "virtualearth.net": "bing_maps",
- "view.binlayer.com": "binlayer",
- "widgets.binotel.com": "binotel",
- "esendra.fi": "bisnode",
- "bitcoinplus.com": "bitcoin_miner",
- "bit.ly": "bitly",
- "bitrix.de": "bitrix",
- "bitrix.info": "bitrix",
- "bitrix.ru": "bitrix",
- "bitrix24.com": "bitrix",
- "bitrix24.com.br": "bitrix",
- "traffic.adxprts.com": "bizcn",
- "jssr.jd.com": "blackdragon",
- "blau.de": "blau.de",
- "bnmla.com": "blink_new_media",
- "blismedia.com": "blis",
- "blogad.com.tw": "blogad",
- "blogbang.com": "blogbang",
- "www.blogcatalog.com": "blogcatalog",
- "track.blogcounter.de": "blogcounter",
- "blogfoster.com": "blogfoster.com",
- "bloggerads.net": "bloggerads",
- "blogher.com": "blogher",
- "blogherads.com": "blogher",
- "blogimg.jp": "blogimg.jp",
- "blogsmithmedia.com": "blogsmithmedia.com",
- "blogblog.com": "blogspot_com",
- "blogger.com": "blogspot_com",
- "blogspot.com": "blogspot_com",
- "brcdn.com": "bloomreach",
- "brsrvr.com": "bloomreach",
- "brtstats.com": "bloomreach",
- "offerpoint.net": "blue_cherry_group",
- "blueserving.com": "blue_seed",
- "blueconic.net": "blueconic.net",
- "bluecore.com": "bluecore",
- "triggeredmail.appspot.com": "bluecore",
- "bkrtx.com": "bluekai",
- "bluekai.com": "bluekai",
- "adrevolver.com": "bluelithium",
- "bluelithium.com": "bluelithium",
- "bmmetrix.com": "bluemetrix",
- "japanmetrix.jp": "bluemetrix",
- "bluenewsupdate.info": "bluenewsupdate.info",
- "bluestreak.com": "bluestreak",
- "bluetriangletech.com": "bluetriangle",
- "btttag.com": "bluetriangle",
- "bodelen.com": "bodelen.com",
- "tracking.bol.com": "bol_affiliate_program",
- "qb.boldapps.net": "bold",
- "secure.apps.shappify.com": "bold",
- "boldchat.com": "boldchat",
- "boltdns.net": "boltdns.net",
- "ml314.com": "bombora",
- "bongacams.com": "bongacams.com",
- "bonial.com": "bonial",
- "bonialconnect.com": "bonial",
- "bonialserviceswidget.de": "bonial",
- "boo-box.com": "boo-box",
- "booking.com": "booking.com",
- "bstatic.com": "booking.com",
- "boostbox.com.br": "boost_box",
- "boostervideo.ru": "booster_video",
- "bootstrapcdn.com": "bootstrap",
- "borrango.com": "borrango.com",
- "scan.botscanner.com": "botscanner",
- "boudja.com": "boudja.com",
- "bounceexchange.com": "bounce_exchange",
- "bouncex.com": "bouncex",
- "bouncex.net": "bouncex",
- "j.clickdensity.com": "box_uk",
- "boxever.com": "boxever",
- "brainient.com": "brainient",
- "brainsins.com": "brainsins",
- "d2xkqxdy6ewr93.cloudfront.net": "brainsins",
- "app.link": "branch_metrics",
- "branch.io": "branch_metrics",
- "brandaffinity.net": "brand_affinity",
- "go.cpmadvisors.com": "brand_networks",
- "optorb.com": "brand_networks",
- "brandmetrics.com": "brandmetrics.com",
- "brandreachsys.com": "brandreach",
- "rtbidder.net": "brandscreen",
- "brandwire.tv": "brandwire.tv",
- "branica.com": "branica",
- "appboycdn.com": "braze",
- "brealtime.com": "brealtime",
- "bridgetrack.com": "bridgetrack",
- "brightcove.com": "brightcove",
- "brightcove.net": "brightcove_player",
- "analytics.brightedge.com": "brightedge",
- "munchkin.brightfunnel.com": "brightfunnel",
- "brightonclick.com": "brightonclick.com",
- "btrll.com": "brightroll",
- "p.brilig.com": "brilig",
- "brillen.de": "brillen.de",
- "broadstreetads.com": "broadstreet",
- "bm23.com": "bronto",
- "brow.si": "brow.si",
- "browser-statistik.de": "browser-statistik",
- "browser-update.org": "browser_update",
- "btncdn.com": "btncdn.com",
- "in.bubblestat.com": "bubblestat",
- "brighteroption.com": "buddy_media",
- "bufferapp.com": "buffer_button",
- "bugherd.com": "bugherd.com",
- "bugsnag.com": "bugsnag",
- "d2wy8f7a9ursnm.cloudfront.net": "bugsnag",
- "bulkhentai.com": "bulkhentai.com",
- "bumlam.com": "bumlam.com",
- "bunchbox.co": "bunchbox",
- "bf-ad.net": "burda",
- "bf-tools.net": "burda",
- "bstatic.de": "burda_digital_systems",
- "burstbeacon.com": "burst_media",
- "burstnet.com": "burst_media",
- "burt.io": "burt",
- "d3q6px0y2suh5n.cloudfront.net": "burt",
- "rich-agent.s3.amazonaws.com": "burt",
- "richmetrics.com": "burt",
- "stats.businessol.com": "businessonline_analytics",
- "buysellads.com": "buysellads",
- "servedby-buysellads.com": "buysellads",
- "buzzadexchange.com": "buzzadexchange.com",
- "buzzador.com": "buzzador",
- "buzzfed.com": "buzzfeed",
- "bwbx.io": "bwbx.io",
- "bypass.jp": "bypass",
- "c1exchange.com": "c1_exchange",
- "c3metrics.com": "c3_metrics",
- "c3tag.com": "c3_metrics",
- "c8.net.ua": "c8_network",
- "cackle.me": "cackle.me",
- "d1cerpgff739r9.cloudfront.net": "cadreon",
- "d1qpxk1wfeh8v1.cloudfront.net": "cadreon",
- "callpage.io": "call_page",
- "callbackhunter.com": "callbackhunter",
- "callmeasurement.com": "callbox",
- "callibri.ru": "callibri",
- "callrail.com": "callrail",
- "calltracking.ru": "calltracking",
- "caltat.com": "caltat.com",
- "cam-content.com": "cam-content.com",
- "camakaroda.com": "camakaroda.com",
- "s.edkay.com": "campus_explorer",
- "canddi.com": "canddi",
- "canvas.net": "canvas",
- "canvasnetwork.com": "canvas",
- "du11hjcvx0uqb.cloudfront.net": "canvas",
- "kdata.fr": "capitaldata",
- "captora.com": "captora",
- "edge.capturemedia.network": "capture_media",
- "cdn.capturly.com": "capturly",
- "route.carambo.la": "carambola",
- "carbonads.com": "carbonads",
- "carbonads.net": "carbonads",
- "fusionads.net": "carbonads",
- "cardinalcommerce.com": "cardinal",
- "cardlytics.com": "cardlytics",
- "cdn.carrotquest.io": "carrot_quest",
- "api.cartstack.com": "cartstack",
- "caspion.com": "caspion",
- "t.castle.io": "castle",
- "3gl.net": "catchpoint",
- "cbox.ws": "cbox",
- "adlog.com.com": "cbs_interactive",
- "cbsinteractive.com": "cbs_interactive",
- "dw.com.com": "cbs_interactive",
- "ccmbg.com": "ccm_benchmark",
- "admission.net": "cdk_digital_marketing",
- "cdn-net.com": "cdn-net.com",
- "cdn13.com": "cdn13.com",
- "cdn77.com": "cdn77",
- "cdn77.org": "cdn77",
- "cdnetworks.com": "cdnetworks.net",
- "cdnetworks.net": "cdnetworks.net",
- "cdnnetwok.xyz": "cdnnetwok_xyz",
- "cdnondemand.org": "cdnondemand.org",
- "cdnsure.com": "cdnsure.com",
- "cdnvideo.com": "cdnvideo.com",
- "cdnwidget.com": "cdnwidget.com",
- "cedexis-radar.net": "cedexis_radar",
- "cedexis-test.com": "cedexis_radar",
- "cedexis.com": "cedexis_radar",
- "cedexis.fastlylb.net": "cedexis_radar",
- "cedexis.net": "cedexis_radar",
- "celebrus.com": "celebrus",
- "celtra.com": "celtra",
- "cendyn.adtrack.calls.net": "cendyn",
- "centraltag.com": "centraltag",
- "brand-server.com": "centro",
- "speed-trap.nl": "cerberus_speed-trap",
- "link.ixs1.net": "certainsource",
- "hits.e.cl": "certifica_metric",
- "certona.net": "certona",
- "res-x.com": "certona",
- "gsn.chameleon.ad": "chameleon",
- "chango.ca": "chango",
- "chango.com": "chango",
- "channelintelligence.com": "channel_intelligence",
- "cptrack.de": "channel_pilot_solutions",
- "channeladvisor.com": "channeladvisor",
- "searchmarketing.com": "channeladvisor",
- "channelfinder.net": "channelfinder",
- "chaordicsystems.com": "chaordic",
- "chartbeat.com": "chartbeat",
- "chartbeat.net": "chartbeat",
- "chaser.ru": "chaser",
- "cloud.chatbeacon.io": "chat_beacon",
- "chatango.com": "chatango",
- "call.chatra.io": "chatra",
- "chaturbate.com": "chaturbate.com",
- "chatwing.com": "chatwing",
- "checkmystats.com.au": "checkmystats",
- "chefkoch-cdn.de": "chefkoch_de",
- "chefkoch.de": "chefkoch_de",
- "tracker.chinmedia.vn": "chin_media",
- "chinesean.com": "chinesean",
- "chitika.net": "chitika",
- "choicestream.com": "choicestream",
- "api.getchute.com": "chute",
- "media.chute.io": "chute",
- "iqcontentplatform.de": "circit",
- "data.circulate.com": "circulate",
- "p.cityspark.com": "city_spark",
- "cityads.ru": "cityads",
- "gameleads.ru": "cityads",
- "ciuvo.com": "ciuvo.com",
- "widget.civey.com": "civey_widgets",
- "civicscience.com": "civicscience.com",
- "ciweb.ciwebgroup.com": "ciwebgroup",
- "clcknads.pro": "clcknads.pro",
- "pulseradius.com": "clear_pier",
- "clearbit.com": "clearbit.com",
- "clearsale.com.br": "clearsale",
- "tag.clrstm.com": "clearstream.tv",
- "api.clerk.io": "clerk.io",
- "cleverpush.com": "clever_push",
- "wzrkt.com": "clever_tap",
- "cleversite.ru": "cleversite",
- "script.click360.io": "click360",
- "clickandchat.com": "click_and_chat",
- "software.clickback.com": "click_back",
- "hit.clickaider.com": "clickaider",
- "clickbank.net": "clickbank",
- "cbproads.com": "clickbank_proads",
- "adtoll.com": "clickbooth",
- "clickbooth.com": "clickbooth",
- "clickboothlnk.com": "clickbooth",
- "clickcease.com": "clickcease",
- "clickcertain.com": "clickcertain",
- "remarketstats.com": "clickcertain",
- "clickdesk.com": "clickdesk",
- "analytics.clickdimensions.com": "clickdimensions",
- "clickequations.net": "clickequations",
- "clickexperts.net": "clickexperts",
- "doublemax.net": "clickforce",
- "clickinc.com": "clickinc",
- "clickintext.net": "clickintext",
- "clickky.biz": "clickky",
- "9nl.be": "clickmeter",
- "9nl.com": "clickmeter",
- "9nl.eu": "clickmeter",
- "9nl.it": "clickmeter",
- "9nl.me": "clickmeter",
- "clickmeter.com": "clickmeter",
- "clickonometrics.pl": "clickonometrics",
- "clickpoint.com": "clickpoint",
- "clickpoint.it": "clickpoint",
- "clickprotector.com": "clickprotector",
- "clickreport.com": "clickreport",
- "doogleonduty.com": "clickreport",
- "ctn.go2cloud.org": "clicks_thru_networks",
- "clicksor.com": "clicksor",
- "hatid.com": "clicksor",
- "lzjl.com": "clicksor",
- "myroitracking.com": "clicksor",
- "clicktale.com": "clicktale",
- "clicktale.net": "clicktale",
- "clicktale.pantherssl.com": "clicktale",
- "clicktalecdn.sslcs.cdngc.net": "clicktale",
- "clicktripz.com": "clicktripz",
- "clickwinks.com": "clickwinks",
- "getclicky.com": "clicky",
- "staticstuff.net": "clicky",
- "clickyab.com": "clickyab",
- "clicmanager.fr": "clicmanager",
- "eplayer.clipsyndicate.com": "clip_syndicate",
- "www.is1.clixgalore.com": "clixgalore",
- "clixmetrix.com": "clixmetrix",
- "clixsense.com": "clixsense",
- "cloud-media.fr": "cloud-media.fr",
- "cloudflare.com": "cloudflare",
- "cloudflare.net": "cloudflare",
- "cloudimg.io": "cloudimage.io",
- "cloudinary.com": "cloudinary",
- "clovenetwork.com": "clove_network",
- "clustrmaps.com": "clustrmaps",
- "cnbc.com": "cnbc",
- "cnetcontent.com": "cnetcontent.com",
- "cnstats.ru": "cnstats",
- "cnzz.com": "cnzz.com",
- "umeng.com": "cnzz.com",
- "acc-hd.de": "coadvertise",
- "client.cobrowser.net": "cobrowser",
- "codeonclick.com": "codeonclick.com",
- "cogocast.net": "cogocast",
- "coin-have.com": "coin_have",
- "appsha1.cointraffic.io": "coin_traffic",
- "authedmine.com": "coinhive",
- "coin-hive.com": "coinhive",
- "coinhive.com": "coinhive",
- "coinurl.com": "coinurl",
- "coll1onf.com": "coll1onf.com",
- "coll2onf.com": "coll2onf.com",
- "service.collarity.com": "collarity",
- "static.clmbtech.com": "columbia_online",
- "combotag.com": "combotag",
- "pdk.theplatform.com": "comcast_technology_solutions",
- "comm100.cn": "comm100",
- "comm100.com": "comm100",
- "cdn-cs.com": "commerce_sciences",
- "cdn.mercent.com": "commercehub",
- "link.mercent.com": "commercehub",
- "commercialvalue.org": "commercialvalue.org",
- "afcyhf.com": "commission_junction",
- "anrdoezrs.net": "commission_junction",
- "apmebf.com": "commission_junction",
- "awltovhc.com": "commission_junction",
- "emjcd.com": "commission_junction",
- "ftjcfx.com": "commission_junction",
- "lduhtrp.net": "commission_junction",
- "qksz.net": "commission_junction",
- "tkqlhce.com": "commission_junction",
- "tqlkg.com": "commission_junction",
- "yceml.net": "commission_junction",
- "communicatorcorp.com": "communicator_corp",
- "wowanalytics.co.uk": "communigator",
- "c-col.com": "competexl",
- "c.compete.com": "competexl",
- "complex.com": "complex_media_network",
- "complexmedianetwork.com": "complex_media_network",
- "comprigo.com": "comprigo",
- "comscore.com": "comscore",
- "zqtk.net": "comscore",
- "conative.de": "conative.de",
- "condenast.com": "condenastdigital.com",
- "conduit-banners.com": "conduit",
- "conduit-data.com": "conduit",
- "conduit.com": "conduit",
- "confirmit.com": "confirmit",
- "congstar.de": "congstar.de",
- "connatix.com": "connatix.com",
- "connected-by.connectad.io": "connectad",
- "cdn.connecto.io": "connecto",
- "connexity.net": "connexity",
- "cxt.ms": "connexity",
- "connextra.com": "connextra",
- "rs6.net": "constant_contact",
- "serverbid.com": "consumable",
- "contactatonce.com": "contact_at_once",
- "adrolays.de": "contact_impact",
- "c-i.as": "contact_impact",
- "df-srv.de": "contact_impact",
- "d1uwd25yvxu96k.cloudfront.net": "contactme",
- "static.contactme.com": "contactme",
- "contaxe.com": "contaxe",
- "content.ad": "content.ad",
- "ingestion.contentinsights.com": "content_insights",
- "contentexchange.me": "contentexchange.me",
- "ctfassets.net": "contentful_gmbh",
- "contentpass.de": "contentpass",
- "contentpass.net": "contentpass",
- "contentsquare.net": "contentsquare.net",
- "d1aug3dv5magti.cloudfront.net": "contentwrx",
- "d39se0h2uvfakd.cloudfront.net": "contentwrx",
- "c-on-text.com": "context",
- "intext.contextad.pl": "context.ad",
- "continum.net": "continum_net",
- "s2.contribusourcesyndication.com": "contribusource",
- "hits.convergetrack.com": "convergetrack",
- "fastclick.net": "conversant",
- "mediaplex.com": "conversant",
- "mplxtms.com": "conversant",
- "cm-commerce.com": "conversio",
- "media.conversio.com": "conversio",
- "c.conversionlogic.net": "conversion_logic",
- "conversionruler.com": "conversionruler",
- "conversionsbox.com": "conversions_box",
- "conversionsondemand.com": "conversions_on_demand",
- "ant.conversive.nl": "conversive",
- "convertexperiments.com": "convert",
- "d3sjgucddk68ji.cloudfront.net": "convertfox",
- "convertro.com": "convertro",
- "d1ivexoxmp59q7.cloudfront.net": "convertro",
- "conviva.com": "conviva",
- "cookieconsent.silktide.com": "cookie_consent",
- "cookie-script.com": "cookie_script",
- "cookiebot.com": "cookiebot",
- "cookieq.com": "cookieq",
- "lite.piclens.com": "cooliris",
- "copacet.com": "copacet",
- "raasnet.com": "coreaudience",
- "coremotives.com": "coremotives",
- "coull.com": "coull",
- "cpmrocket.com": "cpm_rocket",
- "cpmprofit.com": "cpmprofit",
- "cpmstar.com": "cpmstar",
- "captifymedia.com": "cpx.to",
- "cpx.to": "cpx.to",
- "cqcounter.com": "cq_counter",
- "cqq5id8n.com": "cqq5id8n.com",
- "cquotient.com": "cquotient.com",
- "craftkeys.com": "craftkeys",
- "ads.crakmedia.com": "crakmedia_network",
- "craktraffic.com": "crakmedia_network",
- "crankyads.com": "crankyads",
- "cetrk.com": "crazy_egg",
- "crazyegg.com": "crazy_egg",
- "dnn506yrbagrg.cloudfront.net": "crazy_egg",
- "creafi-online-media.com": "creafi",
- "createjs.com": "createjs",
- "creativecommons.org": "creative_commons",
- "brandwatch.com": "crimsonhexagon_com",
- "crimsonhexagon.com": "crimsonhexagon_com",
- "hexagon-analytics.com": "crimsonhexagon_com",
- "ctnsnet.com": "crimtan",
- "crisp.chat": "crisp",
- "crisp.im": "crisp",
- "criteo.com": "criteo",
- "criteo.net": "criteo",
- "p.crm4d.com": "crm4d",
- "crossengage.io": "crossengage",
- "crosspixel.net": "crosspixel",
- "crsspxl.com": "crosspixel",
- "crosssell.info": "crosssell.info",
- "crossss.com": "crossss",
- "widget.crowdignite.com": "crowd_ignite",
- "static.crowdscience.com": "crowd_science",
- "ss.crowdprocess.com": "crowdprocess",
- "our.glossip.nl": "crowdynews",
- "widget.breakingburner.com": "crowdynews",
- "widget.crowdynews.com": "crowdynews",
- "searchg2.crownpeak.net": "crownpeak",
- "snippet.omm.crownpeak.com": "crownpeak",
- "cryptoloot.pro": "cryptoloot_miner",
- "ctnetwork.hu": "ctnetwork",
- "adzhub.com": "ctrlshift",
- "data.withcubed.com": "cubed",
- "cuelinks.com": "cuelinks",
- "cdn.cupinteractive.com": "cup_interactive",
- "curse.com": "curse.com",
- "cursecdn.com": "cursecdn.com",
- "assets.customer.io": "customer.io",
- "widget.customerly.io": "customerly",
- "cxense.com": "cxense",
- "cxo.name": "cxo.name",
- "cyberwing.co.jp": "cyber_wing",
- "cybersource.com": "cybersource",
- "cygnus.com": "cygnus",
- "da-ads.com": "da-ads.com",
- "dailymail.co.uk": "dailymail.co.uk",
- "dailymotion.com": "dailymotion",
- "dailymotionbus.com": "dailymotion",
- "dm-event.net": "dailymotion",
- "dmcdn.net": "dailymotion",
- "dmxleo.com": "dailymotion_advertising",
- "ds1.nl": "daisycon",
- "dantrack.net": "dantrack.net",
- "dmclick.cn": "darwin_marketing",
- "tags.dashboardad.net": "dashboard_ad",
- "datacaciques.com": "datacaciques.com",
- "datacoral.com": "datacoral",
- "abandonaid.com": "datacrushers",
- "datacrushers.com": "datacrushers",
- "datadome.co": "datadome",
- "optimahub.com": "datalicious_datacollector",
- "supert.ag": "datalicious_supertag",
- "inextaction.net": "datalogix",
- "nexac.com": "datalogix",
- "datamind.ru": "datamind.ru",
- "datatables.net": "datatables",
- "adunits.datawrkz.com": "datawrkz",
- "dataxpand.script.ag": "dataxpand",
- "tc.dataxpand.com": "dataxpand",
- "w55c.net": "dataxu",
- "datds.net": "datds.net",
- "pro-market.net": "datonics",
- "displaymarketplace.com": "datran",
- "davebestdeals.com": "davebestdeals.com",
- "dawandastatic.com": "dawandastatic.com",
- "dc-storm.com": "dc_stormiq",
- "h4k5.com": "dc_stormiq",
- "stormcontainertag.com": "dc_stormiq",
- "stormiq.com": "dc_stormiq",
- "dcbap.com": "dcbap.com",
- "dcmn.com": "dcmn.com",
- "statslogger.rocket.persgroep.cloud": "de_persgroep",
- "deadlinefunnel.com": "deadline_funnel",
- "cc2.dealer.com": "dealer.com",
- "d9lq0o81skkdj.cloudfront.net": "dealer.com",
- "esm1.net": "dealer.com",
- "static.dealer.com": "dealer.com",
- "decibelinsight.net": "decibel_insight",
- "ads.dedicatedmedia.com": "dedicated_media",
- "api.deep.bi": "deep.bi",
- "deepintent.com": "deepintent.com",
- "defpush.com": "defpush.com",
- "deichmann.com": "deichmann.com",
- "vxml4.delacon.com.au": "delacon",
- "tracking.percentmobile.com": "delivr",
- "adaction.se": "delta_projects",
- "de17a.com": "delta_projects",
- "deluxe.script.ag": "deluxe",
- "delvenetworks.com": "delve_networks",
- "company-target.com": "demandbase",
- "demandbase.com": "demandbase",
- "dmd53.com": "demandmedia",
- "dmtracker.com": "demandmedia",
- "deqwas.net": "deqwas",
- "devatics.com": "devatics",
- "developermedia.com": "developer_media",
- "dapxl.com": "deviantart.net",
- "deviantart.net": "deviantart.net",
- "my.blueadvertise.com": "dex_platform",
- "dgm-au.com": "dgm",
- "s2d6.com": "dgm",
- "d31y97ze264gaa.cloudfront.net": "dialogtech",
- "d3von6il1wr7wo.cloudfront.net": "dianomi",
- "dianomi.com": "dianomi",
- "dianomioffers.co.uk": "dianomi",
- "tag.didit.com": "didit_blizzard",
- "track.did-it.com": "didit_maestro",
- "privacy-center.org": "didomi",
- "digg.com": "digg_widget",
- "digicert.com": "digicert_trust_seal",
- "digidip.net": "digidip",
- "digiglitzmarketing.go2cloud.org": "digiglitz",
- "wtp101.com": "digilant",
- "digioh.com": "digioh",
- "lightboxcdn.com": "digioh",
- "digitalgov.gov": "digital.gov",
- "cookiereports.com": "digital_control_room",
- "adtag.cc": "digital_nomads",
- "adready.com": "digital_remedy",
- "adreadytractions.com": "digital_remedy",
- "cpxinteractive.com": "digital_remedy",
- "directtrack.com": "digital_river",
- "onenetworkdirect.net": "digital_river",
- "track.digitalriver.com": "digital_river",
- "dwin1.com": "digital_window",
- "digiteka.net": "digiteka",
- "ultimedia.com": "digiteka",
- "digitru.st": "digitrust",
- "widget.dihitt.com.br": "dihitt_badge",
- "dimml.io": "dimml",
- "keywordsconnect.com": "direct_keyword_link",
- "directadvert.ru": "directadvert",
- "directrev.com": "directrev",
- "discordapp.com": "discord",
- "d81mfvml8p5ml.cloudfront.net": "display_block",
- "disqus.com": "disqus",
- "disquscdn.com": "disqus",
- "disqusads.com": "disqus_ads",
- "distiltag.com": "distil_tag",
- "districtm.ca": "districtm.io",
- "districtm.io": "districtm.io",
- "jsrdn.com": "distroscale",
- "div.show": "div.show",
- "stats.vertriebsassistent.de": "diva",
- "tag.divvit.com": "divvit",
- "d-msquared.com": "dm2",
- "and.co.uk": "dmg_media",
- "dmm.co.jp": "dmm",
- "ctret.de": "dmwd",
- "toolbar.dockvine.com": "dockvine",
- "awecr.com": "docler",
- "fwbntw.com": "docler",
- "s.dogannet.tv": "dogannet",
- "www.domodomain.com": "domodomain",
- "donation-tools.org": "donationtools",
- "doofinder.com": "doofinder.com",
- "embed.doorbell.io": "doorbell.io",
- "dotandad.com": "dotandmedia",
- "trackedlink.net": "dotmailer",
- "dotmetrics.net": "dotmetrics.net",
- "dotomi.com": "dotomi",
- "dtmc.com": "dotomi",
- "dtmpub.com": "dotomi",
- "double.net": "double.net",
- "2mdn.net": "doubleclick",
- "doubleclick.net": "doubleclick",
- "invitemedia.com": "doubleclick",
- "doublepimp.com": "doublepimp",
- "doublepimpssl.com": "doublepimp",
- "redcourtside.com": "doublepimp",
- "xeontopa.com": "doublepimp",
- "zerezas.com": "doublepimp",
- "doubleverify.com": "doubleverify",
- "wrating.com": "dratio",
- "adsymptotic.com": "drawbridge",
- "dreamlab.pl": "dreamlab.pl",
- "drift.com": "drift",
- "js.driftt.com": "drift",
- "getdrip.com": "drip",
- "dropbox.com": "dropbox.com",
- "dropboxstatic.com": "dropbox.com",
- "z5x.net": "dsnr_media_group",
- "dsp-rambler.ru": "dsp_rambler",
- "m6d.com": "dstillery",
- "media6degrees.com": "dstillery",
- "dtscout.com": "dtscout.com",
- "dd-cdn.multiscreensite.com": "dudamobile",
- "px.multiscreensite.com": "dudamobile",
- "cdn-0.d41.co": "dun_and_bradstreet",
- "cn01.dwstat.cn": "dwstat.cn",
- "dynad.net": "dynad",
- "dyntrk.com": "dynadmic",
- "dyntracker.de": "dynamic_1001_gmbh",
- "media01.eu": "dynamic_1001_gmbh",
- "content.dl-rms.com": "dynamic_logic",
- "dlqm.net": "dynamic_logic",
- "questionmarket.com": "dynamic_logic",
- "dynamicyield.com": "dynamic_yield",
- "beacons.hottraffic.nl": "dynata",
- "dynatrace.com": "dynatrace.com",
- "dyncdn.me": "dyncdn.me",
- "e-planning.net": "e-planning",
- "eadv.it": "eadv",
- "eanalyzer.de": "eanalyzer.de",
- "early-birds.fr": "early_birds",
- "cdn.earnify.com": "earnify",
- "earnify.com": "earnify_tracker",
- "easyads.bg": "easyads",
- "easylist.club": "easylist_club",
- "classistatic.de": "ebay",
- "ebay-us.com": "ebay",
- "ebay.com": "ebay",
- "ebay.de": "ebay",
- "ebayclassifiedsgroup.com": "ebay",
- "ebaycommercenetwork.com": "ebay",
- "ebaydesc.com": "ebay",
- "ebayimg.com": "ebay",
- "ebayrtm.com": "ebay",
- "ebaystatic.com": "ebay",
- "ad.about.co.kr": "ebay_korea",
- "adcheck.about.co.kr": "ebay_korea",
- "adn.ebay.com": "ebay_partner_network",
- "beead.co.uk": "ebuzzing",
- "beead.fr": "ebuzzing",
- "beead.net": "ebuzzing",
- "ebuzzing.com": "ebuzzing",
- "ebz.io": "ebuzzing",
- "echoenabled.com": "echo",
- "eclick.vn": "eclick",
- "econda-monitor.de": "econda",
- "eco-tag.jp": "ecotag",
- "ecustomeropinions.com": "edigitalresearch",
- "effectivemeasure.net": "effective_measure",
- "effiliation.com": "effiliation",
- "egain.net": "egain",
- "cloud-emea.analytics-egain.com": "egain_analytics",
- "ehi-siegel.de": "ehi-siegel_de",
- "ekmpinpoint.com": "ekmpinpoint",
- "ekomi.de": "ekomi",
- "elasticad.net": "elastic_ad",
- "elasticbeanstalk.com": "elastic_beanstalk",
- "elicitapp.com": "elicit",
- "eloqua.com": "eloqua",
- "en25.com": "eloqua",
- "eluxer.net": "eluxer_net",
- "tracker.emailaptitude.com": "email_aptitude",
- "tag.email-attitude.com": "email_attitude",
- "app.emarketeer.com": "emarketeer",
- "embed.ly": "embed.ly",
- "embedly.com": "embed.ly",
- "emediate.dk": "emediate",
- "emediate.eu": "emediate",
- "emediate.se": "emediate",
- "emetriq.de": "emetriq",
- "e2ma.net": "emma",
- "adinsight.co.kr": "emnet",
- "colbenson.es": "empathy",
- "emsmobile.de": "emsmobile.de",
- "sitecompass.com": "encore_metrics",
- "enectoanalytics.com": "enecto_analytics",
- "trk.enecto.com": "enecto_analytics",
- "track.engagesciences.com": "engage_sciences",
- "widget.engageya.com": "engageya_widget",
- "engagio.com": "engagio",
- "engineseeker.com": "engineseeker",
- "enquisite.com": "enquisite",
- "adtlgc.com": "enreach",
- "ats.tumri.net": "ensemble",
- "ensighten.com": "ensighten",
- "envolve.com": "envolve",
- "cdn.callbackkiller.com": "envybox",
- "email-reflex.com": "eperflex",
- "epicgameads.com": "epic_game_ads",
- "trafficmp.com": "epic_marketplace",
- "adshost1.com": "epom",
- "adshost2.com": "epom",
- "epom.com": "epom",
- "epoq.de": "epoq",
- "banzaiadv.it": "eprice",
- "eproof.com": "eproof",
- "equitystory.com": "eqs_group",
- "eqads.com": "eqworks",
- "ero-advertising.com": "eroadvertising",
- "eroadvertising.com": "eroadvertising",
- "d15qhc0lu1ghnk.cloudfront.net": "errorception",
- "errorception.com": "errorception",
- "eshopcomp.com": "eshopcomp.com",
- "espncdn.com": "espn_cdn",
- "esprit.de": "esprit.de",
- "cybermonitor.com": "estat",
- "estat.com": "estat",
- "teste-s3-maycon.s3.amazonaws.com": "etag",
- "etahub.com": "etahub.com",
- "etargetnet.com": "etarget",
- "ethn.io": "ethnio",
- "pages.etology.com": "etology",
- "sa.etp-prod.com": "etp",
- "etracker.com": "etracker",
- "etracker.de": "etracker",
- "sedotracker.com": "etracker",
- "etrigue.com": "etrigue",
- "etsystatic.com": "etsystatic",
- "eulerian.net": "eulerian",
- "eultech.fnac.com": "eulerian",
- "ew3.io": "eulerian",
- "euroads.dk": "euroads",
- "euroads.fi": "euroads",
- "euroads.no": "euroads",
- "newpromo.europacash.com": "europecash",
- "tracker.euroweb.net": "euroweb_counter",
- "apptegic.com": "evergage.com",
- "evergage.com": "evergage.com",
- "listener.everstring.com": "everstring",
- "waterfrontmedia.com": "everyday_health",
- "betrad.com": "evidon",
- "evidon.com": "evidon",
- "evisitanalyst.com": "evisit_analyst",
- "evisitcs.com": "evisit_analyst",
- "websiteperform.com": "evisit_analyst",
- "ads.exactdrive.com": "exact_drive",
- "exactag.com": "exactag",
- "exelator.com": "exelate",
- "dynamicoxygen.com": "exitjunction",
- "exitjunction.com": "exitjunction",
- "exdynsrv.com": "exoclick",
- "exoclick.com": "exoclick",
- "exosrv.com": "exoclick",
- "exoticads.com": "exoticads.com",
- "expedia.com": "expedia",
- "trvl-px.com": "expedia",
- "eccmp.com": "experian",
- "audienceiq.com": "experian_marketing_services",
- "techlightenment.com": "experian_marketing_services",
- "expo-max.com": "expo-max",
- "server.exposebox.com": "expose_box",
- "sf.exposebox.com": "expose_box_widgets",
- "express.co.uk": "express.co.uk",
- "d1lp05q4sghme9.cloudfront.net": "expressvpn",
- "extreme-dm.com": "extreme_tracker",
- "eyenewton.ru": "eye_newton",
- "eyeota.net": "eyeota",
- "eyereturn.com": "eyereturnmarketing",
- "eyeviewads.com": "eyeview",
- "ezakus.net": "ezakus",
- "f11-ads.com": "f11-ads.com",
- "facebook.com": "facebook",
- "facebook.net": "facebook",
- "fbcdn.net": "facebook_cdn",
- "fbsbx.com": "facebook_cdn",
- "graph.facebook.com": "facebook_graph",
- "facetz.net": "facetz.dca",
- "adsfac.eu": "facilitate_digital",
- "adsfac.net": "facilitate_digital",
- "adsfac.sg": "facilitate_digital",
- "adsfac.us": "facilitate_digital",
- "faktor.io": "faktor.io",
- "thefancy.com": "fancy_widget",
- "d1q7pknmpq2wkm.cloudfront.net": "fanplayr",
- "fap.to": "fap.to",
- "fastly-insights.com": "fastly_insights",
- "fastly.net": "fastlylb.net",
- "fastlylb.net": "fastlylb.net",
- "fastpic.ru": "fastpic.ru",
- "fmpub.net": "federated_media",
- "fby.s3.amazonaws.com": "feedbackify",
- "feedbackify.com": "feedbackify",
- "feedburner.com": "feedburner.com",
- "feedify.de": "feedify",
- "feedjit.com": "feedjit",
- "log.feedjit.com": "feedjit",
- "tracking.feedperfect.com": "feedperfect",
- "feedsportal.com": "feedsportal",
- "feefo.com": "feefo",
- "fidelity-media.com": "fidelity_media",
- "fiksu.com": "fiksu",
- "filamentapp.s3.amazonaws.com": "filament.io",
- "fileserve.xyz": "fileserve",
- "tools.financeads.net": "financeads",
- "tracker.financialcontent.com": "financial_content",
- "findizer.fr": "findizer.fr",
- "findologic.com": "findologic.com",
- "firebaseio.com": "firebaseio.com",
- "firstimpression.io": "first_impression",
- "fitanalytics.com": "fit_analytics",
- "fivetran.com": "fivetran",
- "flagads.net": "flag_ads",
- "flagcounter.com": "flag_counter",
- "flashtalking.com": "flashtalking",
- "flattr.com": "flattr_button",
- "flexlinks.com": "flexoffers",
- "linkoffers.net": "flexoffers",
- "flickr.com": "flickr_badge",
- "staticflickr.com": "flickr_badge",
- "lflipboard.com": "flipboard",
- "flite.com": "flite",
- "flixcdn.com": "flixcdn.com",
- "flix360.com": "flixmedia",
- "flixcar.com": "flixmedia",
- "flocktory.com": "flocktory.com",
- "flowplayer.org": "flowplayer",
- "adingo.jp": "fluct",
- "clicken.us": "fluent",
- "strcst.net": "fluid",
- "fluidads.co": "fluidads",
- "fluidsurveys.com": "fluidsurveys",
- "cdn.flurry.com": "flurry",
- "data.flurry.com": "flurry",
- "flx1.com": "flxone",
- "flxpxl.com": "flxone",
- "api.flyertown.ca": "flyertown",
- "adservinghost.com": "fmadserving",
- "adservinginternational.com": "fmadserving",
- "special.matchtv.ru": "fonbet",
- "kavijaseuranta.fi": "fonecta",
- "fontawesome.com": "fontawesome_com",
- "foodieblogroll.com": "foodie_blogroll",
- "footprintlive.com": "footprint",
- "footprintdns.com": "footprintdns.com",
- "forcetrac.com": "forcetrac",
- "fqsecure.com": "forensiq",
- "fqtag.com": "forensiq",
- "securepaths.com": "forensiq",
- "4seeresults.com": "foresee",
- "foresee.com": "foresee",
- "cdn-static.formisimo.com": "formisimo",
- "forter.com": "forter",
- "fortlachanhecksof.info": "fortlachanhecksof.info",
- "platform.foursquare.com": "foursquare_widget",
- "fout.jp": "fout.jp",
- "fimserve.com": "fox_audience_network",
- "fncstatic.com": "foxnews_static",
- "cdn.foxpush.net": "foxpush",
- "foxpush.com": "foxpush",
- "foxydeal.com": "foxydeal_com",
- "yabidos.com": "fraudlogix",
- "besucherstatistiken.com": "free_counter",
- "compteurdevisite.com": "free_counter",
- "contadorvisitasgratis.com": "free_counter",
- "contatoreaccessi.com": "free_counter",
- "freecounterstat.com": "free_counter",
- "statcounterfree.com": "free_counter",
- "webcontadores.com": "free_counter",
- "fastonlineusers.com": "free_online_users",
- "fastwebcounter.com": "free_online_users",
- "freeonlineusers.com": "free_online_users",
- "atoomic.com": "free_pagerank",
- "free-pagerank.com": "free_pagerank",
- "freedom.com": "freedom_mortgage",
- "freegeoip.net": "freegeoip_net",
- "freenet.de": "freenet_de",
- "freent.de": "freenet_de",
- "fwmrm.net": "freewheel",
- "heimdall.fresh8.co": "fresh8",
- "d36mpcpuzc4ztk.cloudfront.net": "freshdesk",
- "freshdesk.com": "freshdesk",
- "freshplum.com": "freshplum",
- "friendbuy.com": "friendbuy",
- "friendfeed.com": "friendfeed",
- "adultfriendfinder.com": "friendfinder_network",
- "amigos.com": "friendfinder_network",
- "board-books.com": "friendfinder_network",
- "cams.com": "friendfinder_network",
- "facebookofsex.com": "friendfinder_network",
- "getiton.com": "friendfinder_network",
- "nostringsattached.com": "friendfinder_network",
- "pop6.com": "friendfinder_network",
- "streamray.com": "friendfinder_network",
- "inpref.com": "frosmo_optimizer",
- "inpref.s3-external-3.amazonaws.com": "frosmo_optimizer",
- "inpref.s3.amazonaws.com": "frosmo_optimizer",
- "adflan.com": "fruitflan",
- "fruitflan.com": "fruitflan",
- "fstrk.net": "fstrk.net",
- "cookie.fuel451.com": "fuelx",
- "fullstory.com": "fullstory",
- "track.funnelytics.io": "funnelytics",
- "angsrvr.com": "fyber",
- "fyber.com": "fyber",
- "game-advertising-online.com": "game_advertising_online",
- "gamedistribution.com": "gamedistribution.com",
- "gamerdna.com": "gamerdna",
- "gannett-cdn.com": "gannett",
- "gaug.es": "gaug.es",
- "gpm-digital.com": "gazprom-media_digital",
- "js.gb-world.net": "gb-world",
- "gdeslon.ru": "gdeslon",
- "gdmdigital.com": "gdm_digital",
- "gntm.geeen.co.jp": "geeen",
- "lpomax.net": "geeen",
- "gemius.pl": "gemius",
- "generaltracking.de": "generaltracking_de",
- "genesismedia.com": "genesis",
- "gssprt.jp": "geniee",
- "rsvpgenius.com": "genius",
- "genoo.com": "genoo",
- "js.geoads.com": "geoads",
- "geolify.com": "geolify",
- "geoplugin.net": "geoplugin",
- "geotrust.com": "geotrust",
- "geovisite.com": "geovisite",
- "gestionpub.com": "gestionpub",
- "app.getresponse.com": "get_response",
- "getsitecontrol.com": "get_site_control",
- "getconversion.net": "getconversion",
- "widgets.getglue.com": "getglue",
- "adhigh.net": "getintent",
- "static.getkudos.me": "getkudos",
- "yottos.com": "getmyad",
- "gsfn.us": "getsatisfaction",
- "gettyimages.com": "gettyimages",
- "sensic.net": "gfk",
- "gfycat.com": "gfycat.com",
- "a.giantrealm.com": "giant_realm",
- "videostat.com": "giantmedia",
- "gigaonclick.com": "giga",
- "analytics.gigyahosting1.com": "gigya",
- "gigcount.com": "gigya",
- "gigya.com": "gigya",
- "service.giosg.com": "giosg",
- "giphy.com": "giphy.com",
- "giraff.io": "giraff.io",
- "github.com": "github",
- "githubassets.com": "github",
- "githubusercontent.com": "github",
- "githubapp.com": "github_apps",
- "github.io": "github_pages",
- "aff3.gittigidiyor.com": "gittigidiyor_affiliate_program",
- "gittip.com": "gittip",
- "sitest.jp": "glad_cube",
- "glganltcs.space": "glganltcs.space",
- "globalwebindex.net": "global_web_index",
- "globalnotifier.com": "globalnotifier.com",
- "globalsign.com": "globalsign",
- "ad.globaltakeoff.net": "globaltakeoff",
- "glomex.cloud": "glomex.com",
- "glomex.com": "glomex.com",
- "glotgrx.com": "glotgrx.com",
- "a.gmdelivery.com": "gm_delivery",
- "ad.atown.jp": "gmo",
- "gmx.net": "gmx_net",
- "gmxpro.net": "gmx_net",
- "go.com": "go.com",
- "affiliate.godaddy.com": "godaddy_affiliate_program",
- "trafficfacts.com": "godaddy_site_analytics",
- "seal.godaddy.com": "godaddy_site_seal",
- "tracking.godatafeed.com": "godatafeed",
- "counter.goingup.com": "goingup",
- "axf8.net": "gomez",
- "goodadvert.ru": "goodadvert",
- "google.at": "google",
- "google.be": "google",
- "google.ca": "google",
- "google.ch": "google",
- "google.co.id": "google",
- "google.co.in": "google",
- "google.co.jp": "google",
- "google.co.ma": "google",
- "google.co.th": "google",
- "google.co.uk": "google",
- "google.com": "google",
- "google.com.ar": "google",
- "google.com.au": "google",
- "google.com.br": "google",
- "google.com.mx": "google",
- "google.com.tr": "google",
- "google.com.tw": "google",
- "google.com.ua": "google",
- "google.cz": "google",
- "google.de": "google",
- "google.dk": "google",
- "google.dz": "google",
- "google.es": "google",
- "google.fi": "google",
- "google.fr": "google",
- "google.gr": "google",
- "google.hu": "google",
- "google.ie": "google",
- "google.it": "google",
- "google.nl": "google",
- "google.no": "google",
- "google.pl": "google",
- "google.pt": "google",
- "google.ro": "google",
- "google.rs": "google",
- "google.ru": "google",
- "google.se": "google",
- "google.tn": "google",
- "googleadservices.com": "google_adservices",
- "google-analytics.com": "google_analytics",
- "appspot.com": "google_appspot",
- "beacons-google.com": "google_beacons",
- "adsensecustomsearchads.com": "google_custom_search",
- "mail-ads.google.com": "google_email",
- "fonts.googleapis.com": "google_fonts",
- "ggpht.com": "google_photos",
- "1e100cdn.net": "google_servers",
- "googlesyndication.com": "google_syndication",
- "googletagmanager.com": "google_tag_manager",
- "googletagservices.com": "google_tag_manager",
- "translate.google.com": "google_translate",
- "googletraveladservices.com": "google_travel_adds",
- "googlecommerce.com": "google_trusted_stores",
- "googleusercontent.com": "google_users",
- "gmodules.com": "google_widgets",
- "googleapis.com": "googleapis.com",
- "gooal.herokuapp.com": "goooal",
- "gooo.al": "goooal",
- "cdn.triggertag.gorillanation.com": "gorilla_nation",
- "evolvemediametrics.com": "gorilla_nation",
- "d1l6p2sc9645hc.cloudfront.net": "gosquared",
- "gosquared.com": "gosquared",
- "gostats.com": "gostats",
- "govmetric.com": "govmetric",
- "servmetric.com": "govmetric",
- "b.grabo.bg": "grabo_affiliate",
- "trw12.com": "grandslammedia",
- "tuberewards.com": "grandslammedia",
- "d2bw638ufki166.cloudfront.net": "granify",
- "granify.com": "granify",
- "grapeshot.co.uk": "grapeshot",
- "gscontxt.net": "grapeshot",
- "graphcomment.com": "graph_comment",
- "gravatar.com": "gravatar",
- "cdn.gravitec.net": "gravitec",
- "gravity.com": "gravity_insights",
- "grvcdn.com": "gravity_insights",
- "greatviews.de": "greatviews.de",
- "gandrad.org": "green_and_red",
- "green-red.com": "green_and_red",
- "co2stats.com": "green_certified_site",
- "greenstory.ca": "green_story",
- "greentube.com": "greentube.com",
- "gt-cdn.net": "greentube.com",
- "greystripe.com": "greystripe",
- "groovehq.com": "groove",
- "groovinads.com": "groovinads",
- "bidagent.xad.com": "groundtruth",
- "gmads.net": "groupm_server",
- "grmtech.net": "groupm_server",
- "media.gsimedia.net": "gsi_media",
- "gstatic.com": "gstatic",
- "fx.gtop.ro": "gtop",
- "fx.gtopstats.com": "gtop",
- "gubagootracking.com": "gugaboo",
- "guj.de": "guj.de",
- "emsservice.de": "gujems",
- "gumgum.com": "gumgum",
- "gumroad.com": "gumroad",
- "gunggo.com": "gunggo",
- "h12-media.com": "h12_ads",
- "h12-media.net": "h12_ads",
- "hnbutton.appspot.com": "hacker_news_button",
- "haendlerbund.de": "haendlerbund.de",
- "halogennetwork.com": "halogen_network",
- "d1l7z5ofrj6ab8.cloudfront.net": "happy_fox_chat",
- "ad.harrenmedianetwork.com": "harren_media",
- "ads.networkhm.com": "harren_media",
- "app.hatchbuck.com": "hatchbuck",
- "hhcdn.ru": "head_hunter",
- "healte.de": "healte.de",
- "d36lvucg9kzous.cloudfront.net": "heap",
- "heapanalytics.com": "heap",
- "heatmap.it": "heatmap",
- "weltsport.net": "heimspiel",
- "hellobar.com": "hello_bar",
- "hellosociety.com": "hellosociety",
- "here.com": "here",
- "herokuapp.com": "heroku",
- "heureka.cz": "heureka-widget",
- "heybubble.com": "heybubble",
- "heyos.com": "heyos",
- "adlink.net": "hi-media_performance",
- "comclick.com": "hi-media_performance",
- "hi-mediaserver.com": "hi-media_performance",
- "himediads.com": "hi-media_performance",
- "himediadx.com": "hi-media_performance",
- "hiconversion.com": "hiconversion",
- "highwebmedia.com": "highwebmedia.com",
- "hwcdn.net": "highwinds",
- "hiiir.com": "hiiir",
- "hiro.tv": "hiro",
- "histats.com": "histats",
- "hit-parade.com": "hit-parade",
- "hit.ua": "hit.ua",
- "hitslink.com": "hitslink",
- "hitsprocessor.com": "hitslink",
- "hitsniffer.com": "hitsniffer",
- "hittail.com": "hittail",
- "hivedx.com": "hivedx.com",
- "ads.thehiveworks.com": "hiveworks",
- "hoholikik.club": "hoholikik.club",
- "h-cdn.com": "hola_player",
- "homeaway.com": "homeaway",
- "honeybadger.io": "honeybadger",
- "hlserve.com": "hooklogic",
- "apiae.hopscore.com": "hop-cube",
- "hotdogsandads.com": "hotdogsandads.com",
- "hotjar.com": "hotjar",
- "hotkeys.com": "hotkeys",
- "hotlog.ru": "hotlog.ru",
- "hotwords.com": "hotwords",
- "hotwords.es": "hotwords",
- "howtank.com": "howtank.com",
- "hqentertainmentnetwork.com": "hqentertainmentnetwork.com",
- "justservingfiles.net": "hqentertainmentnetwork.com",
- "hsoub.com": "hsoub",
- "hstrck.com": "hstrck.com",
- "httpool.com": "httpool",
- "toboads.com": "httpool",
- "hubrus.com": "hubrus",
- "hs-analytics.net": "hubspot",
- "hs-scripts.com": "hubspot",
- "hsleadflows.net": "hubspot",
- "hubapi.com": "hubspot",
- "hubspot.com": "hubspot",
- "forms.hubspot.com": "hubspot_forms",
- "hubvisor.io": "hubvisor.io",
- "files.hucksterbot.com": "hucksterbot",
- "hupso.com": "hupso",
- "hurra.com": "hurra_tracker",
- "hybrid.ai": "hybrid.ai",
- "targetix.net": "hybrid.ai",
- "hypeads.org": "hype_exchange",
- "hypercomments.com": "hypercomments",
- "hyves.nl": "hyves_widgets",
- "hyvyd.com": "hyvyd",
- "ib-ibi.com": "i-behavior",
- "i-mobile.co.jp": "i-mobile",
- "r.i.ua": "i.ua",
- "i10c.net": "i10c.net",
- "i2i.jp": "i2i.jp",
- "i2idata.com": "i2i.jp",
- "consensu.org": "iab_consent",
- "iadvize.com": "iadvize",
- "cmcore.com": "ibm_customer_experience",
- "coremetrics.com": "ibm_customer_experience",
- "coremetrics.eu": "ibm_customer_experience",
- "tracker.icerocket.com": "icerocket_tracker",
- "nsimg.net": "icf_technology",
- "optimix.asia": "iclick",
- "ic-live.com": "icrossing",
- "icstats.nl": "icstats",
- "icuazeczpeoohx.com": "icuazeczpeoohx.com",
- "id-news.net": "id-news.net",
- "idcdn.de": "id-news.net",
- "cdn.id.services": "id_services",
- "e-generator.com": "ideal_media",
- "idealo.com": "idealo_com",
- "ideoclick.com": "ideoclick",
- "s.idio.co": "idio",
- "ie8eamus.com": "ie8eamus.com",
- "600z.com": "ientry",
- "api.iflychat.com": "iflychat",
- "ignitionone.com": "ignitionone",
- "knotice.net": "ignitionone",
- "igodigital.com": "igodigital",
- "ad.wsod.com": "ihs_markit",
- "collserve.com": "ihs_markit_online_shopper_insigh",
- "ihvmcqojoj.com": "ihvmcqojoj.com",
- "iias.eu": "iias.eu",
- "ijento.com": "ijento",
- "adv.imadrep.co.kr": "imad",
- "worthathousandwords.com": "image_advantage",
- "picadmedia.com": "image_space_media",
- "imgix.net": "imgix.net",
- "imgur.com": "imgur",
- "vidigital.ru": "imho_vi",
- "immanalytics.com": "immanalytics",
- "immobilienscout24.de": "immobilienscout24_de",
- "static-immobilienscout24.de": "immobilienscout24_de",
- "imonomy.com": "imonomy",
- "7eer.net": "impact_radius",
- "d3cxv97fi8q177.cloudfront.net": "impact_radius",
- "evyy.net": "impact_radius",
- "impactradius-event.com": "impact_radius",
- "impactradius-tag.com": "impact_radius",
- "impactradius.com": "impact_radius",
- "ojrq.net": "impact_radius",
- "r7ls.net": "impact_radius",
- "impresionesweb.com": "impresiones_web",
- "360yield.com": "improve_digital",
- "iljmp.com": "improvely",
- "inbenta.com": "inbenta",
- "inboxsdk.com": "inboxsdk.com",
- "indeed.com": "indeed",
- "casalemedia.com": "index_exchange",
- "indexww.com": "index_exchange",
- "indieclick.com": "indieclick",
- "industrybrains.com": "industry_brains",
- "impdesk.com": "infectious_media",
- "impressiondesk.com": "infectious_media",
- "zachysprod.infiniteanalytics.com": "infinite_analytics",
- "infinity-tracking.net": "infinity_tracking",
- "engine.influads.com": "influads",
- "infolinks.com": "infolinks",
- "intextscript.com": "infolinks",
- "ioam.de": "infonline",
- "iocnt.net": "infonline",
- "ivwbox.de": "infonline",
- "informer.com": "informer_technologies",
- "infusionsoft.com": "infusionsoft",
- "keap.com": "infusionsoft",
- "innity.com": "innity",
- "innity.net": "innity",
- "innogames.com": "innogames.de",
- "innogames.de": "innogames.de",
- "innogamescdn.com": "innogames.de",
- "innovid.com": "innovid",
- "inside-graph.com": "inside",
- "useinsider.com": "insider",
- "insightexpressai.com": "insightexpress",
- "inskinad.com": "inskin_media",
- "inskinmedia.com": "inskin_media",
- "inspectlet.com": "inspectlet",
- "inspsearchapi.com": "inspsearchapi.com",
- "cdninstagram.com": "instagram_com",
- "instagram.com": "instagram_com",
- "tcgtrkr.com": "instant_check_mate",
- "sdad.guru": "instart_logic",
- "insticator.com": "insticator",
- "load.instinctiveads.com": "instinctive",
- "intango.com": "intango",
- "adsafeprotected.com": "integral_ad_science",
- "iasds01.com": "integral_ad_science",
- "integral-marketing.com": "integral_marketing",
- "intelliad.com": "intelliad",
- "intelliad.de": "intelliad",
- "saas.intelligencefocus.com": "intelligencefocus",
- "ist-track.com": "intelligent_reach",
- "intensedebate.com": "intense_debate",
- "intentiq.com": "intent_iq",
- "intentmedia.net": "intent_media",
- "intercom.com": "intercom",
- "intercom.io": "intercom",
- "intercomassets.com": "intercom",
- "intercomcdn.com": "intercom",
- "interedy.info": "interedy.info",
- "ads.intergi.com": "intergi",
- "intermarkets.net": "intermarkets.net",
- "intermundomedia.com": "intermundo_media",
- "bbelements.com": "internet_billboard",
- "goadservices.com": "internet_billboard",
- "ibillboard.com": "internet_billboard",
- "mediainter.net": "internet_billboard",
- "voice2page.com": "internetaudioads",
- "ibpxl.com": "internetbrands",
- "ibsrv.net": "internetbrands",
- "interpolls.com": "interpolls",
- "ps7894.com": "interyield",
- "intilery-analytics.com": "intilery",
- "im-apps.net": "intimate_merger",
- "investingchannel.com": "investingchannel",
- "inviziads.com": "inviziads",
- "js12.invoca.net": "invoca",
- "ringrevenue.com": "invoca",
- "invodo.com": "invodo",
- "ionicframework.com": "ionicframework.com",
- "dsp.io": "iotec",
- "iesnare.com": "iovation",
- "iovation.com": "iovation",
- "ip-label.net": "ip-label",
- "eltoro.com": "ip_targeting",
- "iptargeting.com": "ip_targeting",
- "ip-tracker.org": "ip_tracker",
- "iptrack.io": "ip_tracker",
- "iperceptions.com": "iperceptions",
- "dust.ipfingerprint.com": "ipfingerprint",
- "mbww.com": "ipg_mediabrands",
- "ipify.org": "ipify",
- "ipinfo.io": "ipinfo",
- "iplogger.ru": "iplogger",
- "centraliprom.com": "iprom",
- "iprom.net": "iprom",
- "ipromote.com": "ipromote",
- "clickmanage.com": "iprospect",
- "addelive.com": "ironsource",
- "afdads.com": "ironsource",
- "delivery47.com": "ironsource",
- "adsbyisocket.com": "isocket",
- "isocket.com": "isocket",
- "ispot.tv": "ispot.tv",
- "itineraire.info": "itineraire.info",
- "apple.com": "itunes_link_maker",
- "autolinkmaker.itunes.apple.com": "itunes_link_maker",
- "ity.im": "ity.im",
- "iubenda.com": "iubenda.com",
- "ivcbrasil.org.br": "ivcbrasil.org.br",
- "ivitrack.com": "ividence",
- "iwiw.hu": "iwiw_widgets",
- "ixiaa.com": "ixi_digital",
- "ixquick.com": "ixquick.com",
- "cdn.izooto.com": "izooto",
- "jlist.com": "j-list_affiliate_program",
- "getjaco.com": "jaco",
- "janrainbackplane.com": "janrain",
- "rpxnow.com": "janrain",
- "jeeng.com": "jeeng",
- "api.jeeng.com": "jeeng_widgets",
- "phone-analytics.com": "jet_interactive",
- "jetlore.com": "jetlore",
- "pixel.wp.com": "jetpack",
- "stats.wp.com": "jetpack",
- "jetpackdigital.com": "jetpack_digital",
- "jimcdn.com": "jimdo.com",
- "jimdo.com": "jimdo.com",
- "jimstatic.com": "jimdo.com",
- "ads.jinkads.com": "jink",
- "jirafe.com": "jirafe",
- "jivosite.com": "jivochat",
- "jivox.com": "jivox",
- "jobs2careers.com": "jobs_2_careers",
- "joinhoney.com": "joinhoney",
- "create.leadid.com": "jornaya",
- "d1tprjo2w7krrh.cloudfront.net": "jornaya",
- "cdnjquery.com": "jquery",
- "jquery.com": "jquery",
- "cjmooter.xcache.kinxcdn.com": "js_communications",
- "jsdelivr.net": "jsdelivr",
- "jsecoin.com": "jse_coin",
- "jsuol.com.br": "jsuol.com.br",
- "contentabc.com": "juggcash",
- "mofos.com": "juggcash",
- "juiceadv.com": "juiceadv",
- "juicyads.com": "juicyads",
- "cdn.jumplead.com": "jumplead",
- "jumpstarttaggingsolutions.com": "jumpstart_tagging_solutions",
- "jumptap.com": "jumptap",
- "jump-time.net": "jumptime",
- "jumptime.com": "jumptime",
- "components.justanswer.com": "just_answer",
- "justpremium.com": "just_premium",
- "justpremium.nl": "just_premium",
- "justrelevant.com": "just_relevant",
- "jvc.gg": "jvc.gg",
- "d21rhj7n383afu.cloudfront.net": "jw_player",
- "jwpcdn.com": "jw_player",
- "jwplatform.com": "jw_player",
- "jwplayer.com": "jw_player",
- "jwpltx.com": "jw_player",
- "jwpsrv.com": "jw_player",
- "ltassrv.com": "jw_player_ad_solutions",
- "kaeufersiegel.de": "kaeufersiegel.de",
- "kairion.de": "kairion.de",
- "kctag.net": "kairion.de",
- "kaloo.ga": "kaloo.ga",
- "kaltura.com": "kaltura",
- "kameleoon.com": "kameleoon",
- "kameleoon.eu": "kameleoon",
- "kampyle.com": "kampyle",
- "kanoodle.com": "kanoodle",
- "kmi-us.com": "kantar_media",
- "tnsinternet.be": "kantar_media",
- "kargo.com": "kargo",
- "kaspersky-labs.com": "kaspersky-labs.com",
- "kataweb.it": "kataweb.it",
- "cen.katchup.fr": "katchup",
- "kau.li": "kauli",
- "kavanga.ru": "kavanga",
- "dc8na2hxrj29i.cloudfront.net": "keen_io",
- "keen.io": "keen_io",
- "widget.kelkoo.com": "kelkoo",
- "xg4ken.com": "kenshoo",
- "keymetric.net": "keymetric",
- "lb.keytiles.com": "keytiles",
- "keywee.co": "keywee",
- "keywordmax.com": "keywordmax",
- "massrelevance.com": "khoros",
- "tweetriver.com": "khoros",
- "khzbeucrltin.com": "khzbeucrltin.com",
- "ping.kickfactory.com": "kickfactory",
- "sa-as.com": "kickfire",
- "sniff.visistat.com": "kickfire",
- "stats.visistat.com": "kickfire",
- "king.com": "king.com",
- "midasplayer.com": "king_com",
- "kinja-img.com": "kinja.com",
- "kinja-static.com": "kinja.com",
- "kinja.com": "kinja.com",
- "kiosked.com": "kiosked",
- "doug1izaerwt3.cloudfront.net": "kissmetrics.com",
- "kissmetrics.com": "kissmetrics.com",
- "ad.103092804.com": "kitara_media",
- "kmdisplay.com": "kitara_media",
- "kixer.com": "kixer",
- "klarna.com": "klarna.com",
- "a.klaviyo.com": "klaviyo",
- "klikki.com": "klikki",
- "scr.kliksaya.com": "kliksaya",
- "mediapeo2.com": "kmeleo",
- "knoopstat.nl": "knoopstat",
- "knotch.it": "knotch",
- "komoona.com": "komoona",
- "kona.kontera.com": "kontera_contentlink",
- "ktxtr.com": "kontextr",
- "kontextua.com": "kontextua",
- "cleanrm.net": "korrelate",
- "korrelate.net": "korrelate",
- "trackit.ktxlytics.io": "kortx",
- "kaptcha.com": "kount",
- "krxd.net": "krux_digital",
- "d31bfnnwekbny6.cloudfront.net": "kupona",
- "kpcustomer.de": "kupona",
- "q-sis.de": "kupona",
- "kxcdn.com": "kxcdn.com",
- "cdn.kyto.com": "kyto",
- "cd-ladsp-com.s3.amazonaws.com": "ladsp.com",
- "ladmp.com": "ladsp.com",
- "ladsp.com": "ladsp.com",
- "lanistaads.com": "lanista_concepts",
- "latimes.com": "latimes",
- "events.launchdarkly.com": "launch_darkly",
- "launchbit.com": "launchbit",
- "layer-ad.org": "layer-ad.org",
- "ph-live.slatic.net": "lazada",
- "lcxdigital.com": "lcx_digital",
- "lemde.fr": "le_monde.fr",
- "t1.llanalytics.com": "lead_liaison",
- "leadback.ru": "leadback",
- "leaddyno.com": "leaddyno",
- "123-tracker.com": "leadforensics",
- "55-trk-srv.com": "leadforensics",
- "business-path-55.com": "leadforensics",
- "click-to-trace.com": "leadforensics",
- "cloud-exploration.com": "leadforensics",
- "cloud-journey.com": "leadforensics",
- "cloud-trail.com": "leadforensics",
- "cloudpath82.com": "leadforensics",
- "cloudtracer101.com": "leadforensics",
- "discover-path.com": "leadforensics",
- "discovertrail.net": "leadforensics",
- "domainanalytics.net": "leadforensics",
- "dthvdr9.com": "leadforensics",
- "explore-123.com": "leadforensics",
- "finger-info.net": "leadforensics",
- "forensics1000.com": "leadforensics",
- "ip-route.net": "leadforensics",
- "ipadd-path.com": "leadforensics",
- "iproute66.com": "leadforensics",
- "lead-123.com": "leadforensics",
- "lead-analytics-1000.com": "leadforensics",
- "lead-watcher.com": "leadforensics",
- "leadforensics.com": "leadforensics",
- "ledradn.com": "leadforensics",
- "letterbox-path.com": "leadforensics",
- "letterboxtrail.com": "leadforensics",
- "network-handle.com": "leadforensics",
- "path-follower.com": "leadforensics",
- "path-trail.com": "leadforensics",
- "scan-trail.com": "leadforensics",
- "site-research.net": "leadforensics",
- "srv1010elan.com": "leadforensics",
- "the-lead-tracker.com": "leadforensics",
- "trace-2000.com": "leadforensics",
- "track-web.net": "leadforensics",
- "trackdiscovery.net": "leadforensics",
- "trackercloud.net": "leadforensics",
- "trackinvestigate.net": "leadforensics",
- "trail-viewer.com": "leadforensics",
- "trail-web.com": "leadforensics",
- "trailbox.net": "leadforensics",
- "trailinvestigator.com": "leadforensics",
- "web-path.com": "leadforensics",
- "webforensics.co.uk": "leadforensics",
- "websiteexploration.com": "leadforensics",
- "www-path.com": "leadforensics",
- "gate.leadgenic.com": "leadgenic",
- "leadhit.ru": "leadhit",
- "js.leadin.com": "leadin",
- "io.leadingreports.de": "leading_reports",
- "js.leadinspector.de": "leadinspector",
- "formalyzer.com": "leadlander",
- "trackalyzer.com": "leadlander",
- "analytics.leadlifesolutions.net": "leadlife",
- "my.leadpages.net": "leadpages",
- "leadplace.fr": "leadplace",
- "scorecard.wspisp.net": "leads_by_web.com",
- "www.leadscoreapp.dk": "leadscoreapp",
- "tracker.leadsius.com": "leadsius",
- "leady.com": "leady",
- "leady.cz": "leady",
- "leiki.com": "leiki",
- "lengow.com": "lengow",
- "lenmit.com": "lenmit.com",
- "lentainform.com": "lentainform.com",
- "lenua.de": "lenua.de",
- "letreach.com": "let_reach",
- "js.letvcdn.com": "letv",
- "footprint.net": "level3_communications",
- "licensebuttons.net": "licensebuttons.net",
- "lfstmedia.com": "lifestreet_media",
- "content-recommendation.net": "ligatus",
- "ligadx.com": "ligatus",
- "ligatus.com": "ligatus",
- "ligatus.de": "ligatus",
- "veeseo.com": "ligatus",
- "limk.com": "limk",
- "line-apps.com": "line_apps",
- "line-scdn.net": "line_apps",
- "line.me": "line_apps",
- "tongji.linezing.com": "linezing",
- "linkbucks.com": "linkbucks",
- "linkconnector.com": "linkconnector",
- "bizo.com": "linkedin",
- "licdn.com": "linkedin",
- "linkedin.com": "linkedin",
- "lynda.com": "linkedin",
- "ads.linkedin.com": "linkedin_ads",
- "snap.licdn.com": "linkedin_analytics",
- "bizographics.com": "linkedin_marketing_solutions",
- "platform.linkedin.com": "linkedin_widgets",
- "linker.hr": "linker",
- "linkprice.com": "linkprice",
- "lp4.io": "linkpulse",
- "linksalpha.com": "linksalpha",
- "erovinmo.com": "linksmart",
- "linksmart.com": "linksmart",
- "linkstorm.net": "linkstorm",
- "linksynergy.com": "linksynergy.com",
- "linkup.com": "linkup",
- "linkwi.se": "linkwise",
- "linkwithin.com": "linkwithin",
- "lqm.io": "liquidm_technology_gmbh",
- "lqmcdn.com": "liquidm_technology_gmbh",
- "liqwid.net": "liqwid",
- "list.ru": "list.ru",
- "listrakbi.com": "listrak",
- "live2support.com": "live2support",
- "live800.com": "live800",
- "ladesk.com": "live_agent",
- "livehelpnow.net": "live_help_now",
- "liadm.com": "live_intent",
- "l-stat.livejournal.net": "live_journal",
- "liveadexchanger.com": "liveadexchanger.com",
- "livechat.s3.amazonaws.com": "livechat",
- "livechatinc.com": "livechat",
- "livechatinc.net": "livechat",
- "livechatnow.com": "livechatnow",
- "livechatnow.net": "livechatnow",
- "liveclicker.net": "liveclicker",
- "livecounter.dk": "livecounter",
- "fyre.co": "livefyre",
- "livefyre.com": "livefyre",
- "yadro.ru": "liveinternet",
- "liveperson.net": "liveperson",
- "lpsnmedia.net": "liveperson",
- "pippio.com": "liveramp",
- "rapleaf.com": "liveramp",
- "rlcdn.com": "liveramp",
- "livere.co.kr": "livere",
- "livere.co.kr.cizion.ixcloud.net": "livere",
- "livesportmedia.eu": "livesportmedia.eu",
- "analytics.livestream.com": "livestream",
- "livetex.ru": "livetex.ru",
- "lkqd.net": "lkqd",
- "loadbee.com": "loadbee.com",
- "loadercdn.com": "loadercdn.com",
- "loadsource.org": "loadsource.org",
- "web.localytics.com": "localytics",
- "cdn2.lockerdome.com": "lockerdome",
- "addtoany.com": "lockerz_share",
- "pixel.loganmedia.mobi": "logan_media",
- "ping.answerbook.com": "logdna",
- "loggly.com": "loggly",
- "logly.co.jp": "logly",
- "logsss.com": "logsss.com",
- "lomadee.com": "lomadee",
- "assets.loomia.com": "loomia",
- "loop11.com": "loop11",
- "lfov.net": "loopfuse_oneview",
- "crwdcntrl.net": "lotame",
- "vidcpm.com": "lottex_inc",
- "tracker.samplicio.us": "lucid",
- "lucidmedia.com": "lucid_media",
- "lead.adsender.us": "lucini",
- "livestatserver.com": "lucky_orange",
- "luckyorange.com": "lucky_orange",
- "luckyorange.net": "lucky_orange",
- "luckypushh.com": "luckypushh.com",
- "adelixir.com": "lxr100",
- "lypn.com": "lynchpin_analytics",
- "lypn.net": "lynchpin_analytics",
- "lytics.io": "lytics",
- "lyuoaxruaqdo.com": "lyuoaxruaqdo.com",
- "m-pathy.com": "m-pathy",
- "mpnrs.com": "m._p._newmedia",
- "m4n.nl": "m4n",
- "madadsmedia.com": "mad_ads_media",
- "madeleine.de": "madeleine.de",
- "dinclinx.com": "madison_logic",
- "madisonlogic.com": "madison_logic",
- "madnet.ru": "madnet",
- "eu2.madsone.com": "mads",
- "magna.ru": "magna_advertise",
- "d3ezl4ajpp2zy8.cloudfront.net": "magnetic",
- "domdex.com": "magnetic",
- "domdex.net": "magnetic",
- "magnetisemedia.com": "magnetise_group",
- "magnify360.com": "magnify360",
- "magnuum.com": "magnuum.com",
- "ad.mail.ru": "mail.ru_banner",
- "imgsmail.ru": "mail.ru_group",
- "mail.ru": "mail.ru_group",
- "mradx.net": "mail.ru_group",
- "odnoklassniki.ru": "mail.ru_group",
- "ok.ru": "mail.ru_group",
- "chimpstatic.com": "mailchimp_tracking",
- "list-manage.com": "mailchimp_tracking",
- "mailchimp.com": "mailchimp_tracking",
- "mailerlite.com": "mailerlite.com",
- "mailtrack.io": "mailtrack.io",
- "mainadv.com": "mainadv",
- "makazi.com": "makazi",
- "makeappdev.xyz": "makeappdev.xyz",
- "makesource.cool": "makesource.cool",
- "widgets.mango-office.ru": "mango",
- "manycontacts.com": "manycontacts",
- "mapandroute.de": "mapandroute.de",
- "mapbox.com": "mapbox",
- "www.maploco.com": "maploco",
- "px.marchex.io": "marchex",
- "voicestar.com": "marchex",
- "mmadsgadget.com": "marimedia",
- "qadabra.com": "marimedia",
- "qadserve.com": "marimedia",
- "qadservice.com": "marimedia",
- "marinsm.com": "marin_search_marketer",
- "markandmini.com": "mark_+_mini",
- "ak-cdn.placelocal.com": "market_thunder",
- "dt00.net": "marketgid",
- "dt07.net": "marketgid",
- "marketgid.com": "marketgid",
- "mgid.com": "marketgid",
- "marketingautomation.si": "marketing_automation",
- "marketo.com": "marketo",
- "marketo.net": "marketo",
- "mktoresp.com": "marketo",
- "caanalytics.com": "markmonitor",
- "mmstat.com": "markmonitor",
- "netscope.data.marktest.pt": "marktest",
- "marshadow.io": "marshadow.io",
- "martiniadnetwork.com": "martini_media",
- "edigitalsurvey.com": "maru-edu",
- "marvellousmachine.net": "marvellous_machine",
- "mbn.com.ua": "master_banner_network",
- "mastertarget.ru": "mastertarget",
- "rns.matelso.de": "matelso",
- "matheranalytics.com": "mather_analytics",
- "mathjax.org": "mathjax.org",
- "nzaza.com": "matiro",
- "matomo.cloud": "matomo",
- "matomo.org": "matomo",
- "piwik.org": "matomo",
- "adsmarket.com": "matomy_market",
- "m2pub.com": "matomy_market",
- "mb01.com": "maxbounty",
- "maxcdn.com": "maxcdn",
- "netdna-cdn.com": "maxcdn",
- "netdna-ssl.com": "maxcdn",
- "maxlab.ru": "maxlab",
- "maxmind.com": "maxmind",
- "maxonclick.com": "maxonclick_com",
- "mxptint.net": "maxpoint_interactive",
- "maxymiser.hs.llnwd.net": "maxymiser",
- "maxymiser.net": "maxymiser",
- "m6r.eu": "mbr_targeting",
- "pixel.adbuyer.com": "mbuy",
- "mcabi.mcloudglobal.com": "mcabi",
- "scanalert.com": "mcafee_secure",
- "ywxi.net": "mcafee_secure",
- "mconet.biz": "mconet",
- "mdotlabs.com": "mdotlabs",
- "media-clic.com": "media-clic",
- "media-imdb.com": "media-imdb.com",
- "media.net": "media.net",
- "mediaimpact.de": "media_impact",
- "mookie1.com": "media_innovation_group",
- "idntfy.ru": "media_today",
- "s1.mediaad.org": "mediaad",
- "mlnadvertising.com": "mediaglu",
- "fhserve.com": "mediahub",
- "adnet.ru": "medialand",
- "medialand.ru": "medialand",
- "medialead.de": "medialead",
- "mathads.com": "mediamath",
- "mathtag.com": "mediamath",
- "mediametrics.ru": "mediametrics",
- "audit.median.hu": "median",
- "mediapass.com": "mediapass",
- "mt.mediapostcommunication.net": "mediapost_communications",
- "mediarithmics.com": "mediarithmics.com",
- "tns-counter.ru": "mediascope",
- "ad.media-servers.net": "mediashakers",
- "adsvc1107131.net": "mediashift",
- "mediator.media": "mediator.media",
- "mediav.com": "mediav",
- "adnetinteractive.com": "mediawhiz",
- "adnetinteractive.net": "mediawhiz",
- "mediego.com": "medigo",
- "medleyads.com": "medley",
- "adnet.com.tr": "medyanet",
- "e-kolay.net": "medyanet",
- "medyanetads.com": "medyanet",
- "cim.meebo.com": "meebo_bar",
- "meetrics.net": "meetrics",
- "mxcdn.net": "meetrics",
- "research.de.com": "meetrics",
- "counter.megaindex.ru": "megaindex",
- "mein-bmi.com": "mein-bmi.com",
- "webvisitor.melissadata.net": "melissa",
- "meltdsp.com": "melt",
- "mlt01.com": "menlo",
- "mentad.com": "mentad",
- "mercadoclics.com": "mercado",
- "mercadolivre.com.br": "mercado",
- "mlstatic.com": "mercado",
- "merchantadvantage.com": "merchantadvantage",
- "merchenta.com": "merchenta",
- "roia.biz": "mercury_media",
- "cdn.merklesearch.com": "merkle_research",
- "rkdms.com": "merkle_rkg",
- "messenger.com": "messenger.com",
- "ad.metanetwork.com": "meta_network",
- "metaffiliation.com": "metaffiliation.com",
- "netaffiliation.com": "metaffiliation.com",
- "metalyzer.com": "metapeople",
- "mlsat02.de": "metapeople",
- "metrigo.com": "metrigo",
- "metriweb.be": "metriweb",
- "miaozhen.com": "miaozhen",
- "microad.co.jp": "microad",
- "microad.jp": "microad",
- "microad.net": "microad",
- "microadinc.com": "microad",
- "azurewebsites.net": "microsoft",
- "cloudapp.net": "microsoft",
- "gfx.ms": "microsoft",
- "live.com": "microsoft",
- "microsoft.com": "microsoft",
- "microsoftonline-p.com": "microsoft",
- "microsoftonline.com": "microsoft",
- "microsofttranslator.com": "microsoft",
- "msecnd.net": "microsoft",
- "msedge.net": "microsoft",
- "msocdn.com": "microsoft",
- "onestore.ms": "microsoft",
- "s-microsoft.com": "microsoft",
- "trouter.io": "microsoft",
- "windows.net": "microsoft",
- "analytics.live.com": "microsoft_analytics",
- "a.clarity.ms": "microsoft_clarity",
- "b.clarity.ms": "microsoft_clarity",
- "c.clarity.ms": "microsoft_clarity",
- "d.clarity.ms": "microsoft_clarity",
- "e.clarity.ms": "microsoft_clarity",
- "f.clarity.ms": "microsoft_clarity",
- "g.clarity.ms": "microsoft_clarity",
- "h.clarity.ms": "microsoft_clarity",
- "i.clarity.ms": "microsoft_clarity",
- "j.clarity.ms": "microsoft_clarity",
- "log.clarity.ms": "microsoft_clarity",
- "www.clarity.ms": "microsoft_clarity",
- "mmismm.com": "mindset_media",
- "imgfarm.com": "mindspark",
- "mindspark.com": "mindspark",
- "staticimgfarm.com": "mindspark",
- "mvtracker.com": "mindviz_tracker",
- "minewhat.com": "minewhat",
- "mintsapp.io": "mints_app",
- "snackly.co": "minute.ly",
- "snippet.minute.ly": "minute.ly",
- "apv.configuration.minute.ly": "minute.ly_video",
- "get.mirando.de": "mirando",
- "mirtesen.ru": "mirtesen.ru",
- "misterbell.com": "mister_bell",
- "mixi.jp": "mixi",
- "mixpanel.com": "mixpanel",
- "mxpnl.com": "mixpanel",
- "mxpnl.net": "mixpanel",
- "swf.mixpo.com": "mixpo",
- "app.mluvii.com": "mluvii",
- "mncdn.com": "mncdn.com",
- "moatads.com": "moat",
- "moatpixel.com": "moat",
- "mobicow.com": "mobicow",
- "a.mobify.com": "mobify",
- "mobtrks.com": "mobtrks.com",
- "ads.mocean.mobi": "mocean_mobile",
- "ads.moceanads.com": "mocean_mobile",
- "chat.mochapp.com": "mochapp",
- "intelligentpixel.modernimpact.com": "modern_impact",
- "teljari.is": "modernus",
- "modulepush.com": "modulepush.com",
- "mogointeractive.com": "mogo_interactive",
- "mokonocdn.com": "mokono_analytics",
- "devappgrant.space": "monero_miner",
- "monetate.net": "monetate",
- "monetize-me.com": "monetize_me",
- "ads.themoneytizer.com": "moneytizer",
- "mongoosemetrics.com": "mongoose_metrics",
- "track.monitis.com": "monitis",
- "monitus.net": "monitus",
- "fonts.net": "monotype_gmbh",
- "fonts.com": "monotype_imaging",
- "cdn.monsido.com": "monsido",
- "monster.com": "monster_advertising",
- "mooxar.com": "mooxar",
- "mopinion.com": "mopinion.com",
- "mopub.com": "mopub",
- "ad.ad-arata.com": "more_communication",
- "moras.jp": "moreads",
- "nedstatbasic.net": "motigo_webstats",
- "webstats.motigo.com": "motigo_webstats",
- "analytics.convertlanguage.com": "motionpoint",
- "mouseflow.com": "mouseflow",
- "mousestats.com": "mousestats",
- "s.mousetrace.com": "mousetrace",
- "movad.de": "mov.ad",
- "movad.net": "mov.ad",
- "micpn.com": "movable_ink",
- "mvb.me": "movable_media",
- "moz.com": "moz",
- "storage.mozoo.com": "mozoo",
- "tracker.mrpfd.com": "mrp",
- "mrpdata.com": "mrpdata",
- "mrpdata.net": "mrpdata",
- "mrskincash.com": "mrskincash",
- "msn.com": "msn",
- "s-msn.com": "msn",
- "musculahq.appspot.com": "muscula",
- "litix.io": "mux_inc",
- "mybloglog.com": "mybloglog",
- "t.p.mybuys.com": "mybuys",
- "mycdn.me": "mycdn.me",
- "mycliplister.com": "mycliplister.com",
- "mycounter.com.ua": "mycounter.ua",
- "mycounter.ua": "mycounter.ua",
- "myfonts.net": "myfonts",
- "mypagerank.net": "mypagerank",
- "stat.mystat.hu": "mystat",
- "mythings.com": "mythings",
- "mystat-in.net": "mytop_counter",
- "nakanohito.jp": "nakanohito.jp",
- "namogoo.coom": "namogoo",
- "nanigans.com": "nanigans",
- "audiencemanager.de": "nano_interactive",
- "nanorep.com": "nanorep",
- "narando.com": "narando",
- "static.bam-x.com": "narrativ",
- "narrative.io": "narrative_io",
- "p1.ntvk1.ru": "natimatica",
- "nativeads.com": "nativeads.com",
- "cdn01.nativeroll.tv": "nativeroll",
- "ntv.io": "nativo",
- "postrelease.com": "nativo",
- "navdmp.com": "navegg_dmp",
- "naver.com": "naver.com",
- "naver.net": "naver.com",
- "s-nbcnews.com": "nbc_news",
- "richmedia247.com": "ncol",
- "needle.com": "needle",
- "nekudo.com": "nekudo.com",
- "neodatagroup.com": "neodata",
- "ad-srv.net": "neory",
- "contentspread.net": "neory",
- "neory-tm.com": "neory",
- "simptrack.com": "neory",
- "nerfherdersolo.com": "nerfherdersolo_com",
- "wemfbox.ch": "net-metrix",
- "cdnma.com": "net-results",
- "nr7.us": "net-results",
- "netavenir.com": "net_avenir",
- "netcommunities.com": "net_communities",
- "visibility-stats.com": "net_visibility",
- "netbiscuits.net": "netbiscuits",
- "bbtrack.net": "netbooster_group",
- "netbooster.com": "netbooster_group",
- "netflix.com": "netflix",
- "nflxext.com": "netflix",
- "nflximg.net": "netflix",
- "nflxso.net": "netflix",
- "nflxvideo.net": "netflix",
- "netzathleten-media.de": "netletix",
- "netminers.dk": "netminers",
- "netmining.com": "netmining",
- "netmng.com": "netmining",
- "stat.netmonitor.fi": "netmonitor",
- "glanceguide.com": "netratings_sitecensus",
- "imrworldwide.com": "netratings_sitecensus",
- "vizu.com": "netratings_sitecensus",
- "netrk.net": "netrk.net",
- "netseer.com": "netseer",
- "netshelter.net": "netshelter",
- "nsaudience.pl": "netsprint_audience",
- "nwidget.networkedblogs.com": "networkedblogs",
- "adadvisor.net": "neustar_adadvisor",
- "d1ros97qkrwjf5.cloudfront.net": "new_relic",
- "newrelic.com": "new_relic",
- "nr-data.net": "new_relic",
- "newscgp.com": "newscgp.com",
- "nmcdn.us": "newsmax",
- "newstogram.com": "newstogram",
- "newsupdatedir.info": "newsupdatedir.info",
- "newsupdatewe.info": "newsupdatewe.info",
- "ads.newtention.net": "newtention",
- "ads.newtentionassets.net": "newtention",
- "nexage.com": "nexage",
- "nexeps.com": "nexeps.com",
- "nxtck.com": "next_performance",
- "track.nextuser.com": "next_user",
- "imgsrv.nextag.com": "nextag_roi_optimizer",
- "nextclick.pl": "nextclick",
- "nextstat.com": "nextstat",
- "d1d8vn0fpluuz7.cloudfront.net": "neytiv",
- "ads.ngageinc.com": "ngage_inc.",
- "nice264.com": "nice264.com",
- "nimblecommerce.com": "nimblecommerce",
- "cho-chin.com": "ninja_access_analysis",
- "donburako.com": "ninja_access_analysis",
- "hishaku.com": "ninja_access_analysis",
- "shinobi.jp": "ninja_access_analysis",
- "static.nirror.com": "nirror",
- "nitropay.com": "nitropay",
- "nk.pl": "nk.pl_widgets",
- "noaa.gov": "noaa.gov",
- "track.noddus.com": "noddus",
- "contextbar.ru": "nolix",
- "trkme.net": "nonstop_consulting",
- "noop.style": "noop.style",
- "nosto.com": "nosto.com",
- "adleadevent.com": "notify",
- "notifyfox.com": "notifyfox",
- "nowinteract.com": "now_interact",
- "npario-inc.net": "npario",
- "nplexmedia.com": "nplexmedia",
- "nrelate.com": "nrelate",
- "ns8.com": "ns8",
- "nt.vc": "nt.vc",
- "featurelink.com": "ntent",
- "tracer.jp": "nttcom_online_marketing_solutions",
- "nuffnang.com": "nuffnang",
- "nuggad.net": "nugg.ad",
- "rotator.adjuggler.com": "nui_media",
- "numbers.md": "numbers.md",
- "channeliq.com": "numerator",
- "nyacampwk.com": "nyacampwk.com",
- "nyetm2mkch.com": "nyetm2mkch.com",
- "nyt.com": "nyt.com",
- "nytimes.com": "nyt.com",
- "o12zs3u2n.com": "o12zs3u2n.com",
- "o2.pl": "o2.pl",
- "o2online.de": "o2online.de",
- "oath.com": "oath_inc",
- "observerapp.com": "observer",
- "ocioso.com.br": "ocioso",
- "oclasrv.com": "oclasrv.com",
- "octapi.net": "octapi.net",
- "service.octavius.rocks": "octavius",
- "office.com": "office.com",
- "office.net": "office.net",
- "office365.com": "office365.com",
- "oghub.io": "oghub.io",
- "ohmystats.com": "oh_my_stats",
- "adohana.com": "ohana_advertising_network",
- "photorank.me": "olapic",
- "olark.com": "olark",
- "olx-st.com": "olx-st.com",
- "onap.io": "olx-st.com",
- "omarsys.com": "omarsys.com",
- "ometria.com": "ometria",
- "omgpm.com": "omg",
- "omniconvert.com": "omniconvert.com",
- "omnidsp.com": "omniscienta",
- "oms.eu": "oms",
- "omsnative.de": "oms",
- "onaudience.com": "onaudience",
- "btc-echode.api.oneall.com": "oneall",
- "tracking.onefeed.co.uk": "onefeed",
- "onesignal.com": "onesignal",
- "os.tc": "onesignal",
- "stat.onestat.com": "onestat",
- "ocdn.eu": "onet.pl",
- "onet.pl": "onet.pl",
- "onetag.com": "onetag",
- "s-onetag.com": "onetag",
- "onetrust.com": "onetrust",
- "fogl1onf.com": "onfocus.io",
- "onfocus.io": "onfocus.io",
- "onlinewebstat.com": "onlinewebstat",
- "onlinewebstats.com": "onlinewebstat",
- "onswipe.com": "onswipe",
- "onthe.io": "onthe.io",
- "moon-ray.com": "ontraport_autopilot",
- "moonraymarketing.com": "ontraport_autopilot",
- "ooyala.com": "ooyala.com",
- "openadex.dk": "open_adexchange",
- "247realmedia.com": "open_adstream",
- "oaserve.com": "open_adstream",
- "realmedia.com": "open_adstream",
- "realmediadigital.com": "open_adstream",
- "opensharecount.com": "open_share_count",
- "oloadcdn.net": "openload",
- "openload.co": "openload",
- "openstat.net": "openstat",
- "spylog.com": "openstat",
- "spylog.ru": "openstat",
- "opentracker.net": "opentracker",
- "openwebanalytics.com": "openwebanalytics",
- "odnxs.net": "openx",
- "openx.net": "openx",
- "openx.org": "openx",
- "openxenterprise.com": "openx",
- "servedbyopenx.com": "openx",
- "adsummos.net": "operative_media",
- "opinary.com": "opinary",
- "opinionbar.com": "opinionbar",
- "emagazines.com": "oplytic",
- "opta.net": "opta.net",
- "optaim.com": "optaim",
- "cookielaw.org": "optanaon",
- "service.optify.net": "optify",
- "optimatic.com": "optimatic",
- "optmd.com": "optimax_media_delivery",
- "optimicdn.com": "optimicdn.com",
- "optimizely.com": "optimizely",
- "optimonk.com": "optimonk",
- "mstrlytcs.com": "optinmonster",
- "optmnstr.com": "optinmonster",
- "optmstr.com": "optinmonster",
- "optnmstr.com": "optinmonster",
- "optincollect.com": "optinproject.com",
- "volvelle.tech": "optomaton",
- "ora.tv": "ora.tv",
- "instantservice.com": "oracle_live_help",
- "ts.istrack.com": "oracle_live_help",
- "rightnowtech.com": "oracle_rightnow",
- "rnengage.com": "oracle_rightnow",
- "orange.fr": "orange",
- "orangeads.fr": "orange",
- "ads.orange142.com": "orange142",
- "wanadoo.fr": "orange_france",
- "otracking.com": "orangesoda",
- "emxdgt.com": "orc_international",
- "static.ordergroove.com": "order_groove",
- "orelsite.ru": "orel_site",
- "otclick-adv.ru": "otclick",
- "othersearch.info": "othersearch.info",
- "otm-r.com": "otm-r.com",
- "otto.de": "otto.de",
- "ottogroup.media": "otto.de",
- "outbrain.com": "outbrain",
- "outbrainimg.com": "outbrain",
- "overheat.it": "overheat.it",
- "oewabox.at": "owa",
- "owneriq.net": "owneriq",
- "ownpage.fr": "ownpage",
- "owox.com": "owox.com",
- "adconnexa.com": "oxamedia",
- "adsbwm.com": "oxamedia",
- "oxomi.com": "oxomi.com",
- "pageanalytics.space": "pageanalytics.space",
- "blockmetrics.com": "pagefair",
- "pagefair.com": "pagefair",
- "pagefair.net": "pagefair",
- "ghmedia.com": "pagescience",
- "777seo.com": "paid-to-promote",
- "paid-to-promote.net": "paid-to-promote",
- "ptp22.com": "paid-to-promote",
- "ptp33.com": "paid-to-promote",
- "paperg.com": "paperg",
- "pardot.com": "pardot",
- "d1z2jf7jlzjs58.cloudfront.net": "parsely",
- "parsely.com": "parsely",
- "partner-ads.com": "partner-ads",
- "passionfruitads.com": "passionfruit",
- "pathful.com": "pathful",
- "pay-hit.com": "pay-hit",
- "payclick.it": "payclick",
- "app.paykickstart.com": "paykickstart",
- "paypal.com": "paypal",
- "paypalobjects.com": "paypal",
- "pcvark.com": "pcvark.com",
- "peer39.com": "peer39",
- "peer39.net": "peer39",
- "peer5.com": "peer5.com",
- "peerius.com": "peerius",
- "pendo.io": "pendo.io",
- "pepper.com": "pepper.com",
- "gopjn.com": "pepperjam",
- "pjatr.com": "pepperjam",
- "pjtra.com": "pepperjam",
- "pntra.com": "pepperjam",
- "pntrac.com": "pepperjam",
- "pntrs.com": "pepperjam",
- "player.pepsia.com": "pepsia",
- "perfdrive.com": "perfdrive.com",
- "perfectaudience.com": "perfect_audience",
- "prfct.co": "perfect_audience",
- "perfectmarket.com": "perfect_market",
- "performgroup.com": "perform_group",
- "analytics.performable.com": "performable",
- "performancing.com": "performancing_metrics",
- "performax.cz": "performax",
- "perimeterx.net": "perimeterx.net",
- "permutive.com": "permutive",
- "persgroep.net": "persgroep",
- "persianstat.com": "persianstat",
- "code.pers.io": "persio",
- "counter.personyze.com": "personyze",
- "petametrics.com": "petametrics",
- "ads.pheedo.com": "pheedo",
- "app.phonalytics.com": "phonalytics",
- "d2bgg7rjywcwsy.cloudfront.net": "phunware",
- "piguiqproxy.com": "piguiqproxy.com",
- "trgt.eu": "pilot",
- "pingdom.net": "pingdom",
- "pinimg.com": "pinterest",
- "pinterest.com": "pinterest",
- "app.pipz.io": "pipz",
- "disabled.invalid": "piwik",
- "piwik.pro": "piwik_pro_analytics_suite",
- "adrta.com": "pixalate",
- "app.pixelpop.co": "pixel_union",
- "pixfuture.net": "pixfuture",
- "vast1.pixfuture.com": "pixfuture",
- "piximedia.com": "piximedia",
- "pizzaandads.com": "pizzaandads_com",
- "ads.placester.net": "placester",
- "d3uemyw1e5n0jw.cloudfront.net": "placester",
- "pladform.com": "pladform.ru",
- "tag.bi.serviceplan.com": "plan.net_experience_cloud",
- "pfrm.co": "platform360",
- "impact-ad.jp": "platformone",
- "loveadvert.ru": "play_by_mamba",
- "playbuzz.com": "playbuzz.com",
- "pof.com": "plenty_of_fish",
- "analytics.plex.tv": "plex_metrics",
- "metrics.plex.tv": "plex_metrics",
- "plista.com": "plista",
- "plugrush.com": "plugrush",
- "pluso.ru": "pluso.ru",
- "plutusads.com": "plutusads",
- "pmddby.com": "pmddby.com",
- "pnamic.com": "pnamic.com",
- "po.st": "po.st",
- "widgets.getpocket.com": "pocket",
- "pocketcents.com": "pocketcents",
- "pointificsecure.com": "pointific",
- "pointroll.com": "pointroll",
- "poirreleast.club": "poirreleast.club",
- "mediavoice.com": "polar.me",
- "polar.me": "polar.me",
- "polarmobile.com": "polar.me",
- "polldaddy.com": "polldaddy",
- "polyad.net": "polyad",
- "polyfill.io": "polyfill.io",
- "popads.net": "popads",
- "popadscdn.net": "popads",
- "popcash.net": "popcash",
- "desv383oqqc0.cloudfront.net": "popcorn_metrics",
- "popin.cc": "popin.cc",
- "cdn.popmyads.com": "popmyads",
- "poponclick.com": "poponclick",
- "populis.com": "populis",
- "populisengage.com": "populis",
- "phncdn.com": "pornhub",
- "pornhub.com": "pornhub",
- "prscripts.com": "pornwave",
- "prstatics.com": "pornwave",
- "prwidgets.com": "pornwave",
- "barra.brasil.gov.br": "porta_brazil",
- "postaffiliatepro.com": "post_affiliate_pro",
- "powerlinks.com": "powerlinks",
- "powerreviews.com": "powerreviews",
- "powr.io": "powr.io",
- "api.pozvonim.com": "pozvonim",
- "prebid.org": "prebid",
- "precisionclick.com": "precisionclick",
- "adserver.com.br": "predicta",
- "predicta.net": "predicta",
- "prnx.net": "premonix",
- "ppjol.com": "press",
- "ppjol.net": "press",
- "api.pressly.com": "pressly",
- "pricegrabber.com": "pricegrabber",
- "cdn.pricespider.com": "pricespider",
- "pmdrecrute.com": "prismamediadigital.com",
- "prismamediadigital.com": "prismamediadigital.com",
- "privy.com": "privy.com",
- "pswec.com": "proclivity",
- "prodperfect.com": "prodperfect",
- "lib.productsup.io": "productsup",
- "proadsnet.com": "profiliad",
- "profitshare.ro": "profitshare",
- "tracking.proformics.com": "proformics",
- "programattik.com": "programattik",
- "projectwonderful.com": "project_wonderful",
- "propelmarketing.com": "propel_marketing",
- "oclaserver.com": "propeller_ads",
- "onclasrv.com": "propeller_ads",
- "onclickads.net": "propeller_ads",
- "onclkds.com": "propeller_ads",
- "propellerads.com": "propeller_ads",
- "propellerpops.com": "propeller_ads",
- "proper.io": "propermedia",
- "st-a.props.id": "props",
- "propvideo.net": "propvideo_net",
- "tr.prospecteye.com": "prospecteye",
- "prosperent.com": "prosperent",
- "prostor-lite.ru": "prostor",
- "providesupport.com": "provide_support",
- "proximic.com": "proximic",
- "proxistore.com": "proxistore.com",
- "pscp.tv": "pscp.tv",
- "pstatic.net": "pstatic.net",
- "psyma.com": "psyma",
- "ptengine.jp": "pt_engine",
- "pub-fit.com": "pub-fit",
- "pub.network": "pub.network",
- "learnpipe.com": "pubble",
- "pubble.co": "pubble",
- "pubdirecte.com": "pubdirecte",
- "pubgears.com": "pubgears",
- "publicidees.com": "public_ideas",
- "publicidad.net": "publicidad.net",
- "intgr.net": "publir",
- "pubmatic.com": "pubmatic",
- "pubnub.com": "pubnub.com",
- "puboclic.com": "puboclic",
- "pulpix.com": "pulpix.com",
- "tentaculos.net": "pulpo_media",
- "pulse360.com": "pulse360",
- "pulseinsights.com": "pulse_insights",
- "contextweb.com": "pulsepoint",
- "pulsepoint.com": "pulsepoint",
- "punchtab.com": "punchtab",
- "purch.com": "purch",
- "servebom.com": "purch",
- "purechat.com": "pure_chat",
- "cdn.pprl.io": "pureprofile",
- "oopt.fr": "purlive",
- "puserving.com": "puserving.com",
- "push.world": "push.world",
- "pushengage.com": "push_engage",
- "pushame.com": "pushame.com",
- "zebra.pushbullet.com": "pushbullet",
- "pushcrew.com": "pushcrew",
- "pusher.com": "pusher.com",
- "pusherapp.com": "pusher.com",
- "pushnative.com": "pushnative.com",
- "cdn.pushnews.eu": "pushnews",
- "pushno.com": "pushno.com",
- "pushwhy.com": "pushwhy.com",
- "pushwoosh.com": "pushwoosh.com",
- "pvclouds.com": "pvclouds.com",
- "ads.q1media.com": "q1media",
- "q1mediahydraplatform.com": "q1media",
- "q-divisioncdn.de": "q_division",
- "qbaka.net": "qbaka",
- "track.qcri.org": "qcri_analytics",
- "collect.qeado.com": "qeado",
- "s.lianmeng.360.cn": "qihoo_360",
- "qq.com": "qq.com",
- "qrius.me": "qrius",
- "qualaroo.com": "qualaroo",
- "bluecava.com": "qualia",
- "qualtrics.com": "qualtrics",
- "quantcast.com": "quantcast",
- "quantserve.com": "quantcast",
- "quantcount.com": "quantcount",
- "quantummetric.com": "quantum_metric",
- "quartic.pl": "quartic.pl",
- "quarticon.com": "quartic.pl",
- "d3c3cq33003psk.cloudfront.net": "qubit",
- "qubit.com": "qubit",
- "easyresearch.se": "questback",
- "queue-it.net": "queue-it",
- "quick-counter.net": "quick-counter.net",
- "adsonar.com": "quigo_adsonar",
- "qnsr.com": "quinstreet",
- "quinstreet.com": "quinstreet",
- "thecounter.com": "quinstreet",
- "quintelligence.com": "quintelligence",
- "qservz.com": "quisma",
- "quisma.com": "quisma",
- "quora.com": "quora.com",
- "ads-digitalkeys.com": "r_advertising",
- "rackcdn.com": "rackcdn.com",
- "radarurl.com": "radarurl",
- "dsa.csdata1.com": "radial",
- "gwallet.com": "radiumone",
- "r1-cdn.net": "radiumone",
- "widget.raisenow.com": "raisenow",
- "mediaforge.com": "rakuten_display",
- "rmtag.com": "rakuten_display",
- "rakuten.co.jp": "rakuten_globalmarket",
- "trafficgate.net": "rakuten_globalmarket",
- "mtwidget04.affiliate.rakuten.co.jp": "rakuten_widget",
- "xml.affilliate.rakuten.co.jp": "rakuten_widget",
- "rambler.ru": "rambler",
- "top100.ru": "rambler",
- "rapidspike.com": "rapidspike",
- "ravelin.com": "ravelin",
- "rawgit.com": "rawgit",
- "raygun.io": "raygun",
- "count.rbc.ru": "rbc_counter",
- "rcs.it": "rcs.it",
- "rcsmediagroup.it": "rcs.it",
- "d335luupugsy2.cloudfront.net": "rd_station",
- "d12ulf131zb0yj.cloudfront.net": "reachforce",
- "reachforce.com": "reachforce",
- "reachjunction.com": "reachjunction",
- "cdn.rlets.com": "reachlocal",
- "reachlocal.com": "reachlocal",
- "reachlocallivechat.com": "reachlocal",
- "rlcdn.net": "reachlocal",
- "plugin.reactful.com": "reactful",
- "reactivpub.fr": "reactivpub",
- "skinected.com": "reactx",
- "readrboard.com": "readerboard",
- "readme.com": "readme",
- "readme.io": "readme",
- "readspeaker.com": "readspeaker.com",
- "realclick.co.kr": "realclick",
- "realperson.de": "realperson.de",
- "powermarketing.com": "realtime",
- "realtime.co": "realtime",
- "webspectator.com": "realtime",
- "dcniko1cv0rz.cloudfront.net": "realytics",
- "realytics.io": "realytics",
- "static.rbl.ms": "rebel_mouse",
- "recettes.net": "recettes.net",
- "static.recopick.com": "recopick",
- "recreativ.ru": "recreativ",
- "analytics.recruitics.com": "recruitics",
- "analytics.cohesionapps.com": "red_ventures",
- "cdn.cohesionapps.com": "red_ventures",
- "redblue.de": "redblue_de",
- "atendesoftware.pl": "redcdn.pl",
- "redd.it": "reddit",
- "reddit-image.s3.amazonaws.com": "reddit",
- "reddit.com": "reddit",
- "redditmedia.com": "reddit",
- "redditstatic.com": "reddit",
- "redhelper.ru": "redhelper",
- "pixelinteractivemedia.com": "redlotus",
- "triggit.com": "redlotus",
- "grt01.com": "redtram",
- "grt02.com": "redtram",
- "redtram.com": "redtram",
- "rdtcdn.com": "redtube.com",
- "redtube.com": "redtube.com",
- "reduxmedia.com": "redux_media",
- "reduxmediagroup.com": "redux_media",
- "reedbusiness.net": "reed_business_information",
- "reembed.com": "reembed.com",
- "reevoo.com": "reevoo.com",
- "refericon.pl": "refericon",
- "ads.referlocal.com": "referlocal",
- "refersion.com": "refersion",
- "refinedads.com": "refined_labs",
- "product.reflektion.com": "reflektion",
- "reformal.ru": "reformal",
- "reinvigorate.net": "reinvigorate",
- "convertglobal.com": "rekko",
- "convertglobal.s3.amazonaws.com": "rekko",
- "dnhgz729v27ca.cloudfront.net": "rekko",
- "reklamstore.com": "reklam_store",
- "ad.reklamport.com": "reklamport",
- "delivery.reklamz.com": "reklamz",
- "adimg.rekmob.com": "rekmob",
- "relap.io": "relap",
- "svtrd.com": "relay42",
- "synovite-scripts.com": "relay42",
- "tdn.r42tag.com": "relay42",
- "relestar.com": "relestar",
- "relevant4.com": "relevant4.com",
- "remintrex.com": "remintrex",
- "remove.video": "remove.video",
- "rp-api.com": "repost.us",
- "republer.com": "republer.com",
- "resmeter.respublica.al": "res-meter",
- "researchnow.com": "research_now",
- "reson8.com": "resonate_networks",
- "respondhq.com": "respond",
- "adinsight.com": "responsetap",
- "adinsight.eu": "responsetap",
- "responsetap.com": "responsetap",
- "data.resultlinks.com": "result_links",
- "sli-system.com": "resultspage.com",
- "retailrocket.net": "retailrocket.net",
- "retailrocket.ru": "retailrocket.net",
- "shopify.retargetapp.com": "retarget_app",
- "retargeter.com": "retargeter_beacon",
- "retargeting.cl": "retargeting.cl",
- "d1stxfv94hrhia.cloudfront.net": "retention_science",
- "waves.retentionscience.com": "retention_science",
- "reutersmedia.net": "reuters_media",
- "revcontent.com": "revcontent",
- "socialtwist.com": "reve_marketing",
- "revenue.com": "revenue",
- "clkads.com": "revenuehits",
- "clkmon.com": "revenuehits",
- "clkrev.com": "revenuehits",
- "clksite.com": "revenuehits",
- "eclkspbn.com": "revenuehits",
- "imageshack.host": "revenuehits",
- "revenuemantra.com": "revenuemantra",
- "revive-adserver.com": "revive_adserver",
- "revolvermaps.com": "revolver_maps",
- "cts.tradepub.com": "revresponse",
- "revresponse.com": "revresponse",
- "incontext.pl": "rewords",
- "pl-engine.intextad.net": "rewords",
- "addesktop.com": "rhythmone",
- "1rx.io": "rhythmone_beacon",
- "ria.ru": "ria.ru",
- "rmbn.ru": "rich_media_banner_network",
- "ics0.com": "richrelevance",
- "richrelevance.com": "richrelevance",
- "ringier.ch": "ringier.ch",
- "meteorsolutions.com": "rio_seo",
- "riskified.com": "riskfield.com",
- "rncdn3.com": "rncdn3.com",
- "ro2.biz": "ro2.biz",
- "rbxcdn.com": "roblox",
- "getrockerbox.com": "rockerbox",
- "rocket.la": "rocket.ia",
- "trk.sodoit.com": "roi_trax",
- "collector.roistat.com": "roistat",
- "rollad.ru": "rollad",
- "d37gvrvc0wt4s1.cloudfront.net": "rollbar",
- "get.roost.me": "roost",
- "getrooster.com": "rooster",
- "rqtrk.eu": "roq.ad",
- "rotaban.ru": "rotaban",
- "routenplaner-karten.com": "routenplaner-karten.com",
- "rovion.com": "rovion",
- "rsspump.com": "rsspump",
- "creativecdn.com": "rtb_house",
- "rvty.net": "rtblab",
- "rtbsuperhub.com": "rtbsuperhub.com",
- "rtl.de": "rtl_group",
- "static-fra.de": "rtl_group",
- "technical-service.net": "rtl_group",
- "rtmark.net": "rtmark.net",
- "dpclk.com": "rubicon",
- "mobsmith.com": "rubicon",
- "nearbyad.com": "rubicon",
- "rubiconproject.com": "rubicon",
- "tracker.ruhrgebiet-onlineservices.de": "ruhrgebiet",
- "click.rummycircle.com": "rummycircle",
- "runadtag.com": "run",
- "rundsp.com": "run",
- "un-syndicate.com": "runative",
- "cdn.secretrune.com": "rune",
- "runmewivel.com": "runmewivel.com",
- "rhythmxchange.com": "rythmxchange",
- "s24.com": "s24_com",
- "s3xified.com": "s3xified.com",
- "camp.sabavision.com": "sabavision",
- "sageanalyst.net": "sagemetrics",
- "sail-horizon.com": "sailthru_horizon",
- "sail-personalize.com": "sailthru_horizon",
- "sailthru.com": "sailthru_horizon",
- "d16fk4ms6rqz1v.cloudfront.net": "salecycle",
- "salecycle.com": "salecycle",
- "api.salesfeed.com": "sales_feed",
- "salesmanago.com": "sales_manago",
- "salesmanago.pl": "sales_manago",
- "force.com": "salesforce.com",
- "salesforce.com": "salesforce.com",
- "liveagentforsalesforce.com": "salesforce_live_agent",
- "salesforceliveagent.com": "salesforce_live_agent",
- "msgapp.com": "salesfusion",
- "salespidermedia.com": "salespider_media",
- "salesviewer.com": "salesviewer",
- "samba.tv": "samba.tv",
- "ilsemedia.nl": "sanoma.fi",
- "sanoma.fi": "sanoma.fi",
- "d13im3ek7neeqp.cloudfront.net": "sap_crm",
- "d28ethi6slcjbm.cloudfront.net": "sap_crm",
- "d2uevgmgh16uk4.cloudfront.net": "sap_crm",
- "d3m83gvgzupli.cloudfront.net": "sap_crm",
- "saas.seewhy.com": "sap_crm",
- "leadforce1.com": "sap_sales_cloud",
- "vlog.leadformix.com": "sap_sales_cloud",
- "sap-xm.org": "sap_xm",
- "sape.ru": "sape.ru",
- "js.sl.pt": "sapo_ads",
- "aimatch.com": "sas",
- "sas.com": "sas",
- "say.ac": "say.ac",
- "ads.saymedia.com": "say_media",
- "srv.sayyac.net": "sayyac",
- "scarabresearch.com": "scarabresearch",
- "schibsted.com": "schibsted",
- "schibsted.io": "schibsted",
- "schneevonmorgen.com": "schneevonmorgen.com",
- "svonm.com": "schneevonmorgen.com",
- "rockabox.co": "scoota",
- "scorecardresearch.com": "scorecard_research_beacon",
- "scoreresearch.com": "scorecard_research_beacon",
- "scrsrch.com": "scorecard_research_beacon",
- "securestudies.com": "scorecard_research_beacon",
- "scout.scoutanalytics.net": "scout_analytics",
- "scribblelive.com": "scribblelive",
- "scribol.com": "scribol",
- "analytics.snidigital.com": "scripps_analytics",
- "scroll.com": "scroll",
- "scupio.com": "scupio",
- "search123.uk.com": "search123",
- "searchforce.net": "searchforce",
- "searchignite.com": "searchignite",
- "srtk.net": "searchrev",
- "tacticalrepublic.com": "second_media",
- "securedtouch.com": "securedtouch",
- "securedvisit.com": "securedvisit",
- "bacontent.de": "seeding_alliance",
- "nativendo.de": "seeding_alliance",
- "seedtag.com": "seedtag.com",
- "svlu.net": "seevolution",
- "d2dq2ahtl5zl1z.cloudfront.net": "segment",
- "d47xnnr8b1rki.cloudfront.net": "segment",
- "segment.com": "segment",
- "segment.io": "segment",
- "rutarget.ru": "segmento",
- "segmint.net": "segmint",
- "sekindo.com": "sekindo",
- "sellpoint.net": "sellpoints",
- "sellpoints.com": "sellpoints",
- "semantiqo.com": "semantiqo.com",
- "semasio.net": "semasio",
- "semilo.com": "semilo",
- "semknox.com": "semknox.com",
- "sibautomation.com": "sendinblue",
- "sendpulse.com": "sendpulse.com",
- "sendsay.ru": "sendsay",
- "track.sensedigital.in": "sense_digital",
- "static.sensorsdata.cn": "sensors_data",
- "sentifi.com": "sentifi.com",
- "d3nslu0hdya83q.cloudfront.net": "sentry",
- "getsentry.com": "sentry",
- "ravenjs.com": "sentry",
- "sentry.io": "sentry",
- "sepyra.com": "sepyra",
- "d2oh4tlt9mrke9.cloudfront.net": "sessioncam",
- "sessioncam.com": "sessioncam",
- "sessionly.io": "sessionly",
- "71i.de": "sevenone_media",
- "sexad.net": "sexadnetwork",
- "ads.sexinyourcity.com": "sexinyourcity",
- "sextracker.com": "sextracker",
- "sexypartners.net": "sexypartners.net",
- "im.cz": "seznam",
- "imedia.cz": "seznam",
- "szn.cz": "seznam",
- "dtym7iokkjlif.cloudfront.net": "shareaholic",
- "shareaholic.com": "shareaholic",
- "shareasale.com": "shareasale",
- "quintrics.nl": "sharecompany",
- "sharecompany.nl": "sharecompany",
- "sharepointonline.com": "sharepoint",
- "sharethis.com": "sharethis",
- "shareth.ru": "sharethrough",
- "sharethrough.com": "sharethrough",
- "marketingautomation.services": "sharpspring",
- "sharpspring.com": "sharpspring",
- "sheego.de": "sheego.de",
- "services.sheerid.com": "sheerid",
- "shinystat.com": "shinystat",
- "shinystat.it": "shinystat",
- "app.shoptarget.com.br": "shop_target",
- "retargeter.com.br": "shop_target",
- "shopauskunft.de": "shopauskunft.de",
- "shopgate.com": "shopgate.com",
- "shopify.com": "shopify_stats",
- "shopifycdn.com": "shopifycdn.com",
- "shopifycloud.com": "shopifycloud.com",
- "shopperapproved.com": "shopper_approved",
- "shoppingshadow.com": "shopping_com",
- "tracking.shopping-flux.com": "shopping_flux",
- "shoprunner.com": "shoprunner",
- "shopsocially.com": "shopsocially",
- "shopzilla.com": "shopzilla",
- "shortnews.de": "shortnews",
- "shink.in": "shrink",
- "shutterstock.com": "shutterstock",
- "siblesectiveal.club": "siblesectiveal.club",
- "d3v27wwd40f0xu.cloudfront.net": "sidecar",
- "getsidecar.com": "sidecar",
- "dtlilztwypawv.cloudfront.net": "sift_science",
- "siftscience.com": "sift_science",
- "btstatic.com": "signal",
- "signal.co": "signal",
- "thebrighttag.com": "signal",
- "cdn-scripts.signifyd.com": "signifyd",
- "signifyd.com": "signifyd",
- "gw-services.vtrenz.net": "silverpop",
- "mkt51.net": "silverpop",
- "mkt912.com": "silverpop",
- "mkt922.com": "silverpop",
- "mkt941.com": "silverpop",
- "pages01.net": "silverpop",
- "pages02.net": "silverpop",
- "pages04.net": "silverpop",
- "pages05.net": "silverpop",
- "similardeals.net": "similardeals.net",
- "d8rk54i4mohrb.cloudfront.net": "simplereach",
- "simplereach.com": "simplereach",
- "simpli.fi": "simpli.fi",
- "sina.com.cn": "sina",
- "sinaimg.cn": "sina_cdn",
- "reporting.singlefeed.com": "singlefeed",
- "sddan.com": "sirdata",
- "site24x7rum.com": "site24x7",
- "site24x7rum.eu": "site24x7",
- "sitebooster-fjfmworld-production.azureedge.net": "site_booster",
- "a5.ogt.jp": "site_stratos",
- "siteapps.com": "siteapps",
- "sitebro.com": "sitebro",
- "sitebro.com.tw": "sitebro",
- "sitebro.net": "sitebro",
- "sitebro.tw": "sitebro",
- "siteheart.com": "siteheart",
- "siteimprove.com": "siteimprove",
- "siteimproveanalytics.com": "siteimprove_analytics",
- "sitelabweb.com": "sitelabweb.com",
- "sitemeter.com": "sitemeter",
- "pixel.ad": "sitescout",
- "sitescout.com": "sitescout",
- "ad.sitemaji.com": "sitetag",
- "sitetag.us": "sitetag",
- "analytics.sitewit.com": "sitewit",
- "ads.sixapart.com": "six_apart_advertising",
- "sixt-neuwagen.de": "sixt-neuwagen.de",
- "skadtec.com": "skadtec.com",
- "redirectingat.com": "skimlinks",
- "skimlinks.com": "skimlinks",
- "skimresources.com": "skimlinks",
- "analytics.skroutz.gr": "skroutz",
- "skyglue.com": "skyglue",
- "skype.com": "skype",
- "skypeassets.com": "skype",
- "skysa.com": "skysa",
- "skyscnr.com": "skyscnr.com",
- "slashdot.org": "slashdot_widget",
- "sleeknotestaticcontent.sleeknote.com": "sleeknote",
- "resultspage.com": "sli_systems",
- "builder.extensionfactory.com": "slice_factory",
- "freeskreen.com": "slimcutmedia",
- "slingpic.com": "slingpic",
- "smaato.net": "smaato",
- "smart4ads.com": "smart4ads",
- "sascdn.com": "smart_adserver",
- "smartadserver.com": "smart_adserver",
- "styria-digital.com": "smart_adserver",
- "yoc-adserver.com": "smart_adserver",
- "smartcall.kz": "smart_call",
- "getsmartcontent.com": "smart_content",
- "smartdevicemedia.com": "smart_device_media",
- "x.cnt.my": "smart_leads",
- "tracking.smartselling.cz": "smart_selling",
- "bepolite.eu": "smartad",
- "smartbn.ru": "smartbn",
- "smartclick.net": "smartclick.net",
- "smartclip.net": "smartclip",
- "smartcontext.pl": "smartcontext",
- "d1n00d49gkbray.cloudfront.net": "smarter_remarketer",
- "dhxtx5wtu812h.cloudfront.net": "smarter_remarketer",
- "smartertravel.com": "smarter_travel",
- "travelsmarter.net": "smarter_travel",
- "smct.co": "smarterclick",
- "smartertrack.com": "smartertrack",
- "smartlink.cool": "smartlink.cool",
- "getsmartlook.com": "smartlook",
- "smartlook.com": "smartlook",
- "smartstream.tv": "smartstream.tv",
- "smartsuppchat.com": "smartsupp_chat",
- "smi2.net": "smi2.ru",
- "smi2.ru": "smi2.ru",
- "stat.media": "smi2.ru",
- "cdn.smooch.io": "smooch",
- "smowtion.com": "smowtion",
- "smxindia.in": "smx_ventures",
- "smyte.com": "smyte",
- "snacktv.de": "snacktv",
- "snap.com": "snap",
- "snapengage.com": "snap_engage",
- "sc-static.net": "snapchat",
- "snapchat.com": "snapchat",
- "h-bid.com": "snigelweb",
- "eu2.snoobi.eu": "snoobi",
- "snoobi.com": "snoobi_analytics",
- "d346whrrklhco7.cloudfront.net": "snowplow",
- "d78fikflryjgj.cloudfront.net": "snowplow",
- "dc8xl0ndzn2cb.cloudfront.net": "snowplow",
- "playwire.com": "snowplow",
- "snplow.net": "snowplow",
- "go-mpulse.net": "soasta_mpulse",
- "mpstat.us": "soasta_mpulse",
- "tiaa-cref.org": "soasta_mpulse",
- "sociablelabs.com": "sociable_labs",
- "socialamp.com": "social_amp",
- "socialannex.com": "social_annex",
- "soclminer.com.br": "social_miner",
- "duu8lzqdm8tsz.cloudfront.net": "socialbeat",
- "ratevoice.com": "socialrms",
- "sociaplus.com": "sociaplus.com",
- "sociomantic.com": "sociomantic",
- "images.sohu.com": "sohu",
- "sojern.com": "sojern",
- "sokrati.com": "sokrati",
- "solads.media": "solads.media",
- "solidopinion.com": "solidopinion",
- "pixel.solvemedia.com": "solve_media",
- "soma2.de": "soma_2",
- "mobileadtrading.com": "somoaudience",
- "sonobi.com": "sonobi",
- "sophus3.com": "sophus3",
- "deployads.com": "sortable",
- "sndcdn.com": "soundcloud",
- "soundcloud.com": "soundcloud",
- "provenpixel.com": "sourceknowledge_pixel",
- "decenthat.com": "sourcepoint",
- "summerhamster.com": "sourcepoint",
- "d3pkae9owd2lcf.cloudfront.net": "sovrn",
- "lijit.com": "sovrn",
- "onscroll.com": "sovrn_viewability_solutions",
- "rts.sparkstudios.com": "spark_studios",
- "sparkasse.de": "sparkasse.de",
- "speakpipe.com": "speakpipe",
- "adviva.net": "specific_media",
- "specificclick.net": "specific_media",
- "specificmedia.com": "specific_media",
- "spectate.com": "spectate",
- "speedshiftmedia.com": "speed_shift_media",
- "speedcurve.com": "speedcurve",
- "admarket.entireweb.com": "speedyads",
- "affiliate.entireweb.com": "speedyads",
- "sa.entireweb.com": "speedyads",
- "speee-ad.akamaized.net": "speee",
- "sphere.com": "sphere",
- "surphace.com": "sphere",
- "api.spheremall.com": "spheremall",
- "zdwidget3-bs.sphereup.com": "sphereup",
- "static.sspicy.ru": "spicy",
- "spider.ad": "spider.ad",
- "metrics.spiderads.eu": "spider_ads",
- "spn.ee": "spinnakr",
- "embed.spokenlayer.com": "spokenlayer",
- "spongecell.com": "spongecell",
- "sponsorads.de": "sponsorads.de",
- "sportsbetaffiliates.com.au": "sportsbet_affiliates",
- "spot.im": "spot.im",
- "spoteffects.net": "spoteffect",
- "scdn.co": "spotify",
- "spotify.com": "spotify",
- "embed.spotify.com": "spotify_embed",
- "spotscenered.info": "spotscenered.info",
- "spotx.tv": "spotxchange",
- "spotxcdn.com": "spotxchange",
- "spotxchange.com": "spotxchange",
- "spoutable.com": "spoutable",
- "cdn.springboardplatform.com": "springboard",
- "springserve.com": "springserve",
- "pixel.sprinklr.com": "sprinklr",
- "stat.sputnik.ru": "sputnik",
- "email-match.com": "squadata",
- "squarespace.com": "squarespace.com",
- "srvtrck.com": "srvtrck.com",
- "srvvtrk.com": "srvvtrk.com",
- "sstatic.net": "sstatic.net",
- "hatena.ne.jp": "st-hatena",
- "st-hatena.com": "st-hatena",
- "stackadapt.com": "stackadapt",
- "stackpathdns.com": "stackpathdns.com",
- "stailamedia.com": "stailamedia_com",
- "stalluva.pro": "stalluva.pro",
- "startappservice.com": "startapp",
- "hit.stat24.com": "stat24",
- "adstat.4u.pl": "stat4u",
- "stat.4u.pl": "stat4u",
- "statcounter.com": "statcounter",
- "stathat.com": "stathat",
- "statisfy.net": "statisfy",
- "statsy.net": "statsy.net",
- "statuscake.com": "statuscake",
- "statuspage.io": "statuspage.io",
- "stayfriends.de": "stayfriends.de",
- "steelhousemedia.com": "steelhouse",
- "steepto.com": "steepto.com",
- "stepstone.com": "stepstone.com",
- "4stats.de": "stetic",
- "stetic.com": "stetic",
- "stickyadstv.com": "stickyads",
- "stocktwits.com": "stocktwits",
- "storify.com": "storify",
- "storygize.net": "storygize",
- "bizsolutions.strands.com": "strands_recommender",
- "strava.com": "strava",
- "mailfoogae.appspot.com": "streak",
- "streamrail.com": "streamrail.com",
- "streamrail.net": "streamrail.com",
- "stridespark.com": "stride",
- "stripcdn.com": "stripchat.com",
- "stripchat.com": "stripchat.com",
- "stripe.com": "stripe.com",
- "stripe.network": "stripe.com",
- "stripst.com": "stripst.com",
- "interactivemedia.net": "stroer_digital_media",
- "stroeerdigitalgroup.de": "stroer_digital_media",
- "stroeerdigitalmedia.de": "stroer_digital_media",
- "stroeerdp.de": "stroer_digital_media",
- "stroeermediabrands.de": "stroer_digital_media",
- "spklw.com": "strossle",
- "sprinklecontent.com": "strossle",
- "strossle.it": "strossle",
- "struq.com": "struq",
- "stumble-upon.com": "stumbleupon_widgets",
- "stumbleupon.com": "stumbleupon_widgets",
- "su.pr": "stumbleupon_widgets",
- "sub2tech.com": "sub2",
- "ayads.co": "sublime_skinz",
- "suggest.io": "suggest.io",
- "sumologic.com": "sumologic.com",
- "sumo.com": "sumome",
- "sumome.com": "sumome",
- "sundaysky.com": "sundaysky",
- "supercounters.com": "supercounters",
- "superfastcdn.com": "superfastcdn.com",
- "socdm.com": "supership",
- "supplyframe.com": "supplyframe",
- "surfingbird.ru": "surf_by_surfingbird",
- "px.surveywall-api.survata.com": "survata",
- "cdn.sweettooth.io": "sweettooth",
- "swiftypecdn.com": "swiftype",
- "swisscom.ch": "swisscom",
- "myswitchads.com": "switch_concepts",
- "switchadhub.com": "switch_concepts",
- "switchads.com": "switch_concepts",
- "switchafrica.com": "switch_concepts",
- "shopximity.com": "swoop",
- "swoop.com": "swoop",
- "analytics-cdn.sykescottages.co.uk": "sykes",
- "norton.com": "symantec",
- "seal.verisign.com": "symantec",
- "symantec.com": "symantec",
- "d.hodes.com": "symphony_talent",
- "technorati.com": "synacor",
- "technoratimedia.com": "synacor",
- "cn.clickable.net": "syncapse",
- "synergy-e.com": "synergy-e",
- "sdp-campaign.de": "t-mobile",
- "t-online.de": "t-mobile",
- "telekom-dienste.de": "t-mobile",
- "telekom.com": "t-mobile",
- "telekom.de": "t-mobile",
- "toi.de": "t-mobile",
- "t8cdn.com": "t8cdn.com",
- "tableteducation.com": "tableteducation.com",
- "basebanner.com": "taboola",
- "taboola.com": "taboola",
- "taboolasyndication.com": "taboola",
- "tacoda.net": "tacoda",
- "commander1.com": "tag_commander",
- "tagcommander.com": "tag_commander",
- "tags.tagcade.com": "tagcade",
- "taggify.net": "taggify",
- "taggyad.jp": "taggy",
- "levexis.com": "tagman",
- "tailtarget.com": "tail_target",
- "tailsweep.com": "tailsweep",
- "tamedia.ch": "tamedia.ch",
- "tanx.com": "tanx",
- "alipcsec.com": "taobao",
- "tapad.com": "tapad",
- "theblogfrog.com": "tapinfluence",
- "tarafdari.com": "tarafdari",
- "target2sell.com": "target_2_sell",
- "trackmytarget.com": "target_circle",
- "cdn.targetfuel.com": "target_fuel",
- "tawk.to": "tawk",
- "tbn.ru": "tbn.ru",
- "tchibo-content.de": "tchibo_de",
- "tchibo.de": "tchibo_de",
- "tdsrmbl.net": "tdsrmbl_net",
- "teads.tv": "teads",
- "tealeaf.ibmcloud.com": "tealeaf",
- "tealium.com": "tealium",
- "tealium.hs.llnwd.net": "tealium",
- "tealiumiq.com": "tealium",
- "tiqcdn.com": "tealium",
- "teaser.cc": "teaser.cc",
- "emailretargeting.com": "tedemis",
- "tracking.dsmmadvantage.com": "teletech",
- "tenderapp.com": "tender",
- "tensitionschoo.club": "tensitionschoo.club",
- "watch.teroti.com": "teroti",
- "webterren.com": "terren",
- "teufel.de": "teufel.de",
- "theadex.com": "the_adex",
- "connect.decknetwork.net": "the_deck",
- "gu-web.net": "the_guardian",
- "guardianapps.co.uk": "the_guardian",
- "guim.co.uk": "the_guardian",
- "deepthought.online": "the_reach_group",
- "reachgroup.com": "the_reach_group",
- "redintelligence.net": "the_reach_group",
- "thesearchagency.net": "the_search_agency",
- "thesun.co.uk": "the_sun",
- "w-x.co": "the_weather_company",
- "weather.com": "the_weather_company",
- "wfxtriggers.com": "the_weather_company",
- "tmdb.org": "themoviedb",
- "thinglink.com": "thinglink",
- "online-metrix.net": "threatmetrix",
- "tidbit.co.in": "tidbit",
- "code.tidio.co": "tidio",
- "widget-v4.tidiochat.com": "tidio",
- "analytics.tiktok.com": "tiktok_analytics",
- "optimized.by.tiller.co": "tiller",
- "vip.timezonedb.com": "timezondb",
- "npttech.com": "tinypass",
- "tinypass.com": "tinypass",
- "tisoomi-services.com": "tisoomi",
- "ad.tlvmedia.com": "tlv_media",
- "ads.tlvmedia.com": "tlv_media",
- "tag.tlvmedia.com": "tlv_media",
- "research-int.se": "tns",
- "sesamestats.com": "tns",
- "spring-tns.net": "tns",
- "statistik-gallup.net": "tns",
- "tns-cs.net": "tns",
- "tns-gallup.dk": "tns",
- "tomnewsupdate.info": "tomnewsupdate.info",
- "tfag.de": "tomorrow_focus",
- "srv.clickfuse.com": "tonefuse",
- "toplist.cz": "toplist.cz",
- "toponclick.com": "toponclick_com",
- "topsy.com": "topsy",
- "insight.torbit.com": "torbit",
- "toro-tags.com": "toro",
- "toroadvertising.com": "toro",
- "toroadvertisingmedia.com": "toro",
- "tororango.com": "tororango.com",
- "i.total-media.net": "total_media",
- "inq.com": "touchcommerce",
- "tovarro.com": "tovarro.com",
- "rialpay.com": "tp-cdn.com",
- "tp-cdn.com": "tp-cdn.com",
- "kiwe.io": "tracc.it",
- "tracc.it": "tracc.it",
- "ipnoid.com": "tracemyip",
- "tracemyip.org": "tracemyip",
- "d2gfdmu30u15x7.cloudfront.net": "traceview",
- "tracelytics.com": "traceview",
- "cdn.trackduck.com": "track_duck",
- "d2zah9y47r7bi2.cloudfront.net": "trackjs",
- "dl1d2m8ri9v3j.cloudfront.net": "trackjs",
- "trackjs.com": "trackjs",
- "conversionlab.trackset.com": "trackset_conversionlab",
- "trackuity.com": "trackuity",
- "adsrvr.org": "tradedesk",
- "tradedoubler.com": "tradedoubler",
- "tradelab.fr": "tradelab",
- "tradetracker.net": "tradetracker",
- "cdntrf.com": "traffective",
- "traffective.com": "traffective",
- "my.trafficfuel.com": "traffic_fuel",
- "trafficrevenue.net": "traffic_revenue",
- "trafficstars.com": "traffic_stars",
- "tsyndicate.com": "traffic_stars",
- "trafficbroker.com": "trafficbroker",
- "trafficfabrik.com": "trafficfabrik.com",
- "trafficfactory.biz": "trafficfactory",
- "trafficforce.com": "trafficforce",
- "traffichaus.com": "traffichaus",
- "trafficjunky.net": "trafficjunky",
- "traffiliate.com": "traffiliate",
- "storage.trafic.ro": "trafic",
- "trafmag.com": "trafmag.com",
- "api.transcend.io": "transcend",
- "cdn.transcend.io": "transcend",
- "telemetry.transcend.io": "transcend_telemetry",
- "backoffice.transmatico.com": "transmatic",
- "travelaudience.com": "travel_audience",
- "trbo.com": "trbo",
- "treasuredata.com": "treasuredata",
- "scanscout.com": "tremor_video",
- "tremorhub.com": "tremor_video",
- "tremormedia.com": "tremor_video",
- "tremorvideo.com": "tremor_video",
- "videohub.tv": "tremor_video",
- "s.tcimg.com": "trendcounter",
- "tcimg.com": "trendcounter",
- "trendemon.com": "trendemon",
- "exponential.com": "tribal_fusion",
- "tribalfusion.com": "tribal_fusion",
- "tribl.io": "triblio",
- "api.temails.com": "trigger_mail_marketing",
- "t.myvisitors.se": "triggerbee",
- "jscache.com": "tripadvisor",
- "tacdn.com": "tripadvisor",
- "tamgrt.com": "tripadvisor",
- "tripadvisor.co.uk": "tripadvisor",
- "tripadvisor.com": "tripadvisor",
- "tripadvisor.de": "tripadvisor",
- "3lift.com": "triplelift",
- "d3iwjrnl4m67rd.cloudfront.net": "triplelift",
- "triplelift.com": "triplelift",
- "static.triptease.io": "triptease",
- "andomedia.com": "triton_digital",
- "tritondigital.com": "triton_digital",
- "revelations.trovus.co.uk": "trovus_revelations",
- "trsv3.com": "trsv3.com",
- "truefitcorp.com": "true_fit",
- "tru.am": "trueanthem",
- "adlegend.com": "trueffect",
- "addoer.com": "truehits.net",
- "truehits.in.th": "truehits.net",
- "truehits.net": "truehits.net",
- "trumba.com": "trumba",
- "truoptik.com": "truoptik",
- "trustarc.com": "trustarc",
- "truste.com": "trustarc",
- "consent.truste.com": "truste_consent",
- "choices-or.truste.com": "truste_notice",
- "choices.truste.com": "truste_notice",
- "privacy-policy.truste.com": "truste_seal",
- "trustedshops.com": "trusted_shops",
- "trustev.com": "trustev",
- "secure.comodo.net": "trustlogo",
- "trustlogo.com": "trustlogo",
- "trustpilot.com": "trustpilot",
- "trustwave.com": "trustwave.com",
- "tubecorporate.com": "tubecorporate",
- "tubecup.org": "tubecup.org",
- "tubemogul.com": "tubemogul",
- "sre-perim.com": "tumblr_analytics",
- "txmblr.com": "tumblr_analytics",
- "platform.tumblr.com": "tumblr_buttons",
- "lib.tunein.com": "tune_in",
- "adagio.turboadv.com": "turbo",
- "turn.com": "turn_inc.",
- "ngtv.io": "turner",
- "turner.com": "turner",
- "warnermedia.com": "turner",
- "turnsocial.com": "turnsocial",
- "turnto.com": "turnto",
- "tvsquared.com": "tvsquared.com",
- "tweetboard.com": "tweetboard",
- "tweetmeme.com": "tweetmeme",
- "c4tw.net": "twenga",
- "twiago.com": "twiago",
- "twinedigital.go2cloud.org": "twine",
- "ext-twitch.tv": "twitch.tv",
- "twitch.tv": "twitch.tv",
- "jtvnw.net": "twitch_cdn",
- "ttvnw.net": "twitch_cdn",
- "twitchcdn.net": "twitch_cdn",
- "twitchsvc.net": "twitch_cdn",
- "t.co": "twitter",
- "twimg.com": "twitter",
- "twitter.com": "twitter",
- "ads-twitter.com": "twitter_ads",
- "analytics.twitter.com": "twitter_analytics",
- "tellapart.com": "twitter_for_business",
- "syndication.twitter.com": "twitter_syndication",
- "twittercounter.com": "twittercounter",
- "twyn.com": "twyn",
- "txxx.com": "txxx.com",
- "tynt.com": "tynt",
- "typeform.com": "typeform",
- "typepad.com": "typepad_stats",
- "typography.com": "typography.com",
- "tyroodirect.com": "tyroo",
- "tyroodr.com": "tyroo",
- "tzetze.it": "tzetze",
- "ubersetzung-app.com": "ubersetzung-app.com",
- "aralego.net": "ucfunnel",
- "ucfunnel.com": "ucfunnel",
- "at.ua": "ucoz",
- "do.am": "ucoz",
- "ucoz.net": "ucoz",
- "ad-api-v01.uliza.jp": "uliza",
- "api.umbel.com": "umbel",
- "umebiggestern.club": "umebiggestern.club",
- "unanimis.co.uk": "unanimis",
- "d3pkntwtp2ukl5.cloudfront.net": "unbounce",
- "t.unbounce.com": "unbounce",
- "d21gpk1vhmjuf5.cloudfront.net": "unbxd",
- "tracker.unbxdapi.com": "unbxd",
- "under-box.com": "under-box.com",
- "undercomputer.com": "undercomputer.com",
- "udmserve.net": "underdog_media",
- "undertone.com": "undertone",
- "roitesting.com": "unica",
- "unica.com": "unica",
- "unister-adservices.com": "unister",
- "unister-gmbh.de": "unister",
- "uadx.com": "unite",
- "nonstoppartner.net": "united_digital_group",
- "tifbs.net": "united_internet_media_gmbh",
- "ui-portal.de": "united_internet_media_gmbh",
- "uimserv.net": "united_internet_media_gmbh",
- "univide.com": "univide",
- "unpkg.com": "unpkg.com",
- "unrulymedia.com": "unruly_media",
- "src.kitcode.net": "untriel_finger_printing",
- "s.clickability.com": "upland_clickability_beacon",
- "uppr.de": "uppr.de",
- "upravel.com": "upravel.com",
- "upsellit.com": "upsellit",
- "kontagent.net": "upsight",
- "app.uptain.de": "uptain",
- "uptolike.com": "uptolike.com",
- "uptrends.com": "uptrends",
- "urban-media.com": "urban-media.com",
- "urbanairship.com": "urban_airship",
- "mobile.usabilitytools.com": "usability_tools",
- "usabilla.com": "usabilla",
- "usemax.de": "usemax",
- "usemaxserver.de": "usemax",
- "usemessages.com": "usemessages.com",
- "api.usercycle.com": "usercycle",
- "userdive.com": "userdive",
- "userecho.com": "userecho",
- "dq4irj27fs462.cloudfront.net": "userlike.com",
- "userlike-cdn-widgets.s3-eu-west-1.amazonaws.com": "userlike.com",
- "userlike.com": "userlike.com",
- "contactusplus.com": "userpulse",
- "user-pulse.appspot.com": "userpulse",
- "userpulse.com": "userpulse",
- "userreplay.net": "userreplay",
- "sdsbucket.s3.amazonaws.com": "userreport",
- "userreport.com": "userreport",
- "dtkm4pd19nw6z.cloudfront.net": "userrules",
- "api.usersnap.com": "usersnap",
- "d3mvnvhjmkxpjz.cloudfront.net": "usersnap",
- "uservoice.com": "uservoice",
- "userzoom.com": "userzoom.com",
- "usocial.pro": "usocial",
- "utarget.ru": "utarget",
- "uuidksinc.net": "uuidksinc.net",
- "v12group.com": "v12_group",
- "vacaneedasap.com": "vacaneedasap.com",
- "ads.brand.net": "valassis",
- "vdrn.redplum.com": "valassis",
- "api.searchlinks.com": "validclick",
- "js.searchlinks.com": "validclick",
- "vinsight.de": "valiton",
- "valueclick.net": "valueclick_media",
- "valuecommerce.com": "valuecommerce",
- "valuedopinions.co.uk": "valued_opinions",
- "buzzparadise.com": "vanksen",
- "vmmpxl.com": "varick_media_management",
- "vcita.com": "vcita",
- "tracking.vcommission.com": "vcommission",
- "vdopia.com": "vdopia",
- "veinteractive.com": "ve_interactive",
- "vee24.com": "vee24",
- "velocecdn.com": "velocecdn.com",
- "mdcn.mobi": "velti_mgage_visualize",
- "velti.com": "velti_mgage_visualize",
- "vendemore.com": "vendemore",
- "venturead.com": "venturead.com",
- "api.venyoo.ru": "venyoo",
- "veoxa.com": "veoxa",
- "vergic.com": "vergic.com",
- "d3qxef4rp70elm.cloudfront.net": "vero",
- "getvero.com": "vero",
- "verticalacuity.com": "vertical_acuity",
- "roi.vertical-leap.co.uk": "vertical_leap",
- "cts.vresp.com": "verticalresponse",
- "verticalscope.com": "verticalscope",
- "ads.vertoz.com": "vertoz",
- "banner.vrtzads.com": "vertoz",
- "veruta.com": "veruta",
- "vrvm.com": "verve_mobile",
- "vgwort.de": "vg_wort",
- "digitaltarget.ru": "vi",
- "btg.mtvnservices.com": "viacom_tag_container",
- "viafoura.com": "viafoura",
- "viafoura.net": "viafoura",
- "intellitxt.com": "vibrant_ads",
- "vicomi.com": "vicomi.com",
- "vidazoo.com": "vidazoo.com",
- "module-videodesk.com": "video_desk",
- "vidtok.ru": "video_potok",
- "videoadex.com": "videoadex.com",
- "tidaltv.com": "videology",
- "videonow.ru": "videonow",
- "videoplayerhub.com": "videoplayerhub.com",
- "videoplaza.tv": "videoplaza",
- "kweb.videostep.com": "videostep",
- "content.vidgyor.com": "vidgyor",
- "vidible.tv": "vidible",
- "assets.vidora.com": "vidora",
- "vietad.vn": "vietad",
- "viglink.com": "viglink",
- "vigo.one": "vigo",
- "vigo.ru": "vigo",
- "vimeo.com": "vimeo",
- "vimeocdn.com": "vimeo",
- "vindicosuite.com": "vindico_group",
- "vinted.net": "vinted",
- "viraladnetwork.net": "viral_ad_network",
- "app.viral-loops.com": "viral_loops",
- "viralgains.com": "viralgains",
- "viralmint.com": "viralmint",
- "virgul.com": "virgul",
- "ssp.virool.com": "virool_player",
- "virtusize.com": "virtusize",
- "viewablemedia.net": "visible_measures",
- "visiblemeasures.com": "visible_measures",
- "visioncriticalpanels.com": "vision_critical",
- "visitstreamer.com": "visit_streamer",
- "visitortracklog.com": "visitortrack",
- "visitorville.com": "visitorville",
- "d2hkbi3gan6yg6.cloudfront.net": "visscore",
- "myvisualiq.net": "visual_iq",
- "visualrevenue.com": "visual_revenue",
- "d5phz18u4wuww.cloudfront.net": "visual_website_optimizer",
- "visualwebsiteoptimizer.com": "visual_website_optimizer",
- "wingify.com": "visual_website_optimizer",
- "vdna-assets.com": "visualdna",
- "visualdna.com": "visualdna",
- "visualstudio.com": "visualstudio.com",
- "id-visitors.com": "visualvisitor",
- "vi-tag.net": "vivalu",
- "vivistats.com": "vivistats",
- "vizury.com": "vizury",
- "vizzit.se": "vizzit",
- "cdn-vk.com": "vk.com",
- "vk-analytics.com": "vk.com",
- "vkuservideo.net": "vk.com",
- "userapi.com": "vkontakte",
- "vk.com": "vkontakte",
- "vkontakte.ru": "vkontakte",
- "vntsm.com": "vntsm.com",
- "vodafone.de": "vodafone.de",
- "voicefive.com": "voicefive",
- "volusion.com": "volusion_chat",
- "cwkuki.com": "voluum",
- "volumtrk.com": "voluum",
- "voluumtrk3.com": "voluum",
- "vooxe.com": "vooxe.com",
- "vorwerk.de": "vorwerk.de",
- "vox-cdn.com": "vox",
- "embed.voxus.tv": "voxus",
- "voxus-targeting-voxusmidia.netdna-ssl.com": "voxus",
- "c-dsp.vpadn.com": "vpon",
- "tools.vpscash.nl": "vpscash",
- "vtracy.de": "vtracy.de",
- "vuukle.com": "vuukle",
- "view.vzaar.com": "vzaar",
- "w3counter.com": "w3counter",
- "w3roi.com": "w3roi",
- "contentwidgets.net": "wahoha",
- "wahoha.com": "wahoha",
- "walkme.com": "walkme.com",
- "wsod.com": "wall_street_on_demand",
- "walmart.com": "walmart",
- "wamcash.com": "wamcash",
- "cdn-saveit.wanelo.com": "wanelo",
- "static.warp.ly": "warp.ly",
- "way2traffic.com": "way2traffic",
- "wayfair.com": "wayfair_com",
- "wdr.de": "wdr.de",
- "web-stat.com": "web-stat",
- "web.de": "web.de",
- "webde.de": "web.de",
- "webstat.net": "web.stat",
- "ssl.webserviceaward.com": "web_service_award",
- "webtraxs.com": "web_traxs",
- "wipe.de": "web_wipe_analytics",
- "webads.nl": "webads",
- "tr.webantenna.info": "webantenna",
- "webclicks24.com": "webclicks24_com",
- "webclose.net": "webclose.net",
- "webcollage.net": "webcollage",
- "goutee.top": "webedia",
- "mediaathay.org.uk": "webedia",
- "wbdx.fr": "webedia",
- "webeffective.keynote.com": "webeffective",
- "widgets.webengage.com": "webengage",
- "webgains.com": "webgains",
- "webgozar.com": "webgozar",
- "webgozar.ir": "webgozar",
- "webhelpje.be": "webhelpje",
- "webhelpje.nl": "webhelpje",
- "webleads-tracker.com": "webleads_tracker",
- "automation.webmecanik.com": "webmecanik",
- "adrcdn.com": "weborama",
- "adrcntr.com": "weborama",
- "weborama.com": "weborama",
- "weborama.fr": "weborama",
- "webprospector.de": "webprospector",
- "webstat.com": "webstat",
- "webstat.se": "webstat.se",
- "stat.webtrack.biz": "webtrack",
- "webtraffic.no": "webtraffic",
- "webtraffic.se": "webtraffic",
- "d1r27qvpjiaqj3.cloudfront.net": "webtrekk",
- "mateti.net": "webtrekk",
- "wbtrk.net": "webtrekk",
- "wcfbc.net": "webtrekk",
- "webtrekk-asia.net": "webtrekk",
- "webtrekk.com": "webtrekk",
- "webtrekk.de": "webtrekk",
- "webtrekk.net": "webtrekk",
- "wt-eu02.net": "webtrekk",
- "wt-safetag.com": "webtrekk",
- "webtrends.com": "webtrends",
- "webtrendslive.com": "webtrends",
- "rd.clickshift.com": "webtrends_ads",
- "web-visor.com": "webvisor",
- "weebly.com": "weebly_ads",
- "widget.weibo.com": "weibo_widget",
- "westlotto.com": "westlotto_com",
- "wetter.com": "wetter_com",
- "wettercomassets.com": "wetter_com",
- "whatsbroadcast.com": "whatbroadcast",
- "amung.us": "whos.amung.us",
- "whoson.com": "whoson",
- "api.wibbitz.com": "wibbitz",
- "cdn4.wibbitz.com": "wibbitz",
- "cdn.wibiya.com": "wibiya_toolbar",
- "predictad.com": "widdit",
- "widerplanet.com": "widerplanet",
- "widespace.com": "widespace",
- "widgetserver.com": "widgetbox",
- "3c45d848d99.se": "wiget_media",
- "wigetmedia.com": "wiget_media",
- "tracker.wigzopush.com": "wigzo",
- "wikia-services.com": "wikia-services.com",
- "wikia-beacon.com": "wikia_beacon",
- "nocookie.net": "wikia_cdn",
- "wikimedia.org": "wikimedia.org",
- "wikipedia.org": "wikimedia.org",
- "wikiquote.org": "wikimedia.org",
- "tracking.winaffiliates.com": "winaffiliates",
- "api.wipmania.com": "wipmania",
- "col1.wiqhit.com": "wiqhit",
- "wirecard.com": "wirecard",
- "wirecard.de": "wirecard",
- "leadlab.click": "wiredminds",
- "wiredminds.com": "wiredminds",
- "wiredminds.de": "wiredminds",
- "adtotal.pl": "wirtualna_polska",
- "wisepops.com": "wisepops",
- "cdn.wishpond.net": "wishpond",
- "wistia.com": "wistia",
- "wistia.net": "wistia",
- "parastorage.com": "wix.com",
- "wix.com": "wix.com",
- "public.wixab-cloud.com": "wixab",
- "wixmp.com": "wixmp",
- "wnzmauurgol.com": "wnzmauurgol.com",
- "wonderpush.com": "wonderpush",
- "woopic.com": "woopic.com",
- "woopra.com": "woopra",
- "pubmine.com": "wordpress_ads",
- "w.org": "wordpress_stats",
- "wordpress.com": "wordpress_stats",
- "wp.com": "wordpress_stats",
- "tracker.wordstream.com": "wordstream",
- "worldnaturenet.xyz": "worldnaturenet_xyz",
- "wp.pl": "wp.pl",
- "wpimg.pl": "wp.pl",
- "wpengine.com": "wp_engine",
- "clickanalyzer.jp": "writeup_clickanalyzer",
- "wurfl.io": "wurfl",
- "wwwpromoter.com": "wwwpromoter",
- "imgwykop.pl": "wykop",
- "wykop.pl": "wykop",
- "wysistat.com": "wysistat.com",
- "wysistat.net": "wysistat.com",
- "wywy.com": "wywy.com",
- "wywyuserservice.com": "wywy.com",
- "cdn.x-lift.jp": "x-lift",
- "xapads.com": "xapads",
- "xen-media.com": "xen-media.com",
- "xfreeservice.com": "xfreeservice.com",
- "xhamster.com": "xhamster",
- "xhamsterlive.com": "xhamster",
- "xhamsterpremium.com": "xhamster",
- "xhcdn.com": "xhamster",
- "xing-share.com": "xing",
- "xing.com": "xing",
- "xmediaclicks.com": "xmediaclicks",
- "xnxx-cdn.com": "xnxx_cdn",
- "xplosion.de": "xplosion",
- "xtendmedia.com": "xtend",
- "xvideos-cdn.com": "xvideos_com",
- "xvideos.com": "xvideos_com",
- "xxxlshop.de": "xxxlshop.de",
- "xxxlutz.de": "xxxlutz",
- "adx.com.ru": "yabbi",
- "yabbi.me": "yabbi",
- "yabuka.com": "yabuka",
- "tumblr.com": "yahoo",
- "yahoo.com": "yahoo",
- "yahooapis.com": "yahoo",
- "yimg.com": "yahoo",
- "ads.yahoo.com": "yahoo_ad_exchange",
- "yads.yahoo.com": "yahoo_ad_exchange",
- "yieldmanager.com": "yahoo_ad_exchange",
- "pr-bh.ybp.yahoo.com": "yahoo_ad_manager",
- "analytics.yahoo.com": "yahoo_analytics",
- "np.lexity.com": "yahoo_commerce_central",
- "storage-yahoo.jp": "yahoo_japan_retargeting",
- "yahoo.co.jp": "yahoo_japan_retargeting",
- "yahooapis.jp": "yahoo_japan_retargeting",
- "yimg.jp": "yahoo_japan_retargeting",
- "yjtag.jp": "yahoo_japan_retargeting",
- "ov.yahoo.co.jp": "yahoo_overture",
- "overture.com": "yahoo_overture",
- "luminate.com": "yahoo_small_business",
- "pixazza.com": "yahoo_small_business",
- "awaps.yandex.ru": "yandex",
- "d31j93rd8oukbv.cloudfront.net": "yandex",
- "webvisor.org": "yandex",
- "yandex.net": "yandex",
- "yandex.ru": "yandex",
- "yastatic.net": "yandex",
- "yandex.st": "yandex.api",
- "yandexadexchange.net": "yandex_adexchange",
- "metabar.ru": "yandex_advisor",
- "an.webvisor.org": "yandex_direct",
- "an.yandex.ru": "yandex_direct",
- "bs.yandex.ru": "yandex_direct",
- "mc.yandex.ru": "yandex_metrika",
- "passport.yandex.ru": "yandex_passport",
- "yapfiles.ru": "yapfiles.ru",
- "yashi.com": "yashi",
- "ad.adserverplus.com": "ybrant_media",
- "player.sambaads.com": "ycontent",
- "cdn.yektanet.com": "yektanet",
- "fetch.yektanet.com": "yektanet",
- "yengo.com": "yengo",
- "yengointernational.com": "yengo",
- "link.p0.com": "yesmail",
- "adsrevenue.net": "yesup_advertising",
- "infinityads.com": "yesup_advertising",
- "momentsharing.com": "yesup_advertising",
- "multipops.com": "yesup_advertising",
- "onlineadultadvertising.com": "yesup_advertising",
- "paypopup.com": "yesup_advertising",
- "popupxxx.com": "yesup_advertising",
- "xtargeting.com": "yesup_advertising",
- "xxxwebtraffic.com": "yesup_advertising",
- "app.yesware.com": "yesware",
- "yldbt.com": "yieldbot",
- "yieldify.com": "yieldify",
- "yieldlab.net": "yieldlab",
- "yieldlove-ad-serving.net": "yieldlove",
- "yieldlove.com": "yieldlove",
- "yieldmo.com": "yieldmo",
- "254a.com": "yieldr",
- "collect.yldr.io": "yieldr_air",
- "yieldsquare.com": "yieldsquare",
- "analytics-sdk.yle.fi": "yle",
- "yllix.com": "yllixmedia",
- "ymetrica1.com": "ymetrica1.com",
- "ymzrrizntbhde.com": "ymzrrizntbhde.com",
- "yoapp.s3.amazonaws.com": "yo_button",
- "natpal.com": "yodle",
- "analytics.yola.net": "yola_analytics",
- "pixel.yola.net": "yola_analytics",
- "delivery.yomedia.vn": "yomedia",
- "yoochoose.net": "yoochoose.net",
- "yotpo.com": "yotpo",
- "yottaa.net": "yottaa",
- "yottlyscript.com": "yottly",
- "api.youcanbook.me": "youcanbookme",
- "youcanbook.me": "youcanbookme",
- "player.youku.com": "youku",
- "youporn.com": "youporn",
- "ypncdn.com": "youporn",
- "googlevideo.com": "youtube",
- "youtube-nocookie.com": "youtube",
- "youtube.com": "youtube",
- "ytimg.com": "youtube",
- "c.ypcdn.com": "yp",
- "i1.ypcdn.com": "yp",
- "yellowpages.com": "yp",
- "prod-js.aws.y-track.com": "ysance",
- "y-track.com": "ysance",
- "yume.com": "yume",
- "yumenetworks.com": "yume,_inc.",
- "gravityrd-services.com": "yusp",
- "api.zadarma.com": "zadarma",
- "zalan.do": "zalando_de",
- "zalando.de": "zalando_de",
- "ztat.net": "zalando_de",
- "zaloapp.com": "zalo",
- "zanox-affiliate.de": "zanox",
- "zanox.com": "zanox",
- "zanox.ws": "zanox",
- "zaparena.com": "zaparena",
- "zapunited.com": "zaparena",
- "track.zappos.com": "zappos",
- "zdassets.com": "zdassets.com",
- "zebestof.com": "zebestof.com",
- "zedo.com": "zedo",
- "zemanta.com": "zemanta",
- "zencdn.net": "zencoder",
- "zendesk.com": "zendesk",
- "zergnet.com": "zergnet",
- "zero.kz": "zero.kz",
- "app.insightgrit.com": "zeta",
- "app.ubertags.com": "zeta",
- "cdn.boomtrain.com": "zeta",
- "events.api.boomtrain.com": "zeta",
- "rfihub.com": "zeta",
- "rfihub.net": "zeta",
- "ru4.com": "zeta",
- "xplusone.com": "zeta",
- "zeusclicks.com": "zeusclicks",
- "webtest.net": "ziff_davis",
- "zdbb.net": "ziff_davis",
- "ziffdavis.com": "ziff_davis",
- "ziffdavisinternational.com": "ziff_davis",
- "ziffprod.com": "ziff_davis",
- "ziffstatic.com": "ziff_davis",
- "analytics.ziftsolutions.com": "zift_solutions",
- "zimbio.com": "zimbio.com",
- "api.zippyshare.com": "zippyshare_widget",
- "zmags.com": "zmags",
- "zmctrack.net": "zmctrack.net",
- "zog.link": "zog.link",
- "js.zohostatic.eu": "zoho",
- "zononi.com": "zononi.com",
- "zopim.com": "zopim",
- "zukxd6fkxqn.com": "zukxd6fkxqn.com",
- "zwaar.net": "zwaar",
- "zwaar.org": "zwaar",
- "extend.tv": "zypmedia"
- }
-}
\ No newline at end of file
diff --git a/go.mod b/go.mod
index 2d54d4c4..39e40a4c 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,8 @@ go 1.19
require (
// TODO(a.garipov): Use v0.48.0 when it's released.
- github.com/AdguardTeam/dnsproxy v0.47.1-0.20230207130636-533058b17239
- github.com/AdguardTeam/golibs v0.11.4
+ github.com/AdguardTeam/dnsproxy v0.48.0
+ github.com/AdguardTeam/golibs v0.12.0
github.com/AdguardTeam/urlfilter v0.16.1
github.com/NYTimes/gziphandler v1.1.1
github.com/ameshkov/dnscrypt/v2 v2.2.5
@@ -51,16 +51,16 @@ require (
github.com/josharian/native v1.1.0 // indirect
github.com/mdlayher/packet v1.1.1 // indirect
github.com/mdlayher/socket v0.4.0 // indirect
- github.com/onsi/ginkgo/v2 v2.8.1 // indirect
+ github.com/onsi/ginkgo/v2 v2.8.3 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
github.com/pierrec/lz4/v4 v4.1.17 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/quic-go/qpack v0.4.0 // indirect
github.com/quic-go/qtls-go1-18 v0.2.0 // indirect
- github.com/quic-go/qtls-go1-19 v0.2.0 // indirect
- github.com/quic-go/qtls-go1-20 v0.1.0 // indirect
- github.com/u-root/uio v0.0.0-20230215032506-9aa6f7e2d72c // indirect
+ github.com/quic-go/qtls-go1-19 v0.2.1 // indirect
+ github.com/quic-go/qtls-go1-20 v0.1.1 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/text v0.7.0 // indirect
diff --git a/go.sum b/go.sum
index 68a4b1ab..8060927f 100644
--- a/go.sum
+++ b/go.sum
@@ -1,9 +1,9 @@
-github.com/AdguardTeam/dnsproxy v0.47.1-0.20230207130636-533058b17239 h1:n1oOiywOvdeqWLto809bK1rK1EPDkpaSfT/r1OiCVaQ=
-github.com/AdguardTeam/dnsproxy v0.47.1-0.20230207130636-533058b17239/go.mod h1:+Sdi5ISrjDFbeCsKNqzcC1Ag7pJ5Hh9y+UBNb3dfqJ4=
+github.com/AdguardTeam/dnsproxy v0.48.0 h1:sGViYy2pV0cEp2zCsxPjFd9rlgD0+yELpIeLkBxHAoI=
+github.com/AdguardTeam/dnsproxy v0.48.0/go.mod h1:9OHoeaVod+moWwrLjHF95RQnFWGi/6B1tfKsxWc/yGE=
github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4=
github.com/AdguardTeam/golibs v0.10.4/go.mod h1:rSfQRGHIdgfxriDDNgNJ7HmE5zRoURq8R+VdR81Zuzw=
-github.com/AdguardTeam/golibs v0.11.4 h1:IltyvxwCTN+xxJF5sh6VadF8Zfbf8elgCm9dgijSVzM=
-github.com/AdguardTeam/golibs v0.11.4/go.mod h1:87bN2x4VsTritptE3XZg9l8T6gznWsIxHBcQ1DeRIXA=
+github.com/AdguardTeam/golibs v0.12.0 h1:z4Q3Mz0pHJ2Zag4B0RBaIXEUue1TPOKkbRiYkwC4r7I=
+github.com/AdguardTeam/golibs v0.12.0/go.mod h1:87bN2x4VsTritptE3XZg9l8T6gznWsIxHBcQ1DeRIXA=
github.com/AdguardTeam/gomitmproxy v0.2.0/go.mod h1:Qdv0Mktnzer5zpdpi5rAwixNJzW2FN91LjKJCkVbYGU=
github.com/AdguardTeam/urlfilter v0.16.1 h1:ZPi0rjqo8cQf2FVdzo6cqumNoHZx2KPXj2yZa1A5BBw=
github.com/AdguardTeam/urlfilter v0.16.1/go.mod h1:46YZDOV1+qtdRDuhZKVPSSp7JWWes0KayqHrKAFBdEI=
@@ -108,9 +108,9 @@ github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/onsi/ginkgo/v2 v2.8.1 h1:xFTEVwOFa1D/Ty24Ws1npBWkDYEV9BqZrsDxVrVkrrU=
-github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
-github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q=
+github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ=
+github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY=
+github.com/onsi/gomega v1.27.0 h1:QLidEla4bXUuZVFa4KX6JHCsuGgbi85LC/pCHrt/O08=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
@@ -125,10 +125,10 @@ github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
github.com/quic-go/qtls-go1-18 v0.2.0 h1:5ViXqBZ90wpUcZS0ge79rf029yx0dYB0McyPJwqqj7U=
github.com/quic-go/qtls-go1-18 v0.2.0/go.mod h1:moGulGHK7o6O8lSPSZNoOwcLvJKJ85vVNc7oJFD65bc=
-github.com/quic-go/qtls-go1-19 v0.2.0 h1:Cvn2WdhyViFUHoOqK52i51k4nDX8EwIh5VJiVM4nttk=
-github.com/quic-go/qtls-go1-19 v0.2.0/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI=
-github.com/quic-go/qtls-go1-20 v0.1.0 h1:d1PK3ErFy9t7zxKsG3NXBJXZjp/kMLoIb3y/kV54oAI=
-github.com/quic-go/qtls-go1-20 v0.1.0/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM=
+github.com/quic-go/qtls-go1-19 v0.2.1 h1:aJcKNMkH5ASEJB9FXNeZCyTEIHU1J7MmHyz1Q1TSG1A=
+github.com/quic-go/qtls-go1-19 v0.2.1/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI=
+github.com/quic-go/qtls-go1-20 v0.1.1 h1:KbChDlg82d3IHqaj2bn6GfKRj84Per2VGf5XV3wSwQk=
+github.com/quic-go/qtls-go1-20 v0.1.1/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM=
github.com/quic-go/quic-go v0.32.0 h1:lY02md31s1JgPiiyfqJijpu/UX/Iun304FI3yUqX7tA=
github.com/quic-go/quic-go v0.32.0/go.mod h1:/fCsKANhQIeD5l76c2JFU+07gVE3KaA0FP+0zMWwfwo=
github.com/shirou/gopsutil/v3 v3.21.8 h1:nKct+uP0TV8DjjNiHanKf8SAuub+GNsbrOtM9Nl9biA=
@@ -155,8 +155,8 @@ github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ
github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ=
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
github.com/u-root/uio v0.0.0-20221213070652-c3537552635f/go.mod h1:IogEAUBXDEwX7oR/BMmCctShYs80ql4hF0ySdzGxf7E=
-github.com/u-root/uio v0.0.0-20230215032506-9aa6f7e2d72c h1:PHoGTnweZP+KIg/8Zc6+iOesrIF5yHkpb4GBDxHm7yE=
-github.com/u-root/uio v0.0.0-20230215032506-9aa6f7e2d72c/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
diff --git a/internal/aghnet/arpdb_bsd.go b/internal/aghnet/arpdb_bsd.go
index c4048939..50287785 100644
--- a/internal/aghnet/arpdb_bsd.go
+++ b/internal/aghnet/arpdb_bsd.go
@@ -67,7 +67,7 @@ func parseArpA(sc *bufio.Scanner, lenHint int) (ns []Neighbor) {
}
host := fields[0]
- err = netutil.ValidateDomainName(host)
+ err = netutil.ValidateHostname(host)
if err != nil {
log.Debug("arpdb: parsing arp output: host: %s", err)
} else {
diff --git a/internal/aghnet/arpdb_linux.go b/internal/aghnet/arpdb_linux.go
index e6e51feb..d3ebe4a7 100644
--- a/internal/aghnet/arpdb_linux.go
+++ b/internal/aghnet/arpdb_linux.go
@@ -198,7 +198,7 @@ func parseArpA(sc *bufio.Scanner, lenHint int) (ns []Neighbor) {
}
host := fields[0]
- if verr := netutil.ValidateDomainName(host); verr != nil {
+ if verr := netutil.ValidateHostname(host); verr != nil {
log.Debug("arpdb: parsing arp output: host: %s", verr)
} else {
n.Name = host
diff --git a/internal/aghnet/hostscontainer.go b/internal/aghnet/hostscontainer.go
index 62886730..c53f9d7c 100644
--- a/internal/aghnet/hostscontainer.go
+++ b/internal/aghnet/hostscontainer.go
@@ -343,7 +343,7 @@ func (hp *hostsParser) parseLine(line string) (ip netip.Addr, hosts []string) {
// See https://github.com/AdguardTeam/AdGuardHome/issues/3946.
//
// TODO(e.burkov): Investigate if hosts may contain DNS-SD domains.
- err = netutil.ValidateDomainName(f)
+ err = netutil.ValidateHostname(f)
if err != nil {
log.Error("%s: host %q is invalid, ignoring", hostsContainerPref, f)
diff --git a/internal/dhcpd/config.go b/internal/dhcpd/config.go
index 8b255f76..c942039a 100644
--- a/internal/dhcpd/config.go
+++ b/internal/dhcpd/config.go
@@ -45,8 +45,10 @@ type DHCPServer interface {
AddStaticLease(l *Lease) (err error)
// RemoveStaticLease - remove a static lease
RemoveStaticLease(l *Lease) (err error)
- // FindMACbyIP - find a MAC address by IP address in the currently active DHCP leases
- FindMACbyIP(ip net.IP) net.HardwareAddr
+
+ // FindMACbyIP returns a MAC address by the IP address of its lease, if
+ // there is one.
+ FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr)
// WriteDiskConfig4 - copy disk configuration
WriteDiskConfig4(c *V4ServerConf)
diff --git a/internal/dhcpd/dhcpd.go b/internal/dhcpd/dhcpd.go
index 3602b4db..ef7fe19f 100644
--- a/internal/dhcpd/dhcpd.go
+++ b/internal/dhcpd/dhcpd.go
@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"net"
+ "net/netip"
"path/filepath"
"time"
@@ -42,7 +43,11 @@ type Lease struct {
Hostname string `json:"hostname"`
HWAddr net.HardwareAddr `json:"mac"`
- IP net.IP `json:"ip"`
+
+ // IP is the IP address leased to the client.
+ //
+ // TODO(a.garipov): Migrate leases.db and use netip.Addr.
+ IP net.IP `json:"ip"`
}
// Clone returns a deep copy of l.
@@ -160,7 +165,7 @@ type Interface interface {
Leases(flags GetLeasesFlags) (leases []*Lease)
SetOnLeaseChanged(onLeaseChanged OnLeaseChangedT)
- FindMACbyIP(ip net.IP) (mac net.HardwareAddr)
+ FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr)
WriteDiskConfig(c *ServerConfig)
}
@@ -174,7 +179,7 @@ type MockInterface struct {
OnEnabled func() (ok bool)
OnLeases func(flags GetLeasesFlags) (leases []*Lease)
OnSetOnLeaseChanged func(f OnLeaseChangedT)
- OnFindMACbyIP func(ip net.IP) (mac net.HardwareAddr)
+ OnFindMACbyIP func(ip netip.Addr) (mac net.HardwareAddr)
OnWriteDiskConfig func(c *ServerConfig)
}
@@ -195,8 +200,10 @@ func (s *MockInterface) Leases(flags GetLeasesFlags) (ls []*Lease) { return s.On
// SetOnLeaseChanged implements the Interface for *MockInterface.
func (s *MockInterface) SetOnLeaseChanged(f OnLeaseChangedT) { s.OnSetOnLeaseChanged(f) }
-// FindMACbyIP implements the Interface for *MockInterface.
-func (s *MockInterface) FindMACbyIP(ip net.IP) (mac net.HardwareAddr) { return s.OnFindMACbyIP(ip) }
+// FindMACbyIP implements the [Interface] for *MockInterface.
+func (s *MockInterface) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) {
+ return s.OnFindMACbyIP(ip)
+}
// WriteDiskConfig implements the Interface for *MockInterface.
func (s *MockInterface) WriteDiskConfig(c *ServerConfig) { s.OnWriteDiskConfig(c) }
@@ -375,11 +382,13 @@ func (s *server) Leases(flags GetLeasesFlags) (leases []*Lease) {
return append(s.srv4.GetLeases(flags), s.srv6.GetLeases(flags)...)
}
-// FindMACbyIP - find a MAC address by IP address in the currently active DHCP leases
-func (s *server) FindMACbyIP(ip net.IP) net.HardwareAddr {
- if ip.To4() != nil {
+// FindMACbyIP returns a MAC address by the IP address of its lease, if there is
+// one.
+func (s *server) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) {
+ if ip.Is4() {
return s.srv4.FindMACbyIP(ip)
}
+
return s.srv6.FindMACbyIP(ip)
}
diff --git a/internal/dhcpd/options_unix.go b/internal/dhcpd/options_unix.go
index 082826d5..6881d942 100644
--- a/internal/dhcpd/options_unix.go
+++ b/internal/dhcpd/options_unix.go
@@ -263,15 +263,12 @@ func (s *v4Server) prepareOptions() {
// IP-Layer Per Interface
- // Since nearly all networks in the Internet currently support an MTU of
- // 576 or greater, we strongly recommend the use of 576 for datagrams
- // sent to non-local networks.
+ // Don't set the Interface MTU because client may choose the value on
+ // their own since it's listed in the [Host Requirements RFC]. It also
+ // seems the values listed there sometimes appear obsolete, see
+ // https://github.com/AdguardTeam/AdGuardHome/issues/5281.
//
- // See https://datatracker.ietf.org/doc/html/rfc1122#section-3.3.3.
- dhcpv4.Option{
- Code: dhcpv4.OptionInterfaceMTU,
- Value: dhcpv4.Uint16(576),
- },
+ // [Host Requirements RFC]: https://datatracker.ietf.org/doc/html/rfc1122#section-3.3.3.
// Set the All Subnets Are Local Option to false since commonly the
// connected hosts aren't expected to be multihomed.
diff --git a/internal/dhcpd/v46_windows.go b/internal/dhcpd/v46_windows.go
index 624ec767..dcdb3caf 100644
--- a/internal/dhcpd/v46_windows.go
+++ b/internal/dhcpd/v46_windows.go
@@ -4,23 +4,26 @@ package dhcpd
// 'u-root/u-root' package, a dependency of 'insomniacslk/dhcp' package, doesn't build on Windows
-import "net"
+import (
+ "net"
+ "net/netip"
+)
type winServer struct{}
// type check
var _ DHCPServer = winServer{}
-func (winServer) ResetLeases(_ []*Lease) (err error) { return nil }
-func (winServer) GetLeases(_ GetLeasesFlags) (leases []*Lease) { return nil }
-func (winServer) getLeasesRef() []*Lease { return nil }
-func (winServer) AddStaticLease(_ *Lease) (err error) { return nil }
-func (winServer) RemoveStaticLease(_ *Lease) (err error) { return nil }
-func (winServer) FindMACbyIP(_ net.IP) (mac net.HardwareAddr) { return nil }
-func (winServer) WriteDiskConfig4(_ *V4ServerConf) {}
-func (winServer) WriteDiskConfig6(_ *V6ServerConf) {}
-func (winServer) Start() (err error) { return nil }
-func (winServer) Stop() (err error) { return nil }
+func (winServer) ResetLeases(_ []*Lease) (err error) { return nil }
+func (winServer) GetLeases(_ GetLeasesFlags) (leases []*Lease) { return nil }
+func (winServer) getLeasesRef() []*Lease { return nil }
+func (winServer) AddStaticLease(_ *Lease) (err error) { return nil }
+func (winServer) RemoveStaticLease(_ *Lease) (err error) { return nil }
+func (winServer) FindMACbyIP(_ netip.Addr) (mac net.HardwareAddr) { return nil }
+func (winServer) WriteDiskConfig4(_ *V4ServerConf) {}
+func (winServer) WriteDiskConfig6(_ *V6ServerConf) {}
+func (winServer) Start() (err error) { return nil }
+func (winServer) Stop() (err error) { return nil }
func v4Create(_ *V4ServerConf) (s DHCPServer, err error) { return winServer{}, nil }
func v6Create(_ V6ServerConf) (s DHCPServer, err error) { return winServer{}, nil }
diff --git a/internal/dhcpd/v4_unix.go b/internal/dhcpd/v4_unix.go
index d83e0125..63ae46d9 100644
--- a/internal/dhcpd/v4_unix.go
+++ b/internal/dhcpd/v4_unix.go
@@ -108,7 +108,7 @@ func (s *v4Server) validHostnameForClient(cliHostname string, ip net.IP) (hostna
hostname = aghnet.GenerateHostname(ip)
}
- err = netutil.ValidateDomainName(hostname)
+ err = netutil.ValidateHostname(hostname)
if err != nil {
log.Info("dhcpv4: %s", err)
hostname = ""
@@ -200,20 +200,20 @@ func (s *v4Server) GetLeases(flags GetLeasesFlags) (leases []*Lease) {
return leases
}
-// FindMACbyIP - find a MAC address by IP address in the currently active DHCP leases
-func (s *v4Server) FindMACbyIP(ip net.IP) net.HardwareAddr {
+// FindMACbyIP implements the [Interface] for *v4Server.
+func (s *v4Server) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) {
now := time.Now()
s.leasesLock.Lock()
defer s.leasesLock.Unlock()
- ip4 := ip.To4()
- if ip4 == nil {
+ if !ip.Is4() {
return nil
}
+ netIP := ip.AsSlice()
for _, l := range s.leases {
- if l.IP.Equal(ip4) {
+ if l.IP.Equal(netIP) {
if l.Expiry.After(now) || l.IsStatic() {
return l.HWAddr
}
@@ -372,7 +372,7 @@ func (s *v4Server) AddStaticLease(l *Lease) (err error) {
return err
}
- err = netutil.ValidateDomainName(hostname)
+ err = netutil.ValidateHostname(hostname)
if err != nil {
return fmt.Errorf("validating hostname: %w", err)
}
diff --git a/internal/dhcpd/v4_unix_test.go b/internal/dhcpd/v4_unix_test.go
index 411e36d9..8c1255e1 100644
--- a/internal/dhcpd/v4_unix_test.go
+++ b/internal/dhcpd/v4_unix_test.go
@@ -251,8 +251,8 @@ func TestV4Server_AddRemove_static(t *testing.T) {
},
name: "bad_hostname",
wantErrMsg: `dhcpv4: adding static lease: validating hostname: ` +
- `bad domain name "bad-lbl-.local": ` +
- `bad domain name label "bad-lbl-": bad domain name label rune '-'`,
+ `bad hostname "bad-lbl-.local": ` +
+ `bad hostname label "bad-lbl-": bad hostname label rune '-'`,
}}
for _, tc := range testCases {
diff --git a/internal/dhcpd/v6_unix.go b/internal/dhcpd/v6_unix.go
index 96512ddb..d69d47c2 100644
--- a/internal/dhcpd/v6_unix.go
+++ b/internal/dhcpd/v6_unix.go
@@ -6,6 +6,7 @@ import (
"bytes"
"fmt"
"net"
+ "net/netip"
"sync"
"time"
@@ -107,21 +108,26 @@ func (s *v6Server) getLeasesRef() []*Lease {
return s.leases
}
-// FindMACbyIP - find a MAC address by IP address in the currently active DHCP leases
-func (s *v6Server) FindMACbyIP(ip net.IP) net.HardwareAddr {
- now := time.Now().Unix()
+// FindMACbyIP implements the [Interface] for *v6Server.
+func (s *v6Server) FindMACbyIP(ip netip.Addr) (mac net.HardwareAddr) {
+ now := time.Now()
s.leasesLock.Lock()
defer s.leasesLock.Unlock()
+ if !ip.Is6() {
+ return nil
+ }
+
+ netIP := ip.AsSlice()
for _, l := range s.leases {
- if l.IP.Equal(ip) {
- unix := l.Expiry.Unix()
- if unix > now || unix == leaseExpireStatic {
+ if l.IP.Equal(netIP) {
+ if l.Expiry.After(now) || l.IsStatic() {
return l.HWAddr
}
}
}
+
return nil
}
diff --git a/internal/dnsforward/access.go b/internal/dnsforward/access.go
index 6d45a6d5..12f5f3c7 100644
--- a/internal/dnsforward/access.go
+++ b/internal/dnsforward/access.go
@@ -13,6 +13,7 @@ import (
"github.com/AdguardTeam/golibs/stringutil"
"github.com/AdguardTeam/urlfilter"
"github.com/AdguardTeam/urlfilter/filterlist"
+ "github.com/AdguardTeam/urlfilter/rules"
)
// unit is a convenient alias for struct{}
@@ -127,8 +128,12 @@ func (a *accessManager) isBlockedClientID(id string) (ok bool) {
}
// isBlockedHost returns true if host should be blocked.
-func (a *accessManager) isBlockedHost(host string) (ok bool) {
- _, ok = a.blockedHostsEng.Match(strings.ToLower(host))
+func (a *accessManager) isBlockedHost(host string, qt rules.RRType) (ok bool) {
+ _, ok = a.blockedHostsEng.MatchRequest(&urlfilter.DNSRequest{
+ Hostname: host,
+ ClientIP: "0.0.0.0",
+ DNSType: qt,
+ })
return ok
}
diff --git a/internal/dnsforward/access_test.go b/internal/dnsforward/access_test.go
index 7889cdad..d5d7da26 100644
--- a/internal/dnsforward/access_test.go
+++ b/internal/dnsforward/access_test.go
@@ -4,6 +4,8 @@ import (
"net/netip"
"testing"
+ "github.com/AdguardTeam/urlfilter/rules"
+ "github.com/miekg/dns"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -28,54 +30,75 @@ func TestIsBlockedHost(t *testing.T) {
"host1",
"*.host.com",
"||host3.com^",
+ "||*^$dnstype=HTTPS",
})
require.NoError(t, err)
testCases := []struct {
+ want assert.BoolAssertionFunc
name string
host string
- want bool
+ qt rules.RRType
}{{
+ want: assert.True,
name: "plain_match",
host: "host1",
- want: true,
+ qt: dns.TypeA,
}, {
+ want: assert.False,
name: "plain_mismatch",
host: "host2",
- want: false,
+ qt: dns.TypeA,
}, {
+ want: assert.True,
name: "subdomain_match_short",
host: "asdf.host.com",
- want: true,
+ qt: dns.TypeA,
}, {
+ want: assert.True,
name: "subdomain_match_long",
host: "qwer.asdf.host.com",
- want: true,
+ qt: dns.TypeA,
}, {
+ want: assert.False,
name: "subdomain_mismatch_no_lead",
host: "host.com",
- want: false,
+ qt: dns.TypeA,
}, {
+ want: assert.False,
name: "subdomain_mismatch_bad_asterisk",
host: "asdf.zhost.com",
- want: false,
+ qt: dns.TypeA,
}, {
+ want: assert.True,
name: "rule_match_simple",
host: "host3.com",
- want: true,
+ qt: dns.TypeA,
}, {
+ want: assert.True,
name: "rule_match_complex",
host: "asdf.host3.com",
- want: true,
+ qt: dns.TypeA,
}, {
+ want: assert.False,
name: "rule_mismatch",
host: ".host3.com",
- want: false,
+ qt: dns.TypeA,
+ }, {
+ want: assert.True,
+ name: "by_qtype",
+ host: "site-with-https-record.example",
+ qt: dns.TypeHTTPS,
+ }, {
+ want: assert.False,
+ name: "by_qtype_other",
+ host: "site-with-https-record.example",
+ qt: dns.TypeA,
}}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
- assert.Equal(t, tc.want, a.isBlockedHost(tc.host))
+ tc.want(t, a.isBlockedHost(tc.host, tc.qt))
})
}
}
@@ -93,29 +116,29 @@ func TestIsBlockedIP(t *testing.T) {
require.NoError(t, err)
testCases := []struct {
+ ip netip.Addr
name string
wantRule string
- ip netip.Addr
wantBlocked bool
}{{
+ ip: netip.MustParseAddr("1.2.3.4"),
name: "match_ip",
wantRule: "1.2.3.4",
- ip: netip.MustParseAddr("1.2.3.4"),
wantBlocked: true,
}, {
+ ip: netip.MustParseAddr("5.6.7.100"),
name: "match_cidr",
wantRule: "5.6.7.8/24",
- ip: netip.MustParseAddr("5.6.7.100"),
wantBlocked: true,
}, {
+ ip: netip.MustParseAddr("9.2.3.4"),
name: "no_match_ip",
wantRule: "",
- ip: netip.MustParseAddr("9.2.3.4"),
wantBlocked: false,
}, {
+ ip: netip.MustParseAddr("9.6.7.100"),
name: "no_match_cidr",
wantRule: "",
- ip: netip.MustParseAddr("9.6.7.100"),
wantBlocked: false,
}}
diff --git a/internal/dnsforward/clientid.go b/internal/dnsforward/clientid.go
index b48d4a4c..a7f2902a 100644
--- a/internal/dnsforward/clientid.go
+++ b/internal/dnsforward/clientid.go
@@ -14,7 +14,7 @@ import (
// ValidateClientID returns an error if id is not a valid ClientID.
func ValidateClientID(id string) (err error) {
- err = netutil.ValidateDomainNameLabel(id)
+ err = netutil.ValidateHostnameLabel(id)
if err != nil {
// Replace the domain name label wrapper with our own.
return fmt.Errorf("invalid clientid %q: %w", id, errors.Unwrap(err))
diff --git a/internal/dnsforward/clientid_test.go b/internal/dnsforward/clientid_test.go
index 458b66d3..5391ddc0 100644
--- a/internal/dnsforward/clientid_test.go
+++ b/internal/dnsforward/clientid_test.go
@@ -119,7 +119,7 @@ func TestServer_clientIDFromDNSContext(t *testing.T) {
cliSrvName: "!!!.example.com",
wantClientID: "",
wantErrMsg: `clientid check: invalid clientid "!!!": ` +
- `bad domain name label rune '!'`,
+ `bad hostname label rune '!'`,
inclHTTPTLS: false,
strictSNI: true,
}, {
@@ -131,7 +131,7 @@ func TestServer_clientIDFromDNSContext(t *testing.T) {
wantClientID: "",
wantErrMsg: `clientid check: invalid clientid "abcdefghijklmno` +
`pqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789": ` +
- `domain name label is too long: got 72, max 63`,
+ `hostname label is too long: got 72, max 63`,
inclHTTPTLS: false,
strictSNI: true,
}, {
@@ -330,7 +330,7 @@ func TestClientIDFromDNSContextHTTPS(t *testing.T) {
path: "/dns-query/!!!",
cliSrvName: "example.com",
wantClientID: "",
- wantErrMsg: `clientid check: invalid clientid "!!!": bad domain name label rune '!'`,
+ wantErrMsg: `clientid check: invalid clientid "!!!": bad hostname label rune '!'`,
}, {
name: "both_ids",
path: "/dns-query/right",
diff --git a/internal/dnsforward/config.go b/internal/dnsforward/config.go
index b48eb776..f18e7513 100644
--- a/internal/dnsforward/config.go
+++ b/internal/dnsforward/config.go
@@ -7,7 +7,6 @@ import (
"net"
"net/netip"
"os"
- "sort"
"strings"
"time"
@@ -23,6 +22,7 @@ import (
"github.com/AdguardTeam/golibs/stringutil"
"github.com/AdguardTeam/golibs/timeutil"
"github.com/ameshkov/dnscrypt/v2"
+ "golang.org/x/exp/slices"
)
// BlockingMode is an enum of all allowed blocking modes.
@@ -53,7 +53,6 @@ const (
// The zero FilteringConfig is empty and ready for use.
type FilteringConfig struct {
// Callbacks for other modules
- // --
// FilterHandler is an optional additional filtering callback.
FilterHandler func(clientAddr net.IP, clientID string, settings *filtering.Settings) `yaml:"-"`
@@ -64,50 +63,82 @@ type FilteringConfig struct {
GetCustomUpstreamByClient func(id string) (conf *proxy.UpstreamConfig, err error) `yaml:"-"`
// Protection configuration
- // --
- ProtectionEnabled bool `yaml:"protection_enabled"` // whether or not use any of filtering features
- BlockingMode BlockingMode `yaml:"blocking_mode"` // mode how to answer filtered requests
- BlockingIPv4 net.IP `yaml:"blocking_ipv4"` // IP address to be returned for a blocked A request
- BlockingIPv6 net.IP `yaml:"blocking_ipv6"` // IP address to be returned for a blocked AAAA request
- BlockedResponseTTL uint32 `yaml:"blocked_response_ttl"` // if 0, then default is used (3600)
+ // ProtectionEnabled defines whether or not use any of filtering features.
+ ProtectionEnabled bool `yaml:"protection_enabled"`
- // IP (or domain name) which is used to respond to DNS requests blocked by parental control or safe-browsing
- ParentalBlockHost string `yaml:"parental_block_host"`
+ // BlockingMode defines the way how blocked responses are constructed.
+ BlockingMode BlockingMode `yaml:"blocking_mode"`
+
+ // BlockingIPv4 is the IP address to be returned for a blocked A request.
+ BlockingIPv4 net.IP `yaml:"blocking_ipv4"`
+
+ // BlockingIPv6 is the IP address to be returned for a blocked AAAA
+ // request.
+ BlockingIPv6 net.IP `yaml:"blocking_ipv6"`
+
+ // BlockedResponseTTL is the time-to-live value for blocked responses. If
+ // 0, then default value is used (3600).
+ BlockedResponseTTL uint32 `yaml:"blocked_response_ttl"`
+
+ // ParentalBlockHost is the IP (or domain name) which is used to respond to
+ // DNS requests blocked by parental control.
+ ParentalBlockHost string `yaml:"parental_block_host"`
+
+ // SafeBrowsingBlockHost is the IP (or domain name) which is used to
+ // respond to DNS requests blocked by safe-browsing.
SafeBrowsingBlockHost string `yaml:"safebrowsing_block_host"`
// Anti-DNS amplification
- // --
- Ratelimit uint32 `yaml:"ratelimit"` // max number of requests per second from a given IP (0 to disable)
- RatelimitWhitelist []string `yaml:"ratelimit_whitelist"` // a list of whitelisted client IP addresses
- RefuseAny bool `yaml:"refuse_any"` // if true, refuse ANY requests
+ // Ratelimit is the maximum number of requests per second from a given IP
+ // (0 to disable).
+ Ratelimit uint32 `yaml:"ratelimit"`
+
+ // RatelimitWhitelist is the list of whitelisted client IP addresses.
+ RatelimitWhitelist []string `yaml:"ratelimit_whitelist"`
+
+ // RefuseAny, if true, refuse ANY requests.
+ RefuseAny bool `yaml:"refuse_any"`
// Upstream DNS servers configuration
- // --
- UpstreamDNS []string `yaml:"upstream_dns"`
- UpstreamDNSFileName string `yaml:"upstream_dns_file"`
- BootstrapDNS []string `yaml:"bootstrap_dns"` // a list of bootstrap DNS for DoH and DoT (plain DNS only)
- AllServers bool `yaml:"all_servers"` // if true, parallel queries to all configured upstream servers are enabled
- FastestAddr bool `yaml:"fastest_addr"` // use Fastest Address algorithm
+ // UpstreamDNS is the list of upstream DNS servers.
+ UpstreamDNS []string `yaml:"upstream_dns"`
+
+ // UpstreamDNSFileName, if set, points to the file which contains upstream
+ // DNS servers.
+ UpstreamDNSFileName string `yaml:"upstream_dns_file"`
+
+ // BootstrapDNS is the list of bootstrap DNS servers for DoH and DoT
+ // resolvers (plain DNS only).
+ BootstrapDNS []string `yaml:"bootstrap_dns"`
+
+ // AllServers, if true, parallel queries to all configured upstream servers
+ // are enabled.
+ AllServers bool `yaml:"all_servers"`
+
+ // FastestAddr, if true, use Fastest Address algorithm.
+ FastestAddr bool `yaml:"fastest_addr"`
+
// FastestTimeout replaces the default timeout for dialing IP addresses
// when FastestAddr is true.
FastestTimeout timeutil.Duration `yaml:"fastest_timeout"`
// Access settings
- // --
- // AllowedClients is the slice of IP addresses, CIDR networks, and ClientIDs
- // of allowed clients. If not empty, only these clients are allowed, and
- // [FilteringConfig.DisallowedClients] are ignored.
+ // AllowedClients is the slice of IP addresses, CIDR networks, and
+ // ClientIDs of allowed clients. If not empty, only these clients are
+ // allowed, and [FilteringConfig.DisallowedClients] are ignored.
AllowedClients []string `yaml:"allowed_clients"`
// DisallowedClients is the slice of IP addresses, CIDR networks, and
// ClientIDs of disallowed clients.
DisallowedClients []string `yaml:"disallowed_clients"`
- BlockedHosts []string `yaml:"blocked_hosts"` // hosts that should be blocked
+ // BlockedHosts is the list of hosts that should be blocked.
+ BlockedHosts []string `yaml:"blocked_hosts"`
+
// TrustedProxies is the list of IP addresses and CIDR networks to detect
// proxy servers addresses the DoH requests from which should be handled.
// The value of nil or an empty slice for this field makes Proxy not trust
@@ -115,26 +146,46 @@ type FilteringConfig struct {
TrustedProxies []string `yaml:"trusted_proxies"`
// DNS cache settings
- // --
- CacheSize uint32 `yaml:"cache_size"` // DNS cache size (in bytes)
- CacheMinTTL uint32 `yaml:"cache_ttl_min"` // override TTL value (minimum) received from upstream server
- CacheMaxTTL uint32 `yaml:"cache_ttl_max"` // override TTL value (maximum) received from upstream server
+ // CacheSize is the DNS cache size (in bytes).
+ CacheSize uint32 `yaml:"cache_size"`
+
+ // CacheMinTTL is the override TTL value (minimum) received from upstream
+ // server.
+ CacheMinTTL uint32 `yaml:"cache_ttl_min"`
+
+ // CacheMaxTTL is the override TTL value (maximum) received from upstream
+ // server.
+ CacheMaxTTL uint32 `yaml:"cache_ttl_max"`
+
// CacheOptimistic defines if optimistic cache mechanism should be used.
CacheOptimistic bool `yaml:"cache_optimistic"`
// Other settings
- // --
- BogusNXDomain []string `yaml:"bogus_nxdomain"` // transform responses with these IP addresses to NXDOMAIN
- AAAADisabled bool `yaml:"aaaa_disabled"` // Respond with an empty answer to all AAAA requests
- EnableDNSSEC bool `yaml:"enable_dnssec"` // Set AD flag in outcoming DNS request
- EnableEDNSClientSubnet bool `yaml:"edns_client_subnet"` // Enable EDNS Client Subnet option
- MaxGoroutines uint32 `yaml:"max_goroutines"` // Max. number of parallel goroutines for processing incoming requests
- HandleDDR bool `yaml:"handle_ddr"` // Handle DDR requests
+ // BogusNXDomain is the list of IP addresses, responses with them will be
+ // transformed to NXDOMAIN.
+ BogusNXDomain []string `yaml:"bogus_nxdomain"`
- // IpsetList is the ipset configuration that allows AdGuard Home to add
- // IP addresses of the specified domain names to an ipset list. Syntax:
+ // AAAADisabled, if true, respond with an empty answer to all AAAA
+ // requests.
+ AAAADisabled bool `yaml:"aaaa_disabled"`
+
+ // EnableDNSSEC, if true, set AD flag in outcoming DNS request.
+ EnableDNSSEC bool `yaml:"enable_dnssec"`
+
+ // EDNSClientSubnet is the settings list for EDNS Client Subnet.
+ EDNSClientSubnet *EDNSClientSubnet `yaml:"edns_client_subnet"`
+
+ // MaxGoroutines is the max number of parallel goroutines for processing
+ // incoming requests.
+ MaxGoroutines uint32 `yaml:"max_goroutines"`
+
+ // HandleDDR, if true, handle DDR requests
+ HandleDDR bool `yaml:"handle_ddr"`
+
+ // IpsetList is the ipset configuration that allows AdGuard Home to add IP
+ // addresses of the specified domain names to an ipset list. Syntax:
//
// DOMAIN[,DOMAIN].../IPSET_NAME
//
@@ -146,6 +197,18 @@ type FilteringConfig struct {
IpsetListFileName string `yaml:"ipset_file"`
}
+// EDNSClientSubnet is the settings list for EDNS Client Subnet.
+type EDNSClientSubnet struct {
+ // CustomIP for EDNS Client Subnet.
+ CustomIP string `yaml:"custom_ip"`
+
+ // Enabled defines if EDNS Client Subnet is enabled.
+ Enabled bool `yaml:"enabled"`
+
+ // UseCustom defines if CustomIP should be used.
+ UseCustom bool `yaml:"use_custom"`
+}
+
// TLSConfig is the TLS configuration for HTTPS, DNS-over-HTTPS, and DNS-over-TLS
type TLSConfig struct {
cert tls.Certificate
@@ -270,12 +333,24 @@ func (s *Server) createProxyConfig() (conf proxy.Config, err error) {
UpstreamConfig: srvConf.UpstreamConfig,
BeforeRequestHandler: s.beforeRequestHandler,
RequestHandler: s.handleDNSRequest,
- EnableEDNSClientSubnet: srvConf.EnableEDNSClientSubnet,
+ EnableEDNSClientSubnet: srvConf.EDNSClientSubnet.Enabled,
MaxGoroutines: int(srvConf.MaxGoroutines),
UseDNS64: srvConf.UseDNS64,
DNS64Prefs: srvConf.DNS64Prefixes,
}
+ if srvConf.EDNSClientSubnet.UseCustom {
+ // TODO(s.chzhen): Add wrapper around netip.Addr.
+ var ip net.IP
+ ip, err = netutil.ParseIP(srvConf.EDNSClientSubnet.CustomIP)
+ if err != nil {
+ return conf, fmt.Errorf("edns: %w", err)
+ }
+
+ // TODO(s.chzhen): Use netip.Addr instead of net.IP inside dnsproxy.
+ conf.EDNSAddr = ip
+ }
+
if srvConf.CacheSize != 0 {
conf.CacheEnabled = true
conf.CacheSizeBytes = int(srvConf.CacheSize)
@@ -510,7 +585,7 @@ func (s *Server) prepareTLS(proxyConfig *proxy.Config) (err error) {
if len(cert.DNSNames) != 0 {
s.conf.dnsNames = cert.DNSNames
log.Debug("dnsforward: using certificate's SAN as DNS names: %v", cert.DNSNames)
- sort.Strings(s.conf.dnsNames)
+ slices.Sort(s.conf.dnsNames)
} else {
s.conf.dnsNames = append(s.conf.dnsNames, cert.Subject.CommonName)
log.Debug("dnsforward: using certificate's CN as DNS name: %s", cert.Subject.CommonName)
@@ -526,16 +601,6 @@ func (s *Server) prepareTLS(proxyConfig *proxy.Config) (err error) {
return nil
}
-// isInSorted returns true if s is in the sorted slice strs.
-func isInSorted(strs []string, s string) (ok bool) {
- i := sort.SearchStrings(strs, s)
- if i == len(strs) || strs[i] != s {
- return false
- }
-
- return true
-}
-
// isWildcard returns true if host is a wildcard hostname.
func isWildcard(host string) (ok bool) {
return len(host) >= 2 && host[0] == '*' && host[1] == '.'
@@ -550,11 +615,12 @@ func matchesDomainWildcard(host, pat string) (ok bool) {
// anyNameMatches returns true if sni, the client's SNI value, matches any of
// the DNS names and patterns from certificate. dnsNames must be sorted.
func anyNameMatches(dnsNames []string, sni string) (ok bool) {
- if netutil.ValidateDomainName(sni) != nil {
+ // Check sni is either a valid hostname or a valid IP address.
+ if netutil.ValidateHostname(sni) != nil && net.ParseIP(sni) == nil {
return false
}
- if isInSorted(dnsNames, sni) {
+ if _, ok = slices.BinarySearch(dnsNames, sni); ok {
return true
}
diff --git a/internal/dnsforward/config_test.go b/internal/dnsforward/config_test.go
index f98e2c22..a13a567b 100644
--- a/internal/dnsforward/config_test.go
+++ b/internal/dnsforward/config_test.go
@@ -1,15 +1,15 @@
package dnsforward
import (
- "sort"
"testing"
"github.com/stretchr/testify/assert"
+ "golang.org/x/exp/slices"
)
func TestAnyNameMatches(t *testing.T) {
dnsNames := []string{"host1", "*.host2", "1.2.3.4"}
- sort.Strings(dnsNames)
+ slices.Sort(dnsNames)
testCases := []struct {
name string
@@ -31,6 +31,10 @@ func TestAnyNameMatches(t *testing.T) {
name: "match",
dnsName: "1.2.3.4",
want: true,
+ }, {
+ name: "mismatch_bad_ip",
+ dnsName: "1.2.3.256",
+ want: false,
}, {
name: "mismatch",
dnsName: "host2",
diff --git a/internal/dnsforward/dns.go b/internal/dnsforward/dns.go
index 8d924f3b..9289eb45 100644
--- a/internal/dnsforward/dns.go
+++ b/internal/dnsforward/dns.go
@@ -230,7 +230,7 @@ func (s *Server) onDHCPLeaseChanged(flags int) {
for _, l := range ll {
// TODO(a.garipov): Remove this after we're finished with the client
// hostname validations in the DHCP server code.
- err := netutil.ValidateDomainName(l.Hostname)
+ err := netutil.ValidateHostname(l.Hostname)
if err != nil {
log.Debug("dnsforward: skipping invalid hostname %q from dhcp: %s", l.Hostname, err)
@@ -468,7 +468,7 @@ func (s *Server) processRestrictLocal(dctx *dnsContext) (rc resultCode) {
return resultCodeError
}
- log.Debug("dnsforward: request is for a service domain")
+ log.Debug("dnsforward: request is not for arpa domain")
return resultCodeSuccess
}
diff --git a/internal/dnsforward/dns64_test.go b/internal/dnsforward/dns64_test.go
index f3679b51..85a07fc1 100644
--- a/internal/dnsforward/dns64_test.go
+++ b/internal/dnsforward/dns64_test.go
@@ -273,18 +273,25 @@ func TestServer_HandleDNSRequest_dns64(t *testing.T) {
return resp, nil
})
- s := createTestServer(t, &filtering.Config{}, ServerConfig{
- UDPListenAddrs: []*net.UDPAddr{{}},
- TCPListenAddrs: []*net.TCPAddr{{}},
- UseDNS64: true,
- }, localUps)
-
client := &dns.Client{
Net: "tcp",
Timeout: 1 * time.Second,
}
for _, tc := range testCases {
+ // TODO(e.burkov): It seems [proxy.Proxy] isn't intended to be reused
+ // right after stop, due to a data race in [proxy.Proxy.Init] method
+ // when setting an OOB size. As a temporary workaround, recreate the
+ // whole server for each test case.
+ s := createTestServer(t, &filtering.Config{}, ServerConfig{
+ UDPListenAddrs: []*net.UDPAddr{{}},
+ TCPListenAddrs: []*net.TCPAddr{{}},
+ UseDNS64: true,
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
+ }, localUps)
+
t.Run(tc.name, func(t *testing.T) {
s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{newUps(tc.upsAns)}
startDeferStop(t, s)
diff --git a/internal/dnsforward/dns_test.go b/internal/dnsforward/dns_test.go
index d07c30dc..02f1eb61 100644
--- a/internal/dnsforward/dns_test.go
+++ b/internal/dnsforward/dns_test.go
@@ -467,6 +467,11 @@ func TestServer_ProcessRestrictLocal(t *testing.T) {
s := createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ // TODO(s.chzhen): Add tests where EDNSClientSubnet.Enabled is true.
+ // Improve FilteringConfig declaration for tests.
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
}, ups)
s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{ups}
startDeferStop(t, s)
@@ -539,6 +544,9 @@ func TestServer_ProcessLocalPTR_usingResolvers(t *testing.T) {
ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
},
aghtest.NewUpstreamMock(func(req *dns.Msg) (resp *dns.Msg, err error) {
return aghalg.Coalesce(
diff --git a/internal/dnsforward/dnsforward_test.go b/internal/dnsforward/dnsforward_test.go
index a95b03df..d0a0ada7 100644
--- a/internal/dnsforward/dnsforward_test.go
+++ b/internal/dnsforward/dnsforward_test.go
@@ -11,6 +11,7 @@ import (
"fmt"
"math/big"
"net"
+ "net/netip"
"sync"
"sync/atomic"
"testing"
@@ -155,6 +156,9 @@ func createTestTLS(t *testing.T, tlsConf TLSConfig) (s *Server, certPem []byte)
s = createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
}, nil)
tlsConf.CertificateChainData, tlsConf.PrivateKeyData = certPem, keyPem
@@ -266,6 +270,9 @@ func TestServer(t *testing.T) {
s := createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
}, nil)
s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{newGoogleUpstream()}
startDeferStop(t, s)
@@ -304,7 +311,8 @@ func TestServer_timeout(t *testing.T) {
srvConf := &ServerConfig{
UpstreamTimeout: timeout,
FilteringConfig: FilteringConfig{
- BlockingMode: BlockingModeDefault,
+ BlockingMode: BlockingModeDefault,
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
},
}
@@ -322,6 +330,9 @@ func TestServer_timeout(t *testing.T) {
require.NoError(t, err)
s.conf.FilteringConfig.BlockingMode = BlockingModeDefault
+ s.conf.FilteringConfig.EDNSClientSubnet = &EDNSClientSubnet{
+ Enabled: false,
+ }
err = s.Prepare(&s.conf)
require.NoError(t, err)
@@ -333,6 +344,9 @@ func TestServerWithProtectionDisabled(t *testing.T) {
s := createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
}, nil)
s.conf.UpstreamConfig.Upstreams = []upstream.Upstream{newGoogleUpstream()}
startDeferStop(t, s)
@@ -437,6 +451,9 @@ func TestSafeSearch(t *testing.T) {
TCPListenAddrs: []*net.TCPAddr{{}},
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, filterConf, forwardConf, nil)
@@ -492,6 +509,11 @@ func TestInvalidRequest(t *testing.T) {
s := createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
+ },
}, nil)
startDeferStop(t, s)
@@ -518,6 +540,9 @@ func TestBlockedRequest(t *testing.T) {
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, &filtering.Config{}, forwardConf, nil)
@@ -543,6 +568,9 @@ func TestServerCustomClientUpstream(t *testing.T) {
TCPListenAddrs: []*net.TCPAddr{{}},
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, &filtering.Config{}, forwardConf, nil)
@@ -591,6 +619,11 @@ func TestBlockCNAMEProtectionEnabled(t *testing.T) {
s := createTestServer(t, &filtering.Config{}, ServerConfig{
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
+ },
}, nil)
testUpstm := &aghtest.Upstream{
CName: testCNAMEs,
@@ -621,6 +654,9 @@ func TestBlockCNAME(t *testing.T) {
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, &filtering.Config{}, forwardConf, nil)
@@ -690,6 +726,9 @@ func TestClientRulesForCNAMEMatching(t *testing.T) {
FilterHandler: func(_ net.IP, _ string, settings *filtering.Settings) {
settings.FilteringEnabled = false
},
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, &filtering.Config{}, forwardConf, nil)
@@ -731,6 +770,9 @@ func TestNullBlockedRequest(t *testing.T) {
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
BlockingMode: BlockingModeNullIP,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, &filtering.Config{}, forwardConf, nil)
@@ -783,6 +825,9 @@ func TestBlockedCustomIP(t *testing.T) {
BlockingMode: BlockingModeCustomIP,
BlockingIPv4: nil,
UpstreamDNS: []string{"8.8.8.8:53", "8.8.4.4:53"},
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
@@ -831,6 +876,9 @@ func TestBlockedByHosts(t *testing.T) {
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
@@ -864,6 +912,9 @@ func TestBlockedBySafeBrowsing(t *testing.T) {
FilteringConfig: FilteringConfig{
SafeBrowsingBlockHost: ans4.String(),
ProtectionEnabled: true,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
s := createTestServer(t, filterConf, forwardConf, nil)
@@ -918,6 +969,9 @@ func TestRewrite(t *testing.T) {
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
UpstreamDNS: []string{"8.8.8.8:53"},
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}))
@@ -1009,7 +1063,7 @@ var testDHCP = &dhcpd.MockInterface{
}}
},
OnSetOnLeaseChanged: func(olct dhcpd.OnLeaseChangedT) {},
- OnFindMACbyIP: func(ip net.IP) (mac net.HardwareAddr) { panic("not implemented") },
+ OnFindMACbyIP: func(ip netip.Addr) (mac net.HardwareAddr) { panic("not implemented") },
OnWriteDiskConfig: func(c *dhcpd.ServerConfig) { panic("not implemented") },
}
@@ -1032,6 +1086,7 @@ func TestPTRResponseFromDHCPLeases(t *testing.T) {
s.conf.UpstreamDNS = []string{"127.0.0.1:53"}
s.conf.FilteringConfig.ProtectionEnabled = true
s.conf.FilteringConfig.BlockingMode = BlockingModeDefault
+ s.conf.FilteringConfig.EDNSClientSubnet = &EDNSClientSubnet{Enabled: false}
err = s.Prepare(&s.conf)
require.NoError(t, err)
@@ -1107,6 +1162,7 @@ func TestPTRResponseFromHosts(t *testing.T) {
s.conf.TCPListenAddrs = []*net.TCPAddr{{}}
s.conf.UpstreamDNS = []string{"127.0.0.1:53"}
s.conf.FilteringConfig.BlockingMode = BlockingModeDefault
+ s.conf.FilteringConfig.EDNSClientSubnet = &EDNSClientSubnet{Enabled: false}
err = s.Prepare(&s.conf)
require.NoError(t, err)
@@ -1171,7 +1227,8 @@ func TestNewServer(t *testing.T) {
LocalDomain: "!!!",
},
wantErrMsg: `local domain: bad domain name "!!!": ` +
- `bad domain name label "!!!": bad domain name label rune '!'`,
+ `bad top-level domain name label "!!!": ` +
+ `bad top-level domain name label rune '!'`,
}}
for _, tc := range testCases {
diff --git a/internal/dnsforward/filter.go b/internal/dnsforward/filter.go
index f36fd52a..6ee4e0f3 100644
--- a/internal/dnsforward/filter.go
+++ b/internal/dnsforward/filter.go
@@ -31,9 +31,11 @@ func (s *Server) beforeRequestHandler(
}
if len(pctx.Req.Question) == 1 {
- host := strings.TrimSuffix(pctx.Req.Question[0].Name, ".")
- if s.access.isBlockedHost(host) {
- log.Debug("host %s is in access blocklist", host)
+ q := pctx.Req.Question[0]
+ qt := q.Qtype
+ host := strings.TrimSuffix(q.Name, ".")
+ if s.access.isBlockedHost(host, qt) {
+ log.Debug("request %s %s is in access blocklist", dns.Type(qt), host)
return s.preBlockedResponse(pctx)
}
diff --git a/internal/dnsforward/filter_test.go b/internal/dnsforward/filter_test.go
index 7fa0985a..3fbe58cc 100644
--- a/internal/dnsforward/filter_test.go
+++ b/internal/dnsforward/filter_test.go
@@ -29,6 +29,9 @@ func TestHandleDNSRequest_filterDNSResponse(t *testing.T) {
FilteringConfig: FilteringConfig{
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
+ EDNSClientSubnet: &EDNSClientSubnet{
+ Enabled: false,
+ },
},
}
filters := []filtering.Filter{{
diff --git a/internal/dnsforward/http.go b/internal/dnsforward/http.go
index 18c4e82e..a876a411 100644
--- a/internal/dnsforward/http.go
+++ b/internal/dnsforward/http.go
@@ -57,7 +57,7 @@ func (s *Server) getDNSConfig() (c *jsonDNSConfig) {
blockingIPv4 := s.conf.BlockingIPv4
blockingIPv6 := s.conf.BlockingIPv6
ratelimit := s.conf.Ratelimit
- enableEDNSClientSubnet := s.conf.EnableEDNSClientSubnet
+ enableEDNSClientSubnet := s.conf.EDNSClientSubnet.Enabled
enableDNSSEC := s.conf.EnableDNSSEC
aaaaDisabled := s.conf.AAAADisabled
cacheSize := s.conf.CacheSize
@@ -280,7 +280,7 @@ func (s *Server) setConfigRestartable(dc *jsonDNSConfig) (shouldRestart bool) {
setIfNotNil(&s.conf.LocalPTRResolvers, dc.LocalPTRUpstreams),
setIfNotNil(&s.conf.UpstreamDNSFileName, dc.UpstreamsFile),
setIfNotNil(&s.conf.BootstrapDNS, dc.Bootstraps),
- setIfNotNil(&s.conf.EnableEDNSClientSubnet, dc.EDNSCSEnabled),
+ setIfNotNil(&s.conf.EDNSClientSubnet.Enabled, dc.EDNSCSEnabled),
setIfNotNil(&s.conf.CacheSize, dc.CacheSize),
setIfNotNil(&s.conf.CacheMinTTL, dc.CacheMinTTL),
setIfNotNil(&s.conf.CacheMaxTTL, dc.CacheMaxTTL),
diff --git a/internal/dnsforward/http_test.go b/internal/dnsforward/http_test.go
index 5e0b8018..9d48151d 100644
--- a/internal/dnsforward/http_test.go
+++ b/internal/dnsforward/http_test.go
@@ -69,6 +69,7 @@ func TestDNSForwardHTTP_handleGetConfig(t *testing.T) {
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
UpstreamDNS: []string{"8.8.8.8:53", "8.8.4.4:53"},
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
},
ConfigModified: func() {},
}
@@ -144,6 +145,7 @@ func TestDNSForwardHTTP_handleSetConfig(t *testing.T) {
ProtectionEnabled: true,
BlockingMode: BlockingModeDefault,
UpstreamDNS: []string{"8.8.8.8:53", "8.8.4.4:53"},
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
},
ConfigModified: func() {},
}
@@ -227,7 +229,10 @@ func TestDNSForwardHTTP_handleSetConfig(t *testing.T) {
require.True(t, ok)
t.Run(tc.name, func(t *testing.T) {
- t.Cleanup(func() { s.conf = defaultConf })
+ t.Cleanup(func() {
+ s.conf = defaultConf
+ s.conf.FilteringConfig.EDNSClientSubnet.Enabled = false
+ })
rBody := io.NopCloser(bytes.NewReader(caseData.Req))
var r *http.Request
@@ -337,7 +342,8 @@ func TestValidateUpstreams(t *testing.T) {
}, {
name: "bad_domain",
wantErr: `bad upstream for domain "[/!/]8.8.8.8": domain at index 0: ` +
- `bad domain name "!": bad domain name label "!": bad domain name label rune '!'`,
+ `bad domain name "!": bad top-level domain name label "!": ` +
+ `bad top-level domain name label rune '!'`,
set: []string{"[/!/]8.8.8.8"},
}}
@@ -442,6 +448,9 @@ func TestServer_handleTestUpstreaDNS(t *testing.T) {
UDPListenAddrs: []*net.UDPAddr{{}},
TCPListenAddrs: []*net.TCPAddr{{}},
UpstreamTimeout: upsTimeout,
+ FilteringConfig: FilteringConfig{
+ EDNSClientSubnet: &EDNSClientSubnet{Enabled: false},
+ },
}, nil)
startDeferStop(t, srv)
diff --git a/internal/filtering/blocked_test.go b/internal/filtering/blocked_test.go
deleted file mode 100644
index 575f75cc..00000000
--- a/internal/filtering/blocked_test.go
+++ /dev/null
@@ -1,38 +0,0 @@
-//go:build ignore
-// +build ignore
-
-package filtering
-
-import (
- "fmt"
- "sort"
- "testing"
-)
-
-// This is a simple tool that takes a list of services and prints them to the output.
-// It is supposed to be used to update:
-// client/src/helpers/constants.js
-// client/src/components/ui/Icons.js
-//
-// Usage:
-// 1. go run ./internal/filtering/blocked_test.go
-// 2. Use the output to replace `SERVICES` array in "client/src/helpers/constants.js".
-// 3. You'll need to enter services names manually.
-// 4. Don't forget to add missing icons to "client/src/components/ui/Icons.js".
-//
-// TODO(ameshkov): Rework generator: have a JSON file with all the metadata we need
-// then use this JSON file to generate JS and Go code
-func TestGenServicesArray(t *testing.T) {
- services := make([]svc, len(serviceRulesArray))
- copy(services, serviceRulesArray)
-
- sort.Slice(services, func(i, j int) bool {
- return services[i].name < services[j].name
- })
-
- fmt.Println("export const SERVICES = [")
- for _, s := range services {
- fmt.Printf(" {\n id: '%s',\n name: '%s',\n },\n", s.name, s.name)
- }
- fmt.Println("];")
-}
diff --git a/internal/filtering/filtering.go b/internal/filtering/filtering.go
index 977691f9..c7c1d8ff 100644
--- a/internal/filtering/filtering.go
+++ b/internal/filtering/filtering.go
@@ -420,11 +420,11 @@ type ResultRule struct {
// Result contains the result of a request check.
//
-// All fields transitively have omitempty tags so that the query log
-// doesn't become too large.
+// All fields transitively have omitempty tags so that the query log doesn't
+// become too large.
//
-// TODO(a.garipov): Clarify relationships between fields. Perhaps
-// replace with a sum type or an interface?
+// TODO(a.garipov): Clarify relationships between fields. Perhaps replace with
+// a sum type or an interface?
type Result struct {
// DNSRewriteResult is the $dnsrewrite filter rule result.
DNSRewriteResult *DNSRewriteResult `json:",omitempty"`
@@ -813,17 +813,18 @@ func (d *DNSFilter) matchHostProcessDNSResult(
return res
}
- if dnsres.HostRulesV4 != nil || dnsres.HostRulesV6 != nil {
- // Question type doesn't match the host rules. Return the first matched
- // host rule, but without an IP address.
- var matchedRules []rules.Rule
- if dnsres.HostRulesV4 != nil {
- matchedRules = []rules.Rule{dnsres.HostRulesV4[0]}
- } else if dnsres.HostRulesV6 != nil {
- matchedRules = []rules.Rule{dnsres.HostRulesV6[0]}
- }
+ return hostResultForOtherQType(dnsres)
+}
- return makeResult(matchedRules, FilteredBlockList)
+// hostResultForOtherQType returns a result based on the host rules in dnsres,
+// if any. dnsres.HostRulesV4 take precedence over dnsres.HostRulesV6.
+func hostResultForOtherQType(dnsres *urlfilter.DNSResult) (res Result) {
+ if len(dnsres.HostRulesV4) != 0 {
+ return makeResult([]rules.Rule{dnsres.HostRulesV4[0]}, FilteredBlockList)
+ }
+
+ if len(dnsres.HostRulesV6) != 0 {
+ return makeResult([]rules.Rule{dnsres.HostRulesV6[0]}, FilteredBlockList)
}
return Result{}
@@ -840,7 +841,7 @@ func (d *DNSFilter) matchHost(
return Result{}, nil
}
- ureq := &urlfilter.DNSRequest{
+ ufReq := &urlfilter.DNSRequest{
Hostname: host,
SortedClientTags: setts.ClientTags,
// TODO(e.burkov): Wait for urlfilter update to pass net.IP.
@@ -857,7 +858,7 @@ func (d *DNSFilter) matchHost(
defer d.engineLock.RUnlock()
if setts.ProtectionEnabled && d.filteringEngineAllow != nil {
- dnsres, ok := d.filteringEngineAllow.MatchRequest(ureq)
+ dnsres, ok := d.filteringEngineAllow.MatchRequest(ufReq)
if ok {
return d.matchHostProcessAllowList(host, dnsres)
}
@@ -867,17 +868,13 @@ func (d *DNSFilter) matchHost(
return Result{}, nil
}
- dnsres, ok := d.filteringEngine.MatchRequest(ureq)
+ dnsres, matchedEngine := d.filteringEngine.MatchRequest(ufReq)
+
// Check DNS rewrites first, because the API there is a bit awkward.
- if dnsr := dnsres.DNSRewrites(); len(dnsr) > 0 {
- res = d.processDNSRewrites(dnsr)
- if res.Reason == RewrittenRule && res.CanonName == host {
- // A rewrite of a host to itself. Go on and try matching other
- // things.
- } else {
- return res, nil
- }
- } else if !ok {
+ dnsRWRes := d.processDNSResultRewrites(dnsres, host)
+ if dnsRWRes.Reason != NotFilteredNotFound {
+ return dnsRWRes, nil
+ } else if !matchedEngine {
return Result{}, nil
}
@@ -899,6 +896,26 @@ func (d *DNSFilter) matchHost(
return res, nil
}
+// processDNSResultRewrites returns an empty Result if there are no dnsrewrite
+// rules in dnsres. Otherwise, it returns the processed Result.
+func (d *DNSFilter) processDNSResultRewrites(
+ dnsres *urlfilter.DNSResult,
+ host string,
+) (dnsRWRes Result) {
+ dnsr := dnsres.DNSRewrites()
+ if len(dnsr) == 0 {
+ return Result{}
+ }
+
+ res := d.processDNSRewrites(dnsr)
+ if res.Reason == RewrittenRule && res.CanonName == host {
+ // A rewrite of a host to itself. Go on and try matching other things.
+ return Result{}
+ }
+
+ return res
+}
+
// makeResult returns a properly constructed Result.
func makeResult(matchedRules []rules.Rule, reason Reason) (res Result) {
resRules := make([]*ResultRule, len(matchedRules))
diff --git a/internal/filtering/rewrites.go b/internal/filtering/rewrites.go
index 873272a1..3e10da55 100644
--- a/internal/filtering/rewrites.go
+++ b/internal/filtering/rewrites.go
@@ -1,11 +1,8 @@
-// DNS Rewrites
-
package filtering
import (
"fmt"
"net"
- "sort"
"strings"
"github.com/AdguardTeam/golibs/errors"
@@ -14,6 +11,8 @@ import (
"golang.org/x/exp/slices"
)
+// Legacy DNS rewrites
+
// LegacyRewrite is a single legacy DNS rewrite record.
//
// Instances of *LegacyRewrite must never be nil.
@@ -123,38 +122,24 @@ func matchDomainWildcard(host, wildcard string) (ok bool) {
return isWildcard(wildcard) && strings.HasSuffix(host, wildcard[1:])
}
-// rewritesSorted is a slice of legacy rewrites for sorting.
+// legacyRewriteSortsBefore sorts rewirtes according to the following priority:
//
-// The sorting priority:
-//
-// 1. A and AAAA > CNAME
-// 2. wildcard > exact
-// 3. lower level wildcard > higher level wildcard
-//
-// TODO(a.garipov): Replace with slices.Sort.
-type rewritesSorted []*LegacyRewrite
-
-// Len implements the sort.Interface interface for rewritesSorted.
-func (a rewritesSorted) Len() (l int) { return len(a) }
-
-// Swap implements the sort.Interface interface for rewritesSorted.
-func (a rewritesSorted) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
-
-// Less implements the sort.Interface interface for rewritesSorted.
-func (a rewritesSorted) Less(i, j int) (less bool) {
- ith, jth := a[i], a[j]
- if ith.Type == dns.TypeCNAME && jth.Type != dns.TypeCNAME {
+// 1. A and AAAA > CNAME;
+// 2. wildcard > exact;
+// 3. lower level wildcard > higher level wildcard;
+func legacyRewriteSortsBefore(a, b *LegacyRewrite) (sortsBefore bool) {
+ if a.Type == dns.TypeCNAME && b.Type != dns.TypeCNAME {
return true
- } else if ith.Type != dns.TypeCNAME && jth.Type == dns.TypeCNAME {
+ } else if a.Type != dns.TypeCNAME && b.Type == dns.TypeCNAME {
return false
}
- if iw, jw := isWildcard(ith.Domain), isWildcard(jth.Domain); iw != jw {
- return jw
+ if aIsWld, bIsWld := isWildcard(a.Domain), isWildcard(b.Domain); aIsWld != bIsWld {
+ return bIsWld
}
- // Both are either wildcards or not.
- return len(ith.Domain) > len(jth.Domain)
+ // Both are either wildcards or both aren't.
+ return len(a.Domain) > len(b.Domain)
}
// prepareRewrites normalizes and validates all legacy DNS rewrites.
@@ -196,7 +181,7 @@ func findRewrites(
return nil, matched
}
- sort.Sort(rewritesSorted(rewrites))
+ slices.SortFunc(rewrites, legacyRewriteSortsBefore)
for i, r := range rewrites {
if isWildcard(r.Domain) {
diff --git a/internal/filtering/safebrowsing.go b/internal/filtering/safebrowsing.go
index 2e648346..3fb814d7 100644
--- a/internal/filtering/safebrowsing.go
+++ b/internal/filtering/safebrowsing.go
@@ -8,7 +8,6 @@ import (
"fmt"
"net"
"net/http"
- "sort"
"strings"
"sync"
"time"
@@ -19,6 +18,7 @@ import (
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/stringutil"
"github.com/miekg/dns"
+ "golang.org/x/exp/slices"
"golang.org/x/net/publicsuffix"
)
@@ -241,8 +241,8 @@ func (c *sbCtx) processTXT(resp *dns.Msg) (bool, [][]byte) {
}
func (c *sbCtx) storeCache(hashes [][]byte) {
- sort.Slice(hashes, func(a, b int) bool {
- return bytes.Compare(hashes[a], hashes[b]) == -1
+ slices.SortFunc(hashes, func(a, b []byte) (sortsBefore bool) {
+ return bytes.Compare(a, b) == -1
})
var curData []byte
diff --git a/internal/filtering/safesearch.go b/internal/filtering/safesearch.go
index f7661dd6..b3eea28e 100644
--- a/internal/filtering/safesearch.go
+++ b/internal/filtering/safesearch.go
@@ -13,8 +13,37 @@ import (
"github.com/AdguardTeam/AdGuardHome/internal/aghhttp"
"github.com/AdguardTeam/golibs/cache"
"github.com/AdguardTeam/golibs/log"
+ "github.com/AdguardTeam/urlfilter/rules"
)
+// SafeSearch interface describes a service for search engines hosts rewrites.
+type SafeSearch interface {
+ // SearchHost returns a replacement address for the search engine host.
+ SearchHost(host string, qtype uint16) (res *rules.DNSRewrite)
+
+ // CheckHost checks host with safe search engine.
+ CheckHost(host string, qtype uint16) (res Result, err error)
+}
+
+// SafeSearchConfig is a struct with safe search related settings.
+type SafeSearchConfig struct {
+ // CustomResolver is the resolver used by safe search.
+ CustomResolver Resolver `yaml:"-"`
+
+ // Enabled indicates if safe search is enabled entirely.
+ Enabled bool `yaml:"enabled" json:"enabled"`
+
+ // Services flags. Each flag indicates if the corresponding service is
+ // enabled or disabled.
+
+ Bing bool `yaml:"bing" json:"bing"`
+ DuckDuckGo bool `yaml:"duckduckgo" json:"duckduckgo"`
+ Google bool `yaml:"google" json:"google"`
+ Pixabay bool `yaml:"pixabay" json:"pixabay"`
+ Yandex bool `yaml:"yandex" json:"yandex"`
+ YouTube bool `yaml:"youtube" json:"youtube"`
+}
+
/*
expire byte[4]
res Result
diff --git a/internal/filtering/safesearch/rules.go b/internal/filtering/safesearch/rules.go
new file mode 100644
index 00000000..75e512e8
--- /dev/null
+++ b/internal/filtering/safesearch/rules.go
@@ -0,0 +1,34 @@
+package safesearch
+
+import _ "embed"
+
+//go:embed rules/bing.txt
+var bing string
+
+//go:embed rules/google.txt
+var google string
+
+//go:embed rules/pixabay.txt
+var pixabay string
+
+//go:embed rules/duckduckgo.txt
+var duckduckgo string
+
+//go:embed rules/yandex.txt
+var yandex string
+
+//go:embed rules/youtube.txt
+var youtube string
+
+// safeSearchRules is a map with rules texts grouped by search providers.
+// Source rules downloaded from:
+// https://adguardteam.github.io/HostlistsRegistry/assets/engines_safe_search.txt,
+// https://adguardteam.github.io/HostlistsRegistry/assets/youtube_safe_search.txt.
+var safeSearchRules = map[Service]string{
+ Bing: bing,
+ DuckDuckGo: duckduckgo,
+ Google: google,
+ Pixabay: pixabay,
+ Yandex: yandex,
+ YouTube: youtube,
+}
diff --git a/internal/filtering/safesearch/rules/bing.txt b/internal/filtering/safesearch/rules/bing.txt
new file mode 100644
index 00000000..8c61b63c
--- /dev/null
+++ b/internal/filtering/safesearch/rules/bing.txt
@@ -0,0 +1 @@
+|www.bing.com^$dnsrewrite=NOERROR;CNAME;strict.bing.com
\ No newline at end of file
diff --git a/internal/filtering/safesearch/rules/duckduckgo.txt b/internal/filtering/safesearch/rules/duckduckgo.txt
new file mode 100644
index 00000000..084f1be0
--- /dev/null
+++ b/internal/filtering/safesearch/rules/duckduckgo.txt
@@ -0,0 +1,3 @@
+|duckduckgo.com^$dnsrewrite=NOERROR;CNAME;safe.duckduckgo.com
+|start.duckduckgo.com^$dnsrewrite=NOERROR;CNAME;safe.duckduckgo.com
+|www.duckduckgo.com^$dnsrewrite=NOERROR;CNAME;safe.duckduckgo.com
\ No newline at end of file
diff --git a/internal/filtering/safesearch/rules/google.txt b/internal/filtering/safesearch/rules/google.txt
new file mode 100644
index 00000000..62f13067
--- /dev/null
+++ b/internal/filtering/safesearch/rules/google.txt
@@ -0,0 +1,191 @@
+|www.google.ad^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ae^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.al^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.am^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.as^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.at^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.az^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ba^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.be^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bf^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bi^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bj^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bs^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.bt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.by^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ca^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cat^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cd^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cf^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ch^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ci^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ao^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.bw^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ck^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.cr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.id^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.il^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.in^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.jp^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ke^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.kr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ls^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ma^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.mz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.nz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.th^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.tz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ug^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.uk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.uz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.ve^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.co.vi^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.af^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ag^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ai^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ar^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.au^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.bd^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.bh^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.bn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.bo^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.br^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.bz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.co^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.cu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.cy^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.do^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ec^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.eg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.et^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.fj^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.gh^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.gi^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.gt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.hk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.jm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.kh^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.kw^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.lb^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ly^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.mm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.mt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.mx^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.my^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.na^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.nf^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ng^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ni^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.np^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.om^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.pa^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.pe^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.pg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ph^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.pk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.pr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.py^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.qa^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.sa^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.sb^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.sg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.sl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.sv^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.tj^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.tr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.tw^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.ua^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.uy^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.vc^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com.vn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.com^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cv^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.cz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.de^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.dj^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.dk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.dm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.dz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ee^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.es^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.fi^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.fm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.fr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ga^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ge^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gp^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.gy^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.hn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.hr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ht^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.hu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ie^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.im^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.iq^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.is^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.it^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.je^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.jo^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.kg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ki^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.kz^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.la^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.li^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.lk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.lt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.lu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.lv^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.md^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.me^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ml^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ms^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mv^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.mw^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ne^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.nl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.no^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.nr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.nu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.pl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.pn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ps^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.pt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ro^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.rs^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ru^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.rw^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sc^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.se^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sh^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.si^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.so^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.sr^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.st^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.td^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tk^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tl^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tm^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tn^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.to^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.tt^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.vg^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.vu^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
+|www.google.ws^$dnsrewrite=NOERROR;CNAME;forcesafesearch.google.com
\ No newline at end of file
diff --git a/internal/filtering/safesearch/rules/pixabay.txt b/internal/filtering/safesearch/rules/pixabay.txt
new file mode 100644
index 00000000..0ab07746
--- /dev/null
+++ b/internal/filtering/safesearch/rules/pixabay.txt
@@ -0,0 +1 @@
+|pixabay.com^$dnsrewrite=NOERROR;CNAME;safesearch.pixabay.com
\ No newline at end of file
diff --git a/internal/filtering/safesearch/rules/yandex.txt b/internal/filtering/safesearch/rules/yandex.txt
new file mode 100644
index 00000000..b6f4afb7
--- /dev/null
+++ b/internal/filtering/safesearch/rules/yandex.txt
@@ -0,0 +1,52 @@
+|www.xn--d1acpjx3f.xn--p1ai^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.ya.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.az^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.by^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.co.il^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.com.am^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.com.ge^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.com.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.com.tr^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.com^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.de^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.ee^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.eu^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.fi^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.fr^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.kz^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.lt^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.lv^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.md^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.net^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.org^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.pl^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.tj^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.tm^$dnsrewrite=NOERROR;A;213.180.193.56
+|www.yandex.uz^$dnsrewrite=NOERROR;A;213.180.193.56
+|xn--d1acpjx3f.xn--p1ai^$dnsrewrite=NOERROR;A;213.180.193.56
+|ya.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.az^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.by^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.co.il^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.com.am^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.com.ge^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.com.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.com.tr^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.com^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.de^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.ee^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.eu^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.fi^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.fr^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.kz^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.lt^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.lv^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.md^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.net^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.org^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.pl^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.ru^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.tj^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.tm^$dnsrewrite=NOERROR;A;213.180.193.56
+|yandex.uz^$dnsrewrite=NOERROR;A;213.180.193.56
\ No newline at end of file
diff --git a/internal/filtering/safesearch/rules/youtube.txt b/internal/filtering/safesearch/rules/youtube.txt
new file mode 100644
index 00000000..70e3ae46
--- /dev/null
+++ b/internal/filtering/safesearch/rules/youtube.txt
@@ -0,0 +1,5 @@
+|www.youtube.com^$dnsrewrite=NOERROR;CNAME;restrictmoderate.youtube.com
+|m.youtube.com^$dnsrewrite=NOERROR;CNAME;restrictmoderate.youtube.com
+|youtubei.googleapis.com^$dnsrewrite=NOERROR;CNAME;restrictmoderate.youtube.com
+|youtube.googleapis.com^$dnsrewrite=NOERROR;CNAME;restrictmoderate.youtube.com
+|www.youtube-nocookie.com^$dnsrewrite=NOERROR;CNAME;restrictmoderate.youtube.com
\ No newline at end of file
diff --git a/internal/filtering/safesearch/safesearch.go b/internal/filtering/safesearch/safesearch.go
new file mode 100644
index 00000000..e944e217
--- /dev/null
+++ b/internal/filtering/safesearch/safesearch.go
@@ -0,0 +1,269 @@
+// Package safesearch implements safesearch host matching.
+package safesearch
+
+import (
+ "bytes"
+ "context"
+ "encoding/binary"
+ "encoding/gob"
+ "fmt"
+ "net"
+ "strings"
+ "time"
+
+ "github.com/AdguardTeam/AdGuardHome/internal/filtering"
+ "github.com/AdguardTeam/golibs/cache"
+ "github.com/AdguardTeam/golibs/log"
+ "github.com/AdguardTeam/urlfilter"
+ "github.com/AdguardTeam/urlfilter/filterlist"
+ "github.com/AdguardTeam/urlfilter/rules"
+ "github.com/miekg/dns"
+)
+
+// Service is a enum with service names used as search providers.
+type Service string
+
+// Service enum members.
+const (
+ Bing Service = "bing"
+ DuckDuckGo Service = "duckduckgo"
+ Google Service = "google"
+ Pixabay Service = "pixabay"
+ Yandex Service = "yandex"
+ YouTube Service = "youtube"
+)
+
+// isServiceProtected returns true if the service safe search is active.
+func isServiceProtected(s filtering.SafeSearchConfig, service Service) (ok bool) {
+ switch service {
+ case Bing:
+ return s.Bing
+ case DuckDuckGo:
+ return s.DuckDuckGo
+ case Google:
+ return s.Google
+ case Pixabay:
+ return s.Pixabay
+ case Yandex:
+ return s.Yandex
+ case YouTube:
+ return s.YouTube
+ default:
+ panic(fmt.Errorf("safesearch: invalid sources: not found service %q", service))
+ }
+}
+
+// DefaultSafeSearch is the default safesearch struct.
+type DefaultSafeSearch struct {
+ engine *urlfilter.DNSEngine
+ safeSearchCache cache.Cache
+ resolver filtering.Resolver
+ cacheTime time.Duration
+}
+
+// NewDefaultSafeSearch returns new safesearch struct. CacheTime is an element
+// TTL (in minutes).
+func NewDefaultSafeSearch(
+ conf filtering.SafeSearchConfig,
+ cacheSize uint,
+ cacheTime time.Duration,
+) (ss *DefaultSafeSearch, err error) {
+ engine, err := newEngine(filtering.SafeSearchListID, conf)
+ if err != nil {
+ return nil, err
+ }
+
+ var resolver filtering.Resolver = net.DefaultResolver
+ if conf.CustomResolver != nil {
+ resolver = conf.CustomResolver
+ }
+
+ return &DefaultSafeSearch{
+ engine: engine,
+ safeSearchCache: cache.New(cache.Config{
+ EnableLRU: true,
+ MaxSize: cacheSize,
+ }),
+ cacheTime: cacheTime,
+ resolver: resolver,
+ }, nil
+}
+
+// newEngine creates new engine for provided safe search configuration.
+func newEngine(listID int, conf filtering.SafeSearchConfig) (engine *urlfilter.DNSEngine, err error) {
+ var sb strings.Builder
+ for service, serviceRules := range safeSearchRules {
+ if isServiceProtected(conf, service) {
+ sb.WriteString(serviceRules)
+ }
+ }
+
+ strList := &filterlist.StringRuleList{
+ ID: listID,
+ RulesText: sb.String(),
+ IgnoreCosmetic: true,
+ }
+
+ rs, err := filterlist.NewRuleStorage([]filterlist.RuleList{strList})
+ if err != nil {
+ return nil, fmt.Errorf("creating rule storage: %w", err)
+ }
+
+ engine = urlfilter.NewDNSEngine(rs)
+ log.Info("safesearch: filter %d: reset %d rules", listID, engine.RulesCount)
+
+ return engine, nil
+}
+
+// type check
+var _ filtering.SafeSearch = (*DefaultSafeSearch)(nil)
+
+// SearchHost implements the [filtering.SafeSearch] interface for *DefaultSafeSearch.
+func (ss *DefaultSafeSearch) SearchHost(host string, qtype uint16) (res *rules.DNSRewrite) {
+ r, _ := ss.engine.MatchRequest(&urlfilter.DNSRequest{
+ Hostname: strings.ToLower(host),
+ DNSType: qtype,
+ })
+
+ rewritesRules := r.DNSRewrites()
+ if len(rewritesRules) > 0 {
+ return rewritesRules[0].DNSRewrite
+ }
+
+ return nil
+}
+
+// CheckHost implements the [filtering.SafeSearch] interface for
+// *DefaultSafeSearch.
+func (ss *DefaultSafeSearch) CheckHost(
+ host string,
+ qtype uint16,
+) (res filtering.Result, err error) {
+ if log.GetLevel() >= log.DEBUG {
+ timer := log.StartTimer()
+ defer timer.LogElapsed("safesearch: lookup for %s", host)
+ }
+
+ // Check cache. Return cached result if it was found
+ cachedValue, isFound := ss.getCachedResult(host)
+ if isFound {
+ log.Debug("safesearch: found in cache: %s", host)
+
+ return cachedValue, nil
+ }
+
+ rewrite := ss.SearchHost(host, qtype)
+ if rewrite == nil {
+ return filtering.Result{}, nil
+ }
+
+ dRes, err := ss.newResult(rewrite, qtype)
+ if err != nil {
+ log.Debug("safesearch: failed to lookup addresses for %s: %s", host, err)
+
+ return filtering.Result{}, err
+ }
+
+ if dRes != nil {
+ res = *dRes
+ ss.setCacheResult(host, res)
+
+ return res, nil
+ }
+
+ return filtering.Result{}, fmt.Errorf("no ipv4 addresses in safe search response for %s", host)
+}
+
+// newResult creates Result object from rewrite rule.
+func (ss *DefaultSafeSearch) newResult(
+ rewrite *rules.DNSRewrite,
+ qtype uint16,
+) (res *filtering.Result, err error) {
+ res = &filtering.Result{
+ Rules: []*filtering.ResultRule{{
+ FilterListID: filtering.SafeSearchListID,
+ }},
+ Reason: filtering.FilteredSafeSearch,
+ IsFiltered: true,
+ }
+
+ if rewrite.RRType == qtype && (qtype == dns.TypeA || qtype == dns.TypeAAAA) {
+ ip, ok := rewrite.Value.(net.IP)
+ if !ok || ip == nil {
+ return nil, nil
+ }
+
+ res.Rules[0].IP = ip
+
+ return res, nil
+ }
+
+ if rewrite.NewCNAME == "" {
+ return nil, nil
+ }
+
+ ips, err := ss.resolver.LookupIP(context.Background(), "ip", rewrite.NewCNAME)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, ip := range ips {
+ if ip = ip.To4(); ip == nil {
+ continue
+ }
+
+ res.Rules[0].IP = ip
+
+ return res, nil
+ }
+
+ return nil, nil
+}
+
+// setCacheResult stores data in cache for host.
+func (ss *DefaultSafeSearch) setCacheResult(host string, res filtering.Result) {
+ expire := uint32(time.Now().Add(ss.cacheTime).Unix())
+ exp := make([]byte, 4)
+ binary.BigEndian.PutUint32(exp, expire)
+ buf := bytes.NewBuffer(exp)
+
+ err := gob.NewEncoder(buf).Encode(res)
+ if err != nil {
+ log.Error("safesearch: cache encoding: %s", err)
+
+ return
+ }
+
+ val := buf.Bytes()
+ _ = ss.safeSearchCache.Set([]byte(host), val)
+
+ log.Debug("safesearch: stored in cache: %s (%d bytes)", host, len(val))
+}
+
+// getCachedResult returns stored data from cache for host.
+func (ss *DefaultSafeSearch) getCachedResult(host string) (res filtering.Result, ok bool) {
+ res = filtering.Result{}
+
+ data := ss.safeSearchCache.Get([]byte(host))
+ if data == nil {
+ return res, false
+ }
+
+ exp := binary.BigEndian.Uint32(data[:4])
+ if exp <= uint32(time.Now().Unix()) {
+ ss.safeSearchCache.Del([]byte(host))
+
+ return res, false
+ }
+
+ buf := bytes.NewBuffer(data[4:])
+
+ err := gob.NewDecoder(buf).Decode(&res)
+ if err != nil {
+ log.Debug("safesearch: cache decoding: %s", err)
+
+ return filtering.Result{}, false
+ }
+
+ return res, true
+}
diff --git a/internal/filtering/safesearch/safesearch_test.go b/internal/filtering/safesearch/safesearch_test.go
new file mode 100644
index 00000000..97d18f95
--- /dev/null
+++ b/internal/filtering/safesearch/safesearch_test.go
@@ -0,0 +1,202 @@
+package safesearch
+
+import (
+ "context"
+ "net"
+ "testing"
+ "time"
+
+ "github.com/AdguardTeam/AdGuardHome/internal/aghtest"
+ "github.com/AdguardTeam/AdGuardHome/internal/filtering"
+ "github.com/AdguardTeam/urlfilter/rules"
+ "github.com/miekg/dns"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+const (
+ safeSearchCacheSize = 5000
+ cacheTime = 30 * time.Minute
+)
+
+var defaultSafeSearchConf = filtering.SafeSearchConfig{
+ Enabled: true,
+ Bing: true,
+ DuckDuckGo: true,
+ Google: true,
+ Pixabay: true,
+ Yandex: true,
+ YouTube: true,
+}
+
+var yandexIP = net.IPv4(213, 180, 193, 56)
+
+func newForTest(t testing.TB, ssConf filtering.SafeSearchConfig) (ss *DefaultSafeSearch) {
+ ss, err := NewDefaultSafeSearch(ssConf, safeSearchCacheSize, cacheTime)
+ require.NoError(t, err)
+
+ return ss
+}
+
+func TestSafeSearch(t *testing.T) {
+ ss := newForTest(t, defaultSafeSearchConf)
+ val := ss.SearchHost("www.google.com", dns.TypeA)
+
+ assert.Equal(t, &rules.DNSRewrite{NewCNAME: "forcesafesearch.google.com"}, val)
+}
+
+func TestCheckHostSafeSearchYandex(t *testing.T) {
+ ss := newForTest(t, defaultSafeSearchConf)
+
+ // Check host for each domain.
+ for _, host := range []string{
+ "yandex.ru",
+ "yAndeX.ru",
+ "YANdex.COM",
+ "yandex.by",
+ "yandex.kz",
+ "www.yandex.com",
+ } {
+ res, err := ss.CheckHost(host, dns.TypeA)
+ require.NoError(t, err)
+
+ assert.True(t, res.IsFiltered)
+
+ require.Len(t, res.Rules, 1)
+
+ assert.Equal(t, yandexIP, res.Rules[0].IP)
+ assert.EqualValues(t, filtering.SafeSearchListID, res.Rules[0].FilterListID)
+ }
+}
+
+func TestCheckHostSafeSearchGoogle(t *testing.T) {
+ resolver := &aghtest.TestResolver{}
+ ip, _ := resolver.HostToIPs("forcesafesearch.google.com")
+
+ ss := newForTest(t, defaultSafeSearchConf)
+ ss.resolver = resolver
+
+ // Check host for each domain.
+ for _, host := range []string{
+ "www.google.com",
+ "www.google.im",
+ "www.google.co.in",
+ "www.google.iq",
+ "www.google.is",
+ "www.google.it",
+ "www.google.je",
+ } {
+ t.Run(host, func(t *testing.T) {
+ res, err := ss.CheckHost(host, dns.TypeA)
+ require.NoError(t, err)
+
+ assert.True(t, res.IsFiltered)
+
+ require.Len(t, res.Rules, 1)
+
+ assert.Equal(t, ip, res.Rules[0].IP)
+ assert.EqualValues(t, filtering.SafeSearchListID, res.Rules[0].FilterListID)
+ })
+ }
+}
+
+func TestSafeSearchCacheYandex(t *testing.T) {
+ const domain = "yandex.ru"
+
+ ss := newForTest(t, filtering.SafeSearchConfig{Enabled: false})
+
+ // Check host with disabled safesearch.
+ res, err := ss.CheckHost(domain, dns.TypeA)
+ require.NoError(t, err)
+
+ assert.False(t, res.IsFiltered)
+ assert.Empty(t, res.Rules)
+
+ ss = newForTest(t, defaultSafeSearchConf)
+ res, err = ss.CheckHost(domain, dns.TypeA)
+ require.NoError(t, err)
+
+ // For yandex we already know valid IP.
+ require.Len(t, res.Rules, 1)
+
+ assert.Equal(t, res.Rules[0].IP, yandexIP)
+
+ // Check cache.
+ cachedValue, isFound := ss.getCachedResult(domain)
+ require.True(t, isFound)
+ require.Len(t, cachedValue.Rules, 1)
+
+ assert.Equal(t, cachedValue.Rules[0].IP, yandexIP)
+}
+
+func TestSafeSearchCacheGoogle(t *testing.T) {
+ const domain = "www.google.ru"
+
+ ss := newForTest(t, filtering.SafeSearchConfig{Enabled: false})
+
+ res, err := ss.CheckHost(domain, dns.TypeA)
+ require.NoError(t, err)
+
+ assert.False(t, res.IsFiltered)
+ assert.Empty(t, res.Rules)
+
+ resolver := &aghtest.TestResolver{}
+ ss = newForTest(t, defaultSafeSearchConf)
+ ss.resolver = resolver
+
+ // Lookup for safesearch domain.
+ rewrite := ss.SearchHost(domain, dns.TypeA)
+
+ ips, err := resolver.LookupIP(context.Background(), "ip", rewrite.NewCNAME)
+ require.NoError(t, err)
+
+ var foundIP net.IP
+ for _, ip := range ips {
+ if ip.To4() != nil {
+ foundIP = ip
+
+ break
+ }
+ }
+
+ res, err = ss.CheckHost(domain, dns.TypeA)
+ require.NoError(t, err)
+ require.Len(t, res.Rules, 1)
+
+ assert.True(t, res.Rules[0].IP.Equal(foundIP))
+
+ // Check cache.
+ cachedValue, isFound := ss.getCachedResult(domain)
+ require.True(t, isFound)
+ require.Len(t, cachedValue.Rules, 1)
+
+ assert.True(t, cachedValue.Rules[0].IP.Equal(foundIP))
+}
+
+const googleHost = "www.google.com"
+
+var dnsRewriteSink *rules.DNSRewrite
+
+func BenchmarkSafeSearch(b *testing.B) {
+ ss := newForTest(b, defaultSafeSearchConf)
+
+ for n := 0; n < b.N; n++ {
+ dnsRewriteSink = ss.SearchHost(googleHost, dns.TypeA)
+ }
+
+ assert.Equal(b, "forcesafesearch.google.com", dnsRewriteSink.NewCNAME)
+}
+
+var dnsRewriteParallelSink *rules.DNSRewrite
+
+func BenchmarkSafeSearch_parallel(b *testing.B) {
+ ss := newForTest(b, defaultSafeSearchConf)
+
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ dnsRewriteParallelSink = ss.SearchHost(googleHost, dns.TypeA)
+ }
+ })
+
+ assert.Equal(b, "forcesafesearch.google.com", dnsRewriteParallelSink.NewCNAME)
+}
diff --git a/internal/filtering/servicelist.go b/internal/filtering/servicelist.go
index 93fe79cd..112db944 100644
--- a/internal/filtering/servicelist.go
+++ b/internal/filtering/servicelist.go
@@ -71,6 +71,7 @@ var blockedServices = []blockedService{{
"||amazon.jp^",
"||amazon.nl^",
"||amazon.red^",
+ "||amazon.se^",
"||amazon.sg^",
"||amazon^",
"||amazonalexavoxcon.com^",
@@ -1171,6 +1172,16 @@ var blockedServices = []blockedService{{
"||zuckerberg.com^",
"||zuckerberg.net^",
},
+}, {
+ ID: "gog",
+ Name: "GOG",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||gog-cdn-lumen.secure2.footprint.net^",
+ "||gog-statics.com^",
+ "||gog.com^",
+ "||gogalaxy.com^",
+ },
}, {
ID: "hulu",
Name: "Hulu",
@@ -1280,6 +1291,14 @@ var blockedServices = []blockedService{{
"||iq.com^",
"||iqiyi.com^",
},
+}, {
+ ID: "kakaotalk",
+ Name: "KakaoTalk",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||kakao.com^",
+ "||kgslb.com^",
+ },
}, {
ID: "leagueoflegends",
Name: "League of Legends",
@@ -1291,6 +1310,24 @@ var blockedServices = []blockedService{{
"||lolstatic.com^",
"||lolusercontent.com^",
},
+}, {
+ ID: "line",
+ Name: "LINE",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||gcld-line.com^",
+ "||lin.ee^",
+ "||line-apps-beta.com^",
+ "||line-apps-rc.com^",
+ "||line-apps.com^",
+ "||line-cdn.net^",
+ "||line-scdn.net^",
+ "||line.me^",
+ "||line.naver.jp^",
+ "||linecorp.com^",
+ "||linemyshop.com^",
+ "||lineshoppingseller.com^",
+ },
}, {
ID: "mail_ru",
Name: "Mail.ru",
@@ -1308,13 +1345,13 @@ var blockedServices = []blockedService{{
"||aus.social^",
"||awscommunity.social^",
"||cyberplace.social^",
+ "||defcon.social^",
"||det.social^",
"||fosstodon.org^",
"||glasgow.social^",
"||h4.io^",
"||hachyderm.io^",
"||hessen.social^",
- "||home.social^",
"||hostux.social^",
"||ieji.de^",
"||indieweb.social^",
@@ -1333,6 +1370,7 @@ var blockedServices = []blockedService{{
"||mastodon.au^",
"||mastodon.bida.im^",
"||mastodon.com.tr^",
+ "||mastodon.eus^",
"||mastodon.green^",
"||mastodon.ie^",
"||mastodon.iriseden.eu^",
@@ -1360,10 +1398,8 @@ var blockedServices = []blockedService{{
"||mindly.social^",
"||mstdn.ca^",
"||mstdn.jp^",
- "||mstdn.party^",
"||mstdn.social^",
"||muenchen.social^",
- "||nerdculture.de^",
"||newsie.social^",
"||noc.social^",
"||norden.social^",
@@ -1382,6 +1418,7 @@ var blockedServices = []blockedService{{
"||social.anoxinon.de^",
"||social.cologne^",
"||social.dev-wiki.de^",
+ "||social.linux.pizza^",
"||social.politicaconciencia.org^",
"||social.vivaldi.net^",
"||sself.co^",
@@ -1398,11 +1435,11 @@ var blockedServices = []blockedService{{
"||toot.wales^",
"||troet.cafe^",
"||twingyeo.kr^",
- "||uiuxdev.social^",
"||union.place^",
"||universeodon.com^",
"||urbanists.social^",
"||vocalodon.net^",
+ "||wien.rocks^",
"||wxw.moe^",
},
}, {
@@ -1599,6 +1636,14 @@ var blockedServices = []blockedService{{
"||snapchat.com^",
"||snapkit.co",
},
+}, {
+ ID: "soundcloud",
+ Name: "SoundCloud",
+ IconSVG: []byte(" "),
+ Rules: []string{
+ "||sndcdn.com^",
+ "||soundcloud.com^",
+ },
}, {
ID: "spotify",
Name: "Spotify",
diff --git a/internal/home/client.go b/internal/home/client.go
new file mode 100644
index 00000000..d84b7c26
--- /dev/null
+++ b/internal/home/client.go
@@ -0,0 +1,102 @@
+package home
+
+import (
+ "encoding"
+ "fmt"
+
+ "github.com/AdguardTeam/dnsproxy/proxy"
+)
+
+// Client contains information about persistent clients.
+type Client struct {
+ // upstreamConfig is the custom upstream config for this client. If
+ // it's nil, it has not been initialized yet. If it's non-nil and
+ // empty, there are no valid upstreams. If it's non-nil and non-empty,
+ // these upstream must be used.
+ upstreamConfig *proxy.UpstreamConfig
+
+ Name string
+
+ IDs []string
+ Tags []string
+ BlockedServices []string
+ Upstreams []string
+
+ UseOwnSettings bool
+ FilteringEnabled bool
+ SafeSearchEnabled bool
+ SafeBrowsingEnabled bool
+ ParentalEnabled bool
+ UseOwnBlockedServices bool
+}
+
+// closeUpstreams closes the client-specific upstream config of c if any.
+func (c *Client) closeUpstreams() (err error) {
+ if c.upstreamConfig != nil {
+ err = c.upstreamConfig.Close()
+ if err != nil {
+ return fmt.Errorf("closing upstreams of client %q: %w", c.Name, err)
+ }
+ }
+
+ return nil
+}
+
+// clientSource represents the source from which the information about the
+// client has been obtained.
+type clientSource uint
+
+// Clients information sources. The order determines the priority.
+const (
+ ClientSourceNone clientSource = iota
+ ClientSourceWHOIS
+ ClientSourceARP
+ ClientSourceRDNS
+ ClientSourceDHCP
+ ClientSourceHostsFile
+ ClientSourcePersistent
+)
+
+// type check
+var _ fmt.Stringer = clientSource(0)
+
+// String returns a human-readable name of cs.
+func (cs clientSource) String() (s string) {
+ switch cs {
+ case ClientSourceWHOIS:
+ return "WHOIS"
+ case ClientSourceARP:
+ return "ARP"
+ case ClientSourceRDNS:
+ return "rDNS"
+ case ClientSourceDHCP:
+ return "DHCP"
+ case ClientSourceHostsFile:
+ return "etc/hosts"
+ default:
+ return ""
+ }
+}
+
+// type check
+var _ encoding.TextMarshaler = clientSource(0)
+
+// MarshalText implements encoding.TextMarshaler for the clientSource.
+func (cs clientSource) MarshalText() (text []byte, err error) {
+ return []byte(cs.String()), nil
+}
+
+// RuntimeClient is a client information about which has been obtained using the
+// source described in the Source field.
+type RuntimeClient struct {
+ WHOISInfo *RuntimeClientWHOISInfo
+ Host string
+ Source clientSource
+}
+
+// RuntimeClientWHOISInfo is the filtered WHOIS data for a runtime client.
+type RuntimeClientWHOISInfo struct {
+ City string `json:"city,omitempty"`
+ Country string `json:"country,omitempty"`
+ Orgname string `json:"orgname,omitempty"`
+}
diff --git a/internal/home/clients.go b/internal/home/clients.go
index 5d0a9ef2..d5e0d02d 100644
--- a/internal/home/clients.go
+++ b/internal/home/clients.go
@@ -2,11 +2,9 @@ package home
import (
"bytes"
- "encoding"
"fmt"
"net"
"net/netip"
- "sort"
"strings"
"sync"
"time"
@@ -26,122 +24,16 @@ import (
"golang.org/x/exp/slices"
)
-const clientsUpdatePeriod = 10 * time.Minute
-
-var webHandlersRegistered = false
-
-// Client contains information about persistent clients.
-type Client struct {
- // upstreamConfig is the custom upstream config for this client. If
- // it's nil, it has not been initialized yet. If it's non-nil and
- // empty, there are no valid upstreams. If it's non-nil and non-empty,
- // these upstream must be used.
- upstreamConfig *proxy.UpstreamConfig
-
- Name string
-
- IDs []string
- Tags []string
- BlockedServices []string
- Upstreams []string
-
- UseOwnSettings bool
- FilteringEnabled bool
- SafeSearchEnabled bool
- SafeBrowsingEnabled bool
- ParentalEnabled bool
- UseOwnBlockedServices bool
-}
-
-// closeUpstreams closes the client-specific upstream config of c if any.
-func (c *Client) closeUpstreams() (err error) {
- if c.upstreamConfig != nil {
- err = c.upstreamConfig.Close()
- if err != nil {
- return fmt.Errorf("closing upstreams of client %q: %w", c.Name, err)
- }
- }
-
- return nil
-}
-
-type clientSource uint
-
-// Clients information sources. The order determines the priority.
-const (
- ClientSourceNone clientSource = iota
- ClientSourceWHOIS
- ClientSourceARP
- ClientSourceRDNS
- ClientSourceDHCP
- ClientSourceHostsFile
- ClientSourcePersistent
-)
-
-// type check
-var _ fmt.Stringer = clientSource(0)
-
-// String returns a human-readable name of cs.
-func (cs clientSource) String() (s string) {
- switch cs {
- case ClientSourceWHOIS:
- return "WHOIS"
- case ClientSourceARP:
- return "ARP"
- case ClientSourceRDNS:
- return "rDNS"
- case ClientSourceDHCP:
- return "DHCP"
- case ClientSourceHostsFile:
- return "etc/hosts"
- default:
- return ""
- }
-}
-
-// type check
-var _ encoding.TextMarshaler = clientSource(0)
-
-// MarshalText implements encoding.TextMarshaler for the clientSource.
-func (cs clientSource) MarshalText() (text []byte, err error) {
- return []byte(cs.String()), nil
-}
-
-// clientSourceConf is used to configure where the runtime clients will be
-// obtained from.
-type clientSourcesConf struct {
- WHOIS bool `yaml:"whois"`
- ARP bool `yaml:"arp"`
- RDNS bool `yaml:"rdns"`
- DHCP bool `yaml:"dhcp"`
- HostsFile bool `yaml:"hosts"`
-}
-
-// RuntimeClient information
-type RuntimeClient struct {
- WHOISInfo *RuntimeClientWHOISInfo
- Host string
- Source clientSource
-}
-
-// RuntimeClientWHOISInfo is the filtered WHOIS data for a runtime client.
-type RuntimeClientWHOISInfo struct {
- City string `json:"city,omitempty"`
- Country string `json:"country,omitempty"`
- Orgname string `json:"orgname,omitempty"`
-}
-
+// clientsContainer is the storage of all runtime and persistent clients.
type clientsContainer struct {
- // TODO(a.garipov): Perhaps use a number of separate indices for
- // different types (string, netip.Addr, and so on).
+ // TODO(a.garipov): Perhaps use a number of separate indices for different
+ // types (string, netip.Addr, and so on).
list map[string]*Client // name -> client
idIndex map[string]*Client // ID -> client
// ipToRC is the IP address to *RuntimeClient map.
ipToRC map[netip.Addr]*RuntimeClient
- lock sync.Mutex
-
allTags *stringutil.Set
// dhcpServer is used for looking up clients IP addresses by MAC addresses
@@ -157,7 +49,16 @@ type clientsContainer struct {
// arpdb stores the neighbors retrieved from ARP.
arpdb aghnet.ARPDB
- testing bool // if TRUE, this object is used for internal tests
+ // lock protects all fields.
+ //
+ // TODO(a.garipov): Use a pointer and describe which fields are protected in
+ // more detail.
+ lock sync.Mutex
+
+ // testing is a flag that disables some features for internal tests.
+ //
+ // TODO(a.garipov): Awful. Remove.
+ testing bool
}
// Init initializes clients container
@@ -203,24 +104,34 @@ func (clients *clientsContainer) handleHostsUpdates() {
}
}
-// Start - start the module
+// webHandlersRegistered prevents a [clientsContainer] from regisering its web
+// handlers more than once.
+//
+// TODO(a.garipov): Refactor HTTP handler registration logic.
+var webHandlersRegistered = false
+
+// Start starts the clients container.
func (clients *clientsContainer) Start() {
- if !clients.testing {
- if !webHandlersRegistered {
- webHandlersRegistered = true
- clients.registerWebHandlers()
- }
- go clients.periodicUpdate()
+ if clients.testing {
+ return
}
+
+ if !webHandlersRegistered {
+ webHandlersRegistered = true
+ clients.registerWebHandlers()
+ }
+
+ go clients.periodicUpdate()
}
-// Reload reloads runtime clients.
-func (clients *clientsContainer) Reload() {
+// reloadARP reloads runtime clients from ARP, if configured.
+func (clients *clientsContainer) reloadARP() {
if clients.arpdb != nil {
clients.addFromSystemARP()
}
}
+// clientObject is the YAML representation of a persistent client.
type clientObject struct {
Name string `yaml:"name"`
@@ -271,7 +182,7 @@ func (clients *clientsContainer) addFromConfig(objects []*clientObject) {
}
}
- sort.Strings(cli.Tags)
+ slices.Sort(cli.Tags)
_, err := clients.Add(cli)
if err != nil {
@@ -311,17 +222,22 @@ func (clients *clientsContainer) forConfig() (objs []*clientObject) {
// above loop can generate different orderings when writing to the config
// file: this produces lots of diffs in config files, so sort objects by
// name before writing.
- sort.Slice(objs, func(i, j int) bool { return objs[i].Name < objs[j].Name })
+ slices.SortStableFunc(objs, func(a, b *clientObject) (sortsBefore bool) {
+ return a.Name < b.Name
+ })
return objs
}
+// arpClientsUpdatePeriod defines how often ARP clients are updated.
+const arpClientsUpdatePeriod = 10 * time.Minute
+
func (clients *clientsContainer) periodicUpdate() {
defer log.OnPanic("clients container")
for {
- clients.Reload()
- time.Sleep(clientsUpdatePeriod)
+ clients.reloadARP()
+ time.Sleep(arpClientsUpdatePeriod)
}
}
@@ -484,7 +400,8 @@ func (clients *clientsContainer) findUpstreams(
return conf, nil
}
-// findLocked searches for a client by its ID. For internal use only.
+// findLocked searches for a client by its ID. clients.lock is expected to be
+// locked.
func (clients *clientsContainer) findLocked(id string) (c *Client, ok bool) {
c, ok = clients.idIndex[id]
if ok {
@@ -498,13 +415,13 @@ func (clients *clientsContainer) findLocked(id string) (c *Client, ok bool) {
for _, c = range clients.list {
for _, id := range c.IDs {
- var n netip.Prefix
- n, err = netip.ParsePrefix(id)
+ var subnet netip.Prefix
+ subnet, err = netip.ParsePrefix(id)
if err != nil {
continue
}
- if n.Contains(ip) {
+ if subnet.Contains(ip) {
return c, true
}
}
@@ -514,20 +431,25 @@ func (clients *clientsContainer) findLocked(id string) (c *Client, ok bool) {
return nil, false
}
- macFound := clients.dhcpServer.FindMACbyIP(ip.AsSlice())
- if macFound == nil {
+ return clients.findDHCP(ip)
+}
+
+// findDHCP searches for a client by its MAC, if the DHCP server is active and
+// there is such client. clients.lock is expected to be locked.
+func (clients *clientsContainer) findDHCP(ip netip.Addr) (c *Client, ok bool) {
+ foundMAC := clients.dhcpServer.FindMACbyIP(ip)
+ if foundMAC == nil {
return nil, false
}
for _, c = range clients.list {
for _, id := range c.IDs {
- var mac net.HardwareAddr
- mac, err = net.ParseMAC(id)
+ mac, err := net.ParseMAC(id)
if err != nil {
continue
}
- if bytes.Equal(mac, macFound) {
+ if bytes.Equal(mac, foundMAC) {
return c, true
}
}
@@ -564,24 +486,13 @@ func (clients *clientsContainer) check(c *Client) (err error) {
}
for i, id := range c.IDs {
- // Normalize structured data.
- var (
- ip netip.Addr
- n netip.Prefix
- mac net.HardwareAddr
- )
-
- if ip, err = netip.ParseAddr(id); err == nil {
- c.IDs[i] = ip.String()
- } else if n, err = netip.ParsePrefix(id); err == nil {
- c.IDs[i] = n.String()
- } else if mac, err = net.ParseMAC(id); err == nil {
- c.IDs[i] = mac.String()
- } else if err = dnsforward.ValidateClientID(id); err == nil {
- c.IDs[i] = strings.ToLower(id)
- } else {
- return fmt.Errorf("invalid clientid at index %d: %q", i, id)
+ var norm string
+ norm, err = normalizeClientIdentifier(id)
+ if err != nil {
+ return fmt.Errorf("client at index %d: %w", i, err)
}
+
+ c.IDs[i] = norm
}
for _, t := range c.Tags {
@@ -590,7 +501,7 @@ func (clients *clientsContainer) check(c *Client) (err error) {
}
}
- sort.Strings(c.Tags)
+ slices.Sort(c.Tags)
err = dnsforward.ValidateUpstreams(c.Upstreams)
if err != nil {
@@ -600,6 +511,35 @@ func (clients *clientsContainer) check(c *Client) (err error) {
return nil
}
+// normalizeClientIdentifier returns a normalized version of idStr. If idStr
+// cannot be normalized, it returns an error.
+func normalizeClientIdentifier(idStr string) (norm string, err error) {
+ if idStr == "" {
+ return "", errors.Error("clientid is empty")
+ }
+
+ var ip netip.Addr
+ if ip, err = netip.ParseAddr(idStr); err == nil {
+ return ip.String(), nil
+ }
+
+ var subnet netip.Prefix
+ if subnet, err = netip.ParsePrefix(idStr); err == nil {
+ return subnet.String(), nil
+ }
+
+ var mac net.HardwareAddr
+ if mac, err = net.ParseMAC(idStr); err == nil {
+ return mac.String(), nil
+ }
+
+ if err = dnsforward.ValidateClientID(idStr); err == nil {
+ return strings.ToLower(idStr), nil
+ }
+
+ return "", fmt.Errorf("bad client identifier %q", idStr)
+}
+
// Add adds a new client object. ok is false if such client already exists or
// if an error occurred.
func (clients *clientsContainer) Add(c *Client) (ok bool, err error) {
@@ -665,21 +605,6 @@ func (clients *clientsContainer) Del(name string) (ok bool) {
return true
}
-// equalStringSlices returns true if the slices are equal.
-func equalStringSlices(a, b []string) (ok bool) {
- if len(a) != len(b) {
- return false
- }
-
- for i := range a {
- if a[i] != b[i] {
- return false
- }
- }
-
- return true
-}
-
// Update updates a client by its name.
func (clients *clientsContainer) Update(name string, c *Client) (err error) {
err = clients.check(c)
@@ -703,22 +628,11 @@ func (clients *clientsContainer) Update(name string, c *Client) (err error) {
}
}
- // Second, check the IP index.
- if !equalStringSlices(prev.IDs, c.IDs) {
- for _, id := range c.IDs {
- c2, ok2 := clients.idIndex[id]
- if ok2 && c2 != prev {
- return fmt.Errorf("another client uses the same id (%q): %q", id, c2.Name)
- }
- }
-
- // Update ID index.
- for _, id := range prev.IDs {
- delete(clients.idIndex, id)
- }
- for _, id := range c.IDs {
- clients.idIndex[id] = prev
- }
+ // Second, update the ID index.
+ err = clients.updateIDIndex(prev, c.IDs)
+ if err != nil {
+ // Don't wrap the error, because it's informative enough as is.
+ return err
}
// Update name index.
@@ -738,6 +652,32 @@ func (clients *clientsContainer) Update(name string, c *Client) (err error) {
return nil
}
+// updateIDIndex updates the ID index data for cli using the information from
+// newIDs.
+func (clients *clientsContainer) updateIDIndex(cli *Client, newIDs []string) (err error) {
+ if slices.Equal(cli.IDs, newIDs) {
+ return nil
+ }
+
+ for _, id := range newIDs {
+ existing, ok := clients.idIndex[id]
+ if ok && existing != cli {
+ return fmt.Errorf("id %q is used by client with name %q", id, existing.Name)
+ }
+ }
+
+ // Update the IDs in the index.
+ for _, id := range cli.IDs {
+ delete(clients.idIndex, id)
+ }
+
+ for _, id := range newIDs {
+ clients.idIndex[id] = cli
+ }
+
+ return nil
+}
+
// setWHOISInfo sets the WHOIS information for a client.
func (clients *clientsContainer) setWHOISInfo(ip netip.Addr, wi *RuntimeClientWHOISInfo) {
clients.lock.Lock()
diff --git a/internal/home/config.go b/internal/home/config.go
index 69baa18c..6aad27b6 100644
--- a/internal/home/config.go
+++ b/internal/home/config.go
@@ -6,7 +6,6 @@ import (
"net/netip"
"os"
"path/filepath"
- "sort"
"sync"
"github.com/AdguardTeam/AdGuardHome/internal/aghalg"
@@ -21,6 +20,7 @@ import (
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/timeutil"
"github.com/google/renameio/maybe"
+ "golang.org/x/exp/slices"
yaml "gopkg.in/yaml.v3"
)
@@ -75,11 +75,21 @@ type osConfig struct {
type clientsConfig struct {
// Sources defines the set of sources to fetch the runtime clients from.
- Sources *clientSourcesConf `yaml:"runtime_sources"`
+ Sources *clientSourcesConfig `yaml:"runtime_sources"`
// Persistent are the configured clients.
Persistent []*clientObject `yaml:"persistent"`
}
+// clientSourceConfig is used to configure where the runtime clients will be
+// obtained from.
+type clientSourcesConfig struct {
+ WHOIS bool `yaml:"whois"`
+ ARP bool `yaml:"arp"`
+ RDNS bool `yaml:"rdns"`
+ DHCP bool `yaml:"dhcp"`
+ HostsFile bool `yaml:"hosts"`
+}
+
// configuration is loaded from YAML
// field ordering is important -- yaml fields will mirror ordering from here
type configuration struct {
@@ -275,6 +285,12 @@ var config = &configuration{
TrustedProxies: []string{"127.0.0.0/8", "::1/128"},
CacheSize: 4 * 1024 * 1024,
+ EDNSClientSubnet: &dnsforward.EDNSClientSubnet{
+ CustomIP: "",
+ Enabled: false,
+ UseCustom: false,
+ },
+
// set default maximum concurrent queries to 300
// we introduced a default limit due to this:
// https://github.com/AdguardTeam/AdGuardHome/issues/2015#issuecomment-674041912
@@ -336,7 +352,7 @@ var config = &configuration{
},
},
Clients: &clientsConfig{
- Sources: &clientSourcesConf{
+ Sources: &clientSourcesConfig{
WHOIS: true,
ARP: true,
RDNS: true,
@@ -490,7 +506,7 @@ func (c *configuration) write() (err error) {
config.Stats.Interval = statsConf.LimitDays
config.Stats.Enabled = statsConf.Enabled
config.Stats.Ignored = statsConf.Ignored.Values()
- sort.Strings(config.Stats.Ignored)
+ slices.Sort(config.Stats.Ignored)
}
if Context.queryLog != nil {
@@ -502,7 +518,7 @@ func (c *configuration) write() (err error) {
config.QueryLog.Interval = timeutil.Duration{Duration: dc.RotationIvl}
config.QueryLog.MemSize = dc.MemSize
config.QueryLog.Ignored = dc.Ignored.Values()
- sort.Strings(config.QueryLog.Ignored)
+ slices.Sort(config.Stats.Ignored)
}
if Context.filters != nil {
diff --git a/internal/home/controlupdate.go b/internal/home/controlupdate.go
index 5718bfaa..1cea1d14 100644
--- a/internal/home/controlupdate.go
+++ b/internal/home/controlupdate.go
@@ -98,7 +98,7 @@ func requestVersionInfo(resp *versionResponse, recheck bool) (err error) {
if err != nil {
vcu := Context.updater.VersionCheckURL()
- return fmt.Errorf("getting version info from %s: %s", vcu, err)
+ return fmt.Errorf("getting version info from %s: %w", vcu, err)
}
return nil
diff --git a/internal/home/home.go b/internal/home/home.go
index 2fb74b3c..9c0351eb 100644
--- a/internal/home/home.go
+++ b/internal/home/home.go
@@ -125,7 +125,7 @@ func Main(clientBuildFS fs.FS) {
log.Info("Received signal %q", sig)
switch sig {
case syscall.SIGHUP:
- Context.clients.Reload()
+ Context.clients.reloadARP()
Context.tls.reload()
default:
cleanup(context.Background())
diff --git a/internal/home/upgrade.go b/internal/home/upgrade.go
index 0f53bcdc..b8f0b407 100644
--- a/internal/home/upgrade.go
+++ b/internal/home/upgrade.go
@@ -22,7 +22,7 @@ import (
)
// currentSchemaVersion is the current schema version.
-const currentSchemaVersion = 16
+const currentSchemaVersion = 17
// These aliases are provided for convenience.
type (
@@ -89,6 +89,7 @@ func upgradeConfigSchema(oldVersion int, diskConf yobj) (err error) {
upgradeSchema13to14,
upgradeSchema14to15,
upgradeSchema15to16,
+ upgradeSchema16to17,
}
n := 0
@@ -792,7 +793,7 @@ func upgradeSchema13to14(diskConf yobj) (err error) {
diskConf["clients"] = yobj{
"persistent": clientsVal,
- "runtime_sources": &clientSourcesConf{
+ "runtime_sources": &clientSourcesConfig{
WHOIS: true,
ARP: true,
RDNS: rdnsSrc,
@@ -892,19 +893,56 @@ func upgradeSchema15to16(diskConf yobj) (err error) {
"ignored": []any{},
}
- k := "statistics_interval"
- v, has := dns[k]
+ const field = "statistics_interval"
+ v, has := dns[field]
if has {
stats["enabled"] = v != 0
stats["interval"] = v
}
- delete(dns, k)
+ delete(dns, field)
diskConf["statistics"] = stats
return nil
}
+// upgradeSchema16to17 performs the following changes:
+//
+// # BEFORE:
+// 'dns':
+// 'edns_client_subnet': false
+//
+// # AFTER:
+// 'dns':
+// 'edns_client_subnet':
+// 'enabled': false
+// 'use_custom': false
+// 'custom_ip': ""
+func upgradeSchema16to17(diskConf yobj) (err error) {
+ log.Printf("Upgrade yaml: 16 to 17")
+ diskConf["schema_version"] = 17
+
+ dnsVal, ok := diskConf["dns"]
+ if !ok {
+ return nil
+ }
+
+ dns, ok := dnsVal.(yobj)
+ if !ok {
+ return fmt.Errorf("unexpected type of dns: %T", dnsVal)
+ }
+
+ const field = "edns_client_subnet"
+
+ dns[field] = map[string]any{
+ "enabled": dns[field] == true,
+ "use_custom": false,
+ "custom_ip": "",
+ }
+
+ return nil
+}
+
// TODO(a.garipov): Replace with log.Output when we port it to our logging
// package.
func funcName() string {
diff --git a/internal/home/upgrade_test.go b/internal/home/upgrade_test.go
index 14a43f70..23fd6393 100644
--- a/internal/home/upgrade_test.go
+++ b/internal/home/upgrade_test.go
@@ -579,7 +579,7 @@ func TestUpgradeSchema13to14(t *testing.T) {
// The clients field will be added anyway.
"clients": yobj{
"persistent": yarr{},
- "runtime_sources": &clientSourcesConf{
+ "runtime_sources": &clientSourcesConfig{
WHOIS: true,
ARP: true,
RDNS: false,
@@ -597,7 +597,7 @@ func TestUpgradeSchema13to14(t *testing.T) {
"schema_version": newSchemaVer,
"clients": yobj{
"persistent": []*clientObject{testClient},
- "runtime_sources": &clientSourcesConf{
+ "runtime_sources": &clientSourcesConfig{
WHOIS: true,
ARP: true,
RDNS: false,
@@ -618,7 +618,7 @@ func TestUpgradeSchema13to14(t *testing.T) {
"schema_version": newSchemaVer,
"clients": yobj{
"persistent": []*clientObject{testClient},
- "runtime_sources": &clientSourcesConf{
+ "runtime_sources": &clientSourcesConfig{
WHOIS: true,
ARP: true,
RDNS: true,
@@ -747,3 +747,64 @@ func TestUpgradeSchema15to16(t *testing.T) {
})
}
}
+
+func TestUpgradeSchema16to17(t *testing.T) {
+ const newSchemaVer = 17
+
+ defaultWantObj := yobj{
+ "dns": map[string]any{
+ "edns_client_subnet": map[string]any{
+ "enabled": false,
+ "use_custom": false,
+ "custom_ip": "",
+ },
+ },
+ "schema_version": newSchemaVer,
+ }
+
+ testCases := []struct {
+ in yobj
+ want yobj
+ name string
+ }{{
+ in: yobj{
+ "dns": map[string]any{
+ "edns_client_subnet": false,
+ },
+ },
+ want: defaultWantObj,
+ name: "basic",
+ }, {
+ in: yobj{
+ "dns": map[string]any{},
+ },
+ want: defaultWantObj,
+ name: "default_values",
+ }, {
+ in: yobj{
+ "dns": map[string]any{
+ "edns_client_subnet": true,
+ },
+ },
+ want: yobj{
+ "dns": map[string]any{
+ "edns_client_subnet": map[string]any{
+ "enabled": true,
+ "use_custom": false,
+ "custom_ip": "",
+ },
+ },
+ "schema_version": newSchemaVer,
+ },
+ name: "is_true",
+ }}
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ err := upgradeSchema16to17(tc.in)
+ require.NoError(t, err)
+
+ assert.Equal(t, tc.want, tc.in)
+ })
+ }
+}
diff --git a/internal/querylog/decode.go b/internal/querylog/decode.go
index b4cfd7e5..8cb2a164 100644
--- a/internal/querylog/decode.go
+++ b/internal/querylog/decode.go
@@ -247,55 +247,20 @@ var resultHandlers = map[string]logEntryHandler{
}
func decodeResultRuleKey(key string, i int, dec *json.Decoder, ent *logEntry) {
+ var vToken json.Token
switch key {
case "FilterListID":
- vToken, err := dec.Token()
- if err != nil {
- if err != io.EOF {
- log.Debug("decodeResultRuleKey %s err: %s", key, err)
- }
-
- return
- }
-
- if len(ent.Result.Rules) < i+1 {
- ent.Result.Rules = append(ent.Result.Rules, &filtering.ResultRule{})
- }
-
+ ent.Result.Rules, vToken = decodeVTokenAndAddRule(key, i, dec, ent.Result.Rules)
if n, ok := vToken.(json.Number); ok {
ent.Result.Rules[i].FilterListID, _ = n.Int64()
}
case "IP":
- vToken, err := dec.Token()
- if err != nil {
- if err != io.EOF {
- log.Debug("decodeResultRuleKey %s err: %s", key, err)
- }
-
- return
- }
-
- if len(ent.Result.Rules) < i+1 {
- ent.Result.Rules = append(ent.Result.Rules, &filtering.ResultRule{})
- }
-
+ ent.Result.Rules, vToken = decodeVTokenAndAddRule(key, i, dec, ent.Result.Rules)
if ipStr, ok := vToken.(string); ok {
ent.Result.Rules[i].IP = net.ParseIP(ipStr)
}
case "Text":
- vToken, err := dec.Token()
- if err != nil {
- if err != io.EOF {
- log.Debug("decodeResultRuleKey %s err: %s", key, err)
- }
-
- return
- }
-
- if len(ent.Result.Rules) < i+1 {
- ent.Result.Rules = append(ent.Result.Rules, &filtering.ResultRule{})
- }
-
+ ent.Result.Rules, vToken = decodeVTokenAndAddRule(key, i, dec, ent.Result.Rules)
if s, ok := vToken.(string); ok {
ent.Result.Rules[i].Text = s
}
@@ -304,6 +269,30 @@ func decodeResultRuleKey(key string, i int, dec *json.Decoder, ent *logEntry) {
}
}
+func decodeVTokenAndAddRule(
+ key string,
+ i int,
+ dec *json.Decoder,
+ rules []*filtering.ResultRule,
+) (newRules []*filtering.ResultRule, vToken json.Token) {
+ newRules = rules
+
+ vToken, err := dec.Token()
+ if err != nil {
+ if err != io.EOF {
+ log.Debug("decodeResultRuleKey %s err: %s", key, err)
+ }
+
+ return newRules, nil
+ }
+
+ if len(rules) < i+1 {
+ newRules = append(newRules, &filtering.ResultRule{})
+ }
+
+ return newRules, vToken
+}
+
func decodeResultRules(dec *json.Decoder, ent *logEntry) {
for {
delimToken, err := dec.Token()
diff --git a/internal/querylog/http.go b/internal/querylog/http.go
index e8fbbc30..1d983d35 100644
--- a/internal/querylog/http.go
+++ b/internal/querylog/http.go
@@ -54,10 +54,7 @@ func (l *queryLog) handleQueryLog(w http.ResponseWriter, r *http.Request) {
return
}
- // search for the log entries
entries, oldest := l.search(params)
-
- // convert log entries to JSON
data := l.entriesToJSON(entries, oldest)
_ = aghhttp.WriteJSONResponse(w, r, data)
diff --git a/internal/querylog/json.go b/internal/querylog/json.go
index f570d40f..33fc997a 100644
--- a/internal/querylog/json.go
+++ b/internal/querylog/json.go
@@ -1,7 +1,6 @@
package querylog
import (
- "fmt"
"strconv"
"strings"
"time"
@@ -117,7 +116,7 @@ func (l *queryLog) setMsgData(entry *logEntry, jsonEntry jobject) {
// it from there as well.
jsonEntry["answer_dnssec"] = entry.AuthenticatedData || msg.AuthenticatedData
- if a := answerToMap(msg); a != nil {
+ if a := answerToJSON(msg); a != nil {
jsonEntry["answer"] = a
}
}
@@ -136,7 +135,7 @@ func (l *queryLog) setOrigAns(entry *logEntry, jsonEntry jobject) {
return
}
- if a := answerToMap(orig); a != nil {
+ if a := answerToJSON(orig); a != nil {
jsonEntry["original_answer"] = a
}
}
@@ -159,55 +158,24 @@ type dnsAnswer struct {
TTL uint32 `json:"ttl"`
}
-func answerToMap(a *dns.Msg) (answers []*dnsAnswer) {
- if a == nil || len(a.Answer) == 0 {
+// answerToJSON converts the answer records of msg, if any, to their JSON form.
+func answerToJSON(msg *dns.Msg) (answers []*dnsAnswer) {
+ if msg == nil || len(msg.Answer) == 0 {
return nil
}
- answers = make([]*dnsAnswer, 0, len(a.Answer))
- for _, k := range a.Answer {
- header := k.Header()
- answer := &dnsAnswer{
+ answers = make([]*dnsAnswer, 0, len(msg.Answer))
+ for _, rr := range msg.Answer {
+ header := rr.Header()
+ a := &dnsAnswer{
Type: dns.TypeToString[header.Rrtype],
- TTL: header.Ttl,
+ // Remove the header string from the answer value since it's mostly
+ // unnecessary in the log.
+ Value: strings.TrimPrefix(rr.String(), header.String()),
+ TTL: header.Ttl,
}
- // Some special treatment for some well-known types.
- //
- // TODO(a.garipov): Consider just calling String() for everyone
- // instead.
- switch v := k.(type) {
- case nil:
- // Probably unlikely, but go on.
- case *dns.A:
- answer.Value = v.A.String()
- case *dns.AAAA:
- answer.Value = v.AAAA.String()
- case *dns.MX:
- answer.Value = fmt.Sprintf("%v %v", v.Preference, v.Mx)
- case *dns.CNAME:
- answer.Value = v.Target
- case *dns.NS:
- answer.Value = v.Ns
- case *dns.SPF:
- answer.Value = strings.Join(v.Txt, "\n")
- case *dns.TXT:
- answer.Value = strings.Join(v.Txt, "\n")
- case *dns.PTR:
- answer.Value = v.Ptr
- case *dns.SOA:
- answer.Value = fmt.Sprintf("%v %v %v %v %v %v %v", v.Ns, v.Mbox, v.Serial, v.Refresh, v.Retry, v.Expire, v.Minttl)
- case *dns.CAA:
- answer.Value = fmt.Sprintf("%v %v \"%v\"", v.Flag, v.Tag, v.Value)
- case *dns.HINFO:
- answer.Value = fmt.Sprintf("\"%v\" \"%v\"", v.Cpu, v.Os)
- case *dns.RRSIG:
- answer.Value = fmt.Sprintf("%v %v %v %v %v %v %v %v %v", dns.TypeToString[v.TypeCovered], v.Algorithm, v.Labels, v.OrigTtl, v.Expiration, v.Inception, v.KeyTag, v.SignerName, v.Signature)
- default:
- answer.Value = v.String()
- }
-
- answers = append(answers, answer)
+ answers = append(answers, a)
}
return answers
diff --git a/internal/querylog/qlog.go b/internal/querylog/qlog.go
index 32ac1a73..3b6c9efe 100644
--- a/internal/querylog/qlog.go
+++ b/internal/querylog/qlog.go
@@ -31,7 +31,8 @@ type queryLog struct {
// bufferLock protects buffer.
bufferLock sync.RWMutex
- // buffer contains recent log entries.
+ // buffer contains recent log entries. The entries in this buffer must not
+ // be modified.
buffer []*logEntry
fileFlushLock sync.Mutex // synchronize a file-flushing goroutine and main thread
@@ -100,6 +101,13 @@ type logEntry struct {
AuthenticatedData bool `json:"AD,omitempty"`
}
+// shallowClone returns a shallow clone of e.
+func (e *logEntry) shallowClone() (clone *logEntry) {
+ cloneVal := *e
+
+ return &cloneVal
+}
+
func (l *queryLog) Start() {
if l.conf.HTTPRegister != nil {
l.initWeb()
diff --git a/internal/querylog/qlog_test.go b/internal/querylog/qlog_test.go
index 75f02536..cb9ea3f0 100644
--- a/internal/querylog/qlog_test.go
+++ b/internal/querylog/qlog_test.go
@@ -2,11 +2,8 @@ package querylog
import (
"fmt"
- "math/rand"
"net"
- "sort"
"testing"
- "time"
"github.com/AdguardTeam/AdGuardHome/internal/filtering"
"github.com/AdguardTeam/dnsproxy/proxyutil"
@@ -352,72 +349,3 @@ func assertLogEntry(t *testing.T, entry *logEntry, host string, answer, client n
ip := proxyutil.IPFromRR(msg.Answer[0]).To16()
assert.Equal(t, answer, ip)
}
-
-func testEntries() (entries []*logEntry) {
- rsrc := rand.NewSource(time.Now().UnixNano())
- rgen := rand.New(rsrc)
-
- entries = make([]*logEntry, 1000)
- for i := range entries {
- min := rgen.Intn(60)
- sec := rgen.Intn(60)
- entries[i] = &logEntry{
- Time: time.Date(2020, 1, 1, 0, min, sec, 0, time.UTC),
- }
- }
-
- return entries
-}
-
-// logEntriesByTimeDesc is a wrapper over []*logEntry for sorting.
-//
-// NOTE(a.garipov): Weirdly enough, on my machine this gets consistently
-// outperformed by sort.Slice, see the benchmark below. I'm leaving this
-// implementation here, in tests, in case we want to make sure it outperforms on
-// most machines, but for now this is unused in the actual code.
-type logEntriesByTimeDesc []*logEntry
-
-// Len implements the sort.Interface interface for logEntriesByTimeDesc.
-func (les logEntriesByTimeDesc) Len() (n int) { return len(les) }
-
-// Less implements the sort.Interface interface for logEntriesByTimeDesc.
-func (les logEntriesByTimeDesc) Less(i, j int) (less bool) {
- return les[i].Time.After(les[j].Time)
-}
-
-// Swap implements the sort.Interface interface for logEntriesByTimeDesc.
-func (les logEntriesByTimeDesc) Swap(i, j int) { les[i], les[j] = les[j], les[i] }
-
-func BenchmarkLogEntry_sort(b *testing.B) {
- b.Run("methods", func(b *testing.B) {
- for i := 0; i < b.N; i++ {
- b.StopTimer()
- entries := testEntries()
- b.StartTimer()
-
- sort.Stable(logEntriesByTimeDesc(entries))
- }
- })
-
- b.Run("reflect", func(b *testing.B) {
- for i := 0; i < b.N; i++ {
- b.StopTimer()
- entries := testEntries()
- b.StartTimer()
-
- sort.SliceStable(entries, func(i, j int) (less bool) {
- return entries[i].Time.After(entries[j].Time)
- })
- }
- })
-}
-
-func TestLogEntriesByTime_sort(t *testing.T) {
- entries := testEntries()
- sort.Sort(logEntriesByTimeDesc(entries))
-
- for i := range entries[1:] {
- assert.False(t, entries[i+1].Time.After(entries[i].Time),
- "%s %s", entries[i+1].Time, entries[i].Time)
- }
-}
diff --git a/internal/querylog/search.go b/internal/querylog/search.go
index c1df5d5f..332c2e81 100644
--- a/internal/querylog/search.go
+++ b/internal/querylog/search.go
@@ -2,10 +2,10 @@ package querylog
import (
"io"
- "sort"
"time"
"github.com/AdguardTeam/golibs/log"
+ "golang.org/x/exp/slices"
)
// client finds the client info, if any, by its ClientID and IP address,
@@ -52,7 +52,9 @@ func (l *queryLog) searchMemory(params *searchParams, cache clientCache) (entrie
// Go through the buffer in the reverse order, from newer to older.
var err error
for i := len(l.buffer) - 1; i >= 0; i-- {
- e := l.buffer[i]
+ // A shallow clone is enough, since the only thing that this loop
+ // modifies is the client field.
+ e := l.buffer[i].shallowClone()
e.client, err = l.client(e.ClientID, e.IP.String(), cache)
if err != nil {
@@ -98,8 +100,8 @@ func (l *queryLog) search(params *searchParams) (entries []*logEntry, oldest tim
// weird on the frontend.
//
// See https://github.com/AdguardTeam/AdGuardHome/issues/2293.
- sort.SliceStable(entries, func(i, j int) (less bool) {
- return entries[i].Time.After(entries[j].Time)
+ slices.SortStableFunc(entries, func(a, b *logEntry) (sortsBefore bool) {
+ return a.Time.After(b.Time)
})
if params.offset > 0 {
@@ -130,7 +132,7 @@ func (l *queryLog) search(params *searchParams) (entries []*logEntry, oldest tim
// searchFiles looks up log records from all log files. It optionally uses the
// client cache, if provided. searchFiles does not scan more than
// maxFileScanEntries so callers may need to call it several times to get all
-// results. oldset and total are the time of the oldest processed entry and the
+// results. oldest and total are the time of the oldest processed entry and the
// total number of processed entries, including discarded ones, correspondingly.
func (l *queryLog) searchFiles(
params *searchParams,
diff --git a/internal/querylog/searchcriterion.go b/internal/querylog/searchcriterion.go
index a9bd4cff..d5363451 100644
--- a/internal/querylog/searchcriterion.go
+++ b/internal/querylog/searchcriterion.go
@@ -1,6 +1,7 @@
package querylog
import (
+ "fmt"
"strings"
"github.com/AdguardTeam/AdGuardHome/internal/filtering"
@@ -118,7 +119,7 @@ func (c *searchCriterion) match(entry *logEntry) bool {
case ctTerm:
return c.ctDomainOrClientCase(entry)
case ctFilteringStatus:
- return c.ctFilteringStatusCase(entry.Result)
+ return c.ctFilteringStatusCase(entry.Result.Reason, entry.Result.IsFiltered)
}
return false
@@ -141,54 +142,70 @@ func (c *searchCriterion) ctDomainOrClientCase(e *logEntry) bool {
return ctDomainOrClientCaseNonStrict(c.value, c.asciiVal, clientID, name, host, ip)
}
-func (c *searchCriterion) ctFilteringStatusCase(res filtering.Result) bool {
+// ctFilteringStatusCase returns true if the result matches the value.
+func (c *searchCriterion) ctFilteringStatusCase(
+ reason filtering.Reason,
+ isFiltered bool,
+) (matched bool) {
switch c.value {
case filteringStatusAll:
return true
-
- case filteringStatusFiltered:
- return res.IsFiltered ||
- res.Reason.In(
- filtering.NotFilteredAllowList,
- filtering.Rewritten,
- filtering.RewrittenAutoHosts,
- filtering.RewrittenRule,
- )
-
- case filteringStatusBlocked:
- return res.IsFiltered &&
- res.Reason.In(filtering.FilteredBlockList, filtering.FilteredBlockedService)
-
- case filteringStatusBlockedService:
- return res.IsFiltered && res.Reason == filtering.FilteredBlockedService
-
- case filteringStatusBlockedParental:
- return res.IsFiltered && res.Reason == filtering.FilteredParental
-
- case filteringStatusBlockedSafebrowsing:
- return res.IsFiltered && res.Reason == filtering.FilteredSafeBrowsing
-
+ case
+ filteringStatusBlocked,
+ filteringStatusBlockedParental,
+ filteringStatusBlockedSafebrowsing,
+ filteringStatusBlockedService,
+ filteringStatusFiltered,
+ filteringStatusSafeSearch:
+ return isFiltered && c.isFilteredWithReason(reason)
case filteringStatusWhitelisted:
- return res.Reason == filtering.NotFilteredAllowList
-
+ return reason == filtering.NotFilteredAllowList
case filteringStatusRewritten:
- return res.Reason.In(
+ return reason.In(
filtering.Rewritten,
filtering.RewrittenAutoHosts,
filtering.RewrittenRule,
)
-
- case filteringStatusSafeSearch:
- return res.IsFiltered && res.Reason == filtering.FilteredSafeSearch
-
case filteringStatusProcessed:
- return !res.Reason.In(
+ return !reason.In(
filtering.FilteredBlockList,
filtering.FilteredBlockedService,
filtering.NotFilteredAllowList,
)
-
default:
return false
}
}
+
+// isFilteredWithReason returns true if reason matches the criterion value.
+// c.value must be one of:
+//
+// - filteringStatusBlocked
+// - filteringStatusBlockedParental
+// - filteringStatusBlockedSafebrowsing
+// - filteringStatusBlockedService
+// - filteringStatusFiltered
+// - filteringStatusSafeSearch
+func (c *searchCriterion) isFilteredWithReason(reason filtering.Reason) (matched bool) {
+ switch c.value {
+ case filteringStatusBlocked:
+ return reason.In(filtering.FilteredBlockList, filtering.FilteredBlockedService)
+ case filteringStatusBlockedParental:
+ return reason == filtering.FilteredParental
+ case filteringStatusBlockedSafebrowsing:
+ return reason == filtering.FilteredSafeBrowsing
+ case filteringStatusBlockedService:
+ return reason == filtering.FilteredBlockedService
+ case filteringStatusFiltered:
+ return reason.In(
+ filtering.NotFilteredAllowList,
+ filtering.Rewritten,
+ filtering.RewrittenAutoHosts,
+ filtering.RewrittenRule,
+ )
+ case filteringStatusSafeSearch:
+ return reason == filtering.FilteredSafeSearch
+ default:
+ panic(fmt.Errorf("unexpected value %q", c.value))
+ }
+}
diff --git a/internal/stats/unit.go b/internal/stats/unit.go
index 99e04429..bf6eaf08 100644
--- a/internal/stats/unit.go
+++ b/internal/stats/unit.go
@@ -5,13 +5,13 @@ import (
"encoding/binary"
"encoding/gob"
"fmt"
- "sort"
"time"
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/stringutil"
"go.etcd.io/bbolt"
+ "golang.org/x/exp/slices"
)
// TODO(a.garipov): Rewrite all of this. Add proper error handling and
@@ -180,8 +180,8 @@ func convertMapToSlice(m map[string]uint64, max int) (s []countPair) {
s = append(s, countPair{Name: k, Count: v})
}
- sort.Slice(s, func(i, j int) bool {
- return s[j].Count < s[i].Count
+ slices.SortFunc(s, func(a, b countPair) (sortsBefore bool) {
+ return a.Count > b.Count
})
if max > len(s) {
max = len(s)
diff --git a/internal/tools/go.mod b/internal/tools/go.mod
index 0b4e6629..d0f5245c 100644
--- a/internal/tools/go.mod
+++ b/internal/tools/go.mod
@@ -9,9 +9,9 @@ require (
github.com/kisielk/errcheck v1.6.3
github.com/kyoh86/looppointer v0.2.1
github.com/securego/gosec/v2 v2.15.0
- golang.org/x/tools v0.6.0
- golang.org/x/vuln v0.0.0-20230213165600-1a019b0c7f30
- honnef.co/go/tools v0.4.1
+ golang.org/x/tools v0.6.1-0.20230217175706-3102dad5faf9
+ golang.org/x/vuln v0.0.0-20230217204342-b91abcc5ae3c
+ honnef.co/go/tools v0.4.2
mvdan.cc/gofumpt v0.4.0
mvdan.cc/unparam v0.0.0-20230125043941-70a0ce6e7b95
)
diff --git a/internal/tools/go.sum b/internal/tools/go.sum
index bc821c41..e3c5d1ae 100644
--- a/internal/tools/go.sum
+++ b/internal/tools/go.sum
@@ -97,10 +97,10 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20201007032633-0806396f153e/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
-golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/vuln v0.0.0-20230213165600-1a019b0c7f30 h1:Q4B8LhSjZGto/+P5REBb4N51ec2H4efRqjBIeJ6nv/Y=
-golang.org/x/vuln v0.0.0-20230213165600-1a019b0c7f30/go.mod h1:cBP4HMKv0X+x96j8IJWCKk0eqpakBmmHjKGSSC0NaYE=
+golang.org/x/tools v0.6.1-0.20230217175706-3102dad5faf9 h1:IuFp2CklNBim6OdHXn/1P4VoeKt5pA2jcDKWlboqtlQ=
+golang.org/x/tools v0.6.1-0.20230217175706-3102dad5faf9/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/vuln v0.0.0-20230217204342-b91abcc5ae3c h1:7/jJkMpaKZMxdyOQ7IP7aPbJQaDk4cOUxtXtWHQ1cSk=
+golang.org/x/vuln v0.0.0-20230217204342-b91abcc5ae3c/go.mod h1:LTLnfk/dpXDNKsX6aCg/cI4LyCVnTyrQhgV/yLJuly0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -109,8 +109,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.4.1 h1:HPeloSr0mLOEMOkhT9Au5aeki44kvP6ka3v1xIsM6Zo=
-honnef.co/go/tools v0.4.1/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
+honnef.co/go/tools v0.4.2 h1:6qXr+R5w+ktL5UkwEbPp+fEvfyoMPche6GkOpGHZcLc=
+honnef.co/go/tools v0.4.2/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA=
mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM=
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
mvdan.cc/unparam v0.0.0-20230125043941-70a0ce6e7b95 h1:n/xhncJPSt0YzfOhnyn41XxUdrWQNgmLBG72FE27Fqw=
diff --git a/internal/tools/tools.go b/internal/tools/tools.go
index 230d6c4b..88f55fa9 100644
--- a/internal/tools/tools.go
+++ b/internal/tools/tools.go
@@ -1,5 +1,4 @@
//go:build tools
-// +build tools
package tools
diff --git a/internal/updater/check.go b/internal/updater/check.go
index 5de7ecfc..a72e58ee 100644
--- a/internal/updater/check.go
+++ b/internal/updater/check.go
@@ -10,6 +10,9 @@ import (
"github.com/AdguardTeam/AdGuardHome/internal/aghalg"
"github.com/AdguardTeam/AdGuardHome/internal/aghio"
"github.com/AdguardTeam/golibs/errors"
+ "github.com/AdguardTeam/golibs/log"
+ "golang.org/x/exp/maps"
+ "golang.org/x/exp/slices"
)
// TODO(a.garipov): Make configurable.
@@ -81,9 +84,9 @@ func (u *Updater) parseVersionResponse(data []byte) (VersionInfo, error) {
return info, fmt.Errorf("version.json: %w", err)
}
- for _, v := range versionJSON {
+ for k, v := range versionJSON {
if v == "" {
- return info, fmt.Errorf("version.json: invalid data")
+ return info, fmt.Errorf("version.json: bad data: value for key %q is empty", k)
}
}
@@ -91,9 +94,9 @@ func (u *Updater) parseVersionResponse(data []byte) (VersionInfo, error) {
info.Announcement = versionJSON["announcement"]
info.AnnouncementURL = versionJSON["announcement_url"]
- packageURL, ok := u.downloadURL(versionJSON)
- if !ok {
- return info, fmt.Errorf("version.json: packageURL not found")
+ packageURL, key, found := u.downloadURL(versionJSON)
+ if !found {
+ return info, fmt.Errorf("version.json: no package URL: key %q not found in object", key)
}
info.CanAutoUpdate = aghalg.BoolToNullBool(info.NewVersion != u.version)
@@ -104,25 +107,40 @@ func (u *Updater) parseVersionResponse(data []byte) (VersionInfo, error) {
return info, nil
}
-// downloadURL returns the download URL for current build.
-func (u *Updater) downloadURL(json map[string]string) (string, bool) {
- var key string
-
+// downloadURL returns the download URL for current build as well as its key in
+// versionObj. If the key is not found, it additionally prints an informative
+// log message.
+func (u *Updater) downloadURL(versionObj map[string]string) (dlURL, key string, ok bool) {
if u.goarch == "arm" && u.goarm != "" {
key = fmt.Sprintf("download_%s_%sv%s", u.goos, u.goarch, u.goarm)
- } else if u.goarch == "mips" && u.gomips != "" {
+ } else if isMIPS(u.goarch) && u.gomips != "" {
key = fmt.Sprintf("download_%s_%s_%s", u.goos, u.goarch, u.gomips)
- }
-
- val, ok := json[key]
- if !ok {
+ } else {
key = fmt.Sprintf("download_%s_%s", u.goos, u.goarch)
- val, ok = json[key]
}
- if !ok {
- return "", false
+ dlURL, ok = versionObj[key]
+ if ok {
+ return dlURL, key, true
}
- return val, true
+ keys := maps.Keys(versionObj)
+ slices.Sort(keys)
+ log.Error("updater: key %q not found; got keys %q", key, keys)
+
+ return "", key, false
+}
+
+// isMIPS returns true if arch is any MIPS architecture.
+func isMIPS(arch string) (ok bool) {
+ switch arch {
+ case
+ "mips",
+ "mips64",
+ "mips64le",
+ "mipsle":
+ return true
+ default:
+ return false
+ }
}
diff --git a/internal/updater/updater.go b/internal/updater/updater.go
index f042ab3c..a3680506 100644
--- a/internal/updater/updater.go
+++ b/internal/updater/updater.go
@@ -272,7 +272,7 @@ func (u *Updater) backup(firstRun bool) (err error) {
wd := u.workDir
err = copySupportingFiles(u.unpackedFiles, wd, u.backupDir)
if err != nil {
- return fmt.Errorf("copySupportingFiles(%s, %s) failed: %s", wd, u.backupDir, err)
+ return fmt.Errorf("copySupportingFiles(%s, %s) failed: %w", wd, u.backupDir, err)
}
return nil
@@ -283,7 +283,7 @@ func (u *Updater) backup(firstRun bool) (err error) {
func (u *Updater) replace() error {
err := copySupportingFiles(u.unpackedFiles, u.updateDir, u.workDir)
if err != nil {
- return fmt.Errorf("copySupportingFiles(%s, %s) failed: %s", u.updateDir, u.workDir, err)
+ return fmt.Errorf("copySupportingFiles(%s, %s) failed: %w", u.updateDir, u.workDir, err)
}
log.Debug("updater: renaming: %s to %s", u.currentExeName, u.backupExeName)
diff --git a/scripts/hooks/pre-commit b/scripts/hooks/pre-commit
index a76639af..cfb72448 100755
--- a/scripts/hooks/pre-commit
+++ b/scripts/hooks/pre-commit
@@ -2,10 +2,18 @@
set -e -f -u
-# Only show interactive prompts if there is a terminal attached. This
-# should work on all of our supported Unix systems.
+# This comment is used to simplify checking local copies of the script.
+# Bump this number every time a significant change is made to this
+# script.
+#
+# AdGuard-Project-Version: 1
+
+# Only show interactive prompts if there a terminal is attached to
+# stdout. While this technically doesn't guarantee that reading from
+# /dev/tty works, this should work reasonably well on all of our
+# supported development systems and in most terminal emulators.
is_tty='0'
-if [ -e /dev/tty ]
+if [ -t '1' ]
then
is_tty='1'
fi
diff --git a/scripts/install.sh b/scripts/install.sh
index 58fd37fe..8c30268d 100644
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -33,6 +33,19 @@ usage() {
exit 2
}
+# Function maybe_sudo runs passed command with root privileges if use_sudo isn't
+# equal to 0.
+#
+# TODO(e.burkov): Use everywhere the sudo_cmd isn't quoted.
+maybe_sudo() {
+ if [ "$use_sudo" -eq 0 ]
+ then
+ "$@"
+ else
+ "$sudo_cmd" "$@"
+ fi
+}
+
# Function is_command checks if the command exists on the machine.
is_command() {
command -v "$1" >/dev/null 2>&1
@@ -554,7 +567,14 @@ handle_existing() {
# Function install_service tries to install AGH as service.
install_service() {
- if ( cd "$agh_dir" && ./AdGuardHome -s install )
+ # Installing the service as root is required at least on FreeBSD.
+ use_sudo='0'
+ if [ "$os" = 'freebsd' ]
+ then
+ use_sudo='1'
+ fi
+
+ if ( cd "$agh_dir" && maybe_sudo ./AdGuardHome -s install )
then
return 0
fi
diff --git a/scripts/make/Dockerfile b/scripts/make/Dockerfile
index a940a155..848c2122 100644
--- a/scripts/make/Dockerfile
+++ b/scripts/make/Dockerfile
@@ -1,6 +1,6 @@
# A docker file for scripts/make/build-docker.sh.
-FROM alpine:3.16
+FROM alpine:3.17
ARG BUILD_DATE
ARG VERSION
diff --git a/scripts/make/build-release.sh b/scripts/make/build-release.sh
index 6194d87b..2884f568 100644
--- a/scripts/make/build-release.sh
+++ b/scripts/make/build-release.sh
@@ -390,6 +390,16 @@ echo "{
\"selfupdate_min_version\": \"0.0\",
" >> "$version_json"
+# Add the MIPS* object keys without the "softfloat" part to mitigate the
+# consequences of #5373.
+#
+# TODO(a.garipov): Remove this around fall 2023.
+echo "
+ \"download_linux_mips64\": \"${version_download_url}/AdGuardHome_linux_mips64_softfloat.tar.gz\",
+ \"download_linux_mips64le\": \"${version_download_url}/AdGuardHome_linux_mips64le_softfloat.tar.gz\",
+ \"download_linux_mipsle\": \"${version_download_url}/AdGuardHome_linux_mipsle_softfloat.tar.gz\",
+" >> "$version_json"
+
# Same as with checksums above, don't use ls, because files matching one of the
# patterns may be absent.
ar_files="$( find "./${dist}/" ! -name "${dist}" -prune \( -name '*.tar.gz' -o -name '*.zip' \) )"
diff --git a/scripts/make/go-build.sh b/scripts/make/go-build.sh
index 7854166c..9f148341 100644
--- a/scripts/make/go-build.sh
+++ b/scripts/make/go-build.sh
@@ -6,6 +6,11 @@
# only has superficial knowledge of the POSIX shell language and alike.
# Experienced readers may find it overly verbose.
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a significant change is made to this script.
+#
+# AdGuard-Project-Version: 1
+
# The default verbosity level is 0. Show every command that is run and every
# package that is processed if the caller requested verbosity level greater than
# 0. Also show subcommands if the requested verbosity level is greater than 1.
@@ -111,16 +116,31 @@ readonly o_flags
# must be enabled.
if [ "${RACE:-0}" -eq '0' ]
then
- cgo_enabled='0'
+ CGO_ENABLED='0'
race_flags='--race=0'
else
- cgo_enabled='1'
+ CGO_ENABLED='1'
race_flags='--race=1'
fi
-readonly cgo_enabled race_flags
+readonly CGO_ENABLED race_flags
+export CGO_ENABLED
-CGO_ENABLED="$cgo_enabled"
GO111MODULE='on'
-export CGO_ENABLED GO111MODULE
+export GO111MODULE
-"$go" build --ldflags "$ldflags" "$race_flags" --trimpath "$o_flags" "$v_flags" "$x_flags"
+tags_flags='--tags='
+readonly tags_flags
+
+if [ "$verbose" -gt '0' ]
+then
+ "$go" env
+fi
+
+"$go" build\
+ --ldflags "$ldflags"\
+ "$race_flags"\
+ "$tags_flags"\
+ --trimpath\
+ "$o_flags"\
+ "$v_flags"\
+ "$x_flags"
diff --git a/scripts/make/go-deps.sh b/scripts/make/go-deps.sh
index 58ba720b..f12d2df7 100644
--- a/scripts/make/go-deps.sh
+++ b/scripts/make/go-deps.sh
@@ -1,5 +1,10 @@
#!/bin/sh
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a significant change is made to this script.
+#
+# AdGuard-Project-Version: 1
+
verbose="${VERBOSE:-0}"
readonly verbose
@@ -7,14 +12,14 @@ if [ "$verbose" -gt '1' ]
then
env
set -x
- x_flags='-x'
+ x_flags='-x=1'
elif [ "$verbose" -gt '0' ]
then
set -x
- x_flags=''
+ x_flags='-x=0'
else
set +x
- x_flags=''
+ x_flags='-x=0'
fi
readonly x_flags
@@ -23,6 +28,4 @@ set -e -f -u
go="${GO:-go}"
readonly go
-# Don't use quotes with flag variables because we want an empty space if those
-# aren't set.
-"$go" mod download $x_flags
+"$go" mod download "$x_flags"
diff --git a/scripts/make/go-lint.sh b/scripts/make/go-lint.sh
index d26141e6..c9a9c1ae 100644
--- a/scripts/make/go-lint.sh
+++ b/scripts/make/go-lint.sh
@@ -1,8 +1,13 @@
#!/bin/sh
-verbose="${VERBOSE:-0}"
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a significant change is made to this script.
+#
+# AdGuard-Project-Version: 3
+
+verbose="${VERBOSE:-0}"
+readonly verbose
-# Set verbosity.
if [ "$verbose" -gt '0' ]
then
set -x
@@ -16,34 +21,12 @@ else
set -e
fi
-# We don't need glob expansions and we want to see errors about unset variables.
set -f -u
-# Deferred Helpers
-
-not_found_msg='
-looks like a binary not found error.
-make sure you have installed the linter binaries using:
-
- $ make go-tools
-'
-readonly not_found_msg
-
-# TODO(a.garipov): Put it into a separate script and source it both here and in
-# txt-lint.sh?
-not_found() {
- if [ "$?" -eq '127' ]
- then
- # Code 127 is the exit status a shell uses when a command or
- # a file is not found, according to the Bash Hackers wiki.
- #
- # See https://wiki.bash-hackers.org/dict/terms/exit_status.
- echo "$not_found_msg" 1>&2
- fi
-}
-trap not_found EXIT
+# Source the common helpers, including not_found and run_linter.
+. ./scripts/make/helper.sh
@@ -52,7 +35,7 @@ trap not_found EXIT
go_version="$( "${GO:-go}" version )"
readonly go_version
-go_min_version='go1.19.6'
+go_min_version='go1.19.7'
go_version_msg="
warning: your go version (${go_version}) is different from the recommended minimal one (${go_min_version}).
if you have the version installed, please set the GO environment variable.
@@ -74,7 +57,7 @@ esac
-# Simple Analyzers
+# Simple analyzers
# blocklist_imports is a simple check against unwanted packages. The following
# packages are banned:
@@ -91,6 +74,8 @@ esac
#
# See https://github.com/golang/go/issues/45200.
#
+# * Package sort is replaced by golang.org/x/exp/slices.
+#
# * Package unsafe is… unsafe.
#
# * Package golang.org/x/net/context has been moved into stdlib.
@@ -101,6 +86,7 @@ blocklist_imports() {
-e '[[:space:]]"io/ioutil"$'\
-e '[[:space:]]"log"$'\
-e '[[:space:]]"reflect"$'\
+ -e '[[:space:]]"sort"$'\
-e '[[:space:]]"unsafe"$'\
-e '[[:space:]]"golang.org/x/net/context"$'\
-n\
@@ -157,96 +143,65 @@ underscores() {
-# Helpers
-
-# exit_on_output exits with a nonzero exit code if there is anything in the
-# command's combined output.
-exit_on_output() (
- set +e
-
- if [ "$VERBOSE" -lt '2' ]
- then
- set +x
- fi
-
- cmd="$1"
- shift
-
- output="$( "$cmd" "$@" 2>&1 )"
- exitcode="$?"
- if [ "$exitcode" -ne '0' ]
- then
- echo "'$cmd' failed with code $exitcode"
- fi
-
- if [ "$output" != '' ]
- then
- if [ "$*" != '' ]
- then
- echo "combined output of linter '$cmd $*':"
- else
- echo "combined output of linter '$cmd':"
- fi
-
- echo "$output"
-
- if [ "$exitcode" -eq '0' ]
- then
- exitcode='1'
- fi
- fi
-
- return "$exitcode"
-)
-
-
-
# Checks
-exit_on_output blocklist_imports
+run_linter -e blocklist_imports
-exit_on_output method_const
+run_linter -e method_const
-exit_on_output underscores
+run_linter -e underscores
-exit_on_output gofumpt --extra -e -l .
+run_linter -e gofumpt --extra -e -l .
-# TODO(a.garipov): golint is deprecated, and seems to cause more and more
-# issues with each release. Find a suitable replacement.
-#
-# golint --set_exit_status ./...
+# TODO(a.garipov): golint is deprecated, find a suitable replacement.
-"$GO" vet ./...
+run_linter "$GO" vet ./...
-govulncheck ./...
+run_linter govulncheck ./...
# Apply more lax standards to the code we haven't properly refactored yet.
-gocyclo --over 17 ./internal/querylog/
-gocyclo --over 13 ./internal/dhcpd ./internal/filtering/ ./internal/home/
+run_linter gocyclo --over 14 ./internal/querylog/
+run_linter gocyclo --over 13\
+ ./internal/dhcpd\
+ ./internal/home/\
+ ;
-# Apply stricter standards to new or somewhat refactored code.
-gocyclo --over 10 ./internal/aghio/ ./internal/aghnet/ ./internal/aghos/\
- ./internal/aghtest/ ./internal/dnsforward/ ./internal/filtering/rewrite/\
- ./internal/stats/ ./internal/tools/ ./internal/updater/\
- ./internal/version/ ./scripts/blocked-services/ ./scripts/vetted-filters/\
- ./main.go
+# Apply the normal standards to new or somewhat refactored code.
+run_linter gocyclo --over 10\
+ ./internal/aghio/\
+ ./internal/aghnet/\
+ ./internal/aghos/\
+ ./internal/aghtest/\
+ ./internal/dnsforward/\
+ ./internal/filtering/\
+ ./internal/stats/\
+ ./internal/tools/\
+ ./internal/updater/\
+ ./internal/version/\
+ ./scripts/blocked-services/\
+ ./scripts/vetted-filters/\
+ ./main.go\
+ ;
-ineffassign ./...
+run_linter ineffassign ./...
-unparam ./...
+run_linter unparam ./...
-git ls-files -- '*.go' '*.mod' '*.sh' 'Makefile' | xargs misspell --error
+git ls-files -- 'Makefile' '*.go' '*.mod' '*.sh' '*.yaml' '*.yml'\
+ | xargs misspell --error
-looppointer ./...
+run_linter looppointer ./...
-nilness ./...
+run_linter nilness ./...
-exit_on_output shadow --strict ./...
+# TODO(a.garipov): Add fieldalignment?
+
+run_linter -e shadow --strict ./...
# TODO(a.garipov): Enable in v0.108.0.
-# gosec --quiet ./...
+# run_linter gosec --quiet ./...
# TODO(a.garipov): Enable --blank?
-errcheck --asserts ./...
+run_linter errcheck --asserts ./...
-staticcheck ./...
+run_linter staticcheck ./...
diff --git a/scripts/make/go-test.sh b/scripts/make/go-test.sh
index e37c7f18..03d2c100 100644
--- a/scripts/make/go-test.sh
+++ b/scripts/make/go-test.sh
@@ -1,5 +1,10 @@
#!/bin/sh
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a significant change is made to this script.
+#
+# AdGuard-Project-Version: 1
+
verbose="${VERBOSE:-0}"
readonly verbose
@@ -43,5 +48,12 @@ shuffle_flags='--shuffle=on'
timeout_flags="${TIMEOUT_FLAGS:---timeout=90s}"
readonly count_flags cover_flags shuffle_flags timeout_flags
-"$go" test "$count_flags" "$cover_flags" "$race_flags" "$shuffle_flags" "$timeout_flags"\
- "$x_flags" "$v_flags" ./...
+"$go" test\
+ "$count_flags"\
+ "$cover_flags"\
+ "$shuffle_flags"\
+ "$race_flags"\
+ "$timeout_flags"\
+ "$x_flags"\
+ "$v_flags"\
+ ./...
diff --git a/scripts/make/go-tools.sh b/scripts/make/go-tools.sh
index a66d5c06..ba512dc3 100644
--- a/scripts/make/go-tools.sh
+++ b/scripts/make/go-tools.sh
@@ -1,22 +1,27 @@
#!/bin/sh
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a significant change is made to this script.
+#
+# AdGuard-Project-Version: 2
+
verbose="${VERBOSE:-0}"
readonly verbose
if [ "$verbose" -gt '1' ]
then
set -x
- v_flags='-v'
- x_flags='-x'
+ v_flags='-v=1'
+ x_flags='-x=1'
elif [ "$verbose" -gt '0' ]
then
set -x
- v_flags='-v'
- x_flags=''
+ v_flags='-v=1'
+ x_flags='-x=0'
else
set +x
- v_flags=''
- x_flags=''
+ v_flags='-v=0'
+ x_flags='-x=0'
fi
readonly v_flags x_flags
@@ -27,6 +32,25 @@ readonly go
# TODO(a.garipov): Add goconst?
+# Remove only the actual binaries in the bin/ directory, as developers may add
+# their own scripts there. Most commonly, a script named “go” for tools that
+# call the go binary and need a particular version.
+rm -f\
+ bin/errcheck\
+ bin/fieldalignment\
+ bin/gocyclo\
+ bin/gofumpt\
+ bin/gosec\
+ bin/govulncheck\
+ bin/ineffassign\
+ bin/looppointer\
+ bin/misspell\
+ bin/nilness\
+ bin/shadow\
+ bin/staticcheck\
+ bin/unparam\
+ ;
+
# Reset GOARCH and GOOS to make sure we install the tools for the native
# architecture even when we're cross-compiling the main binary, and also to
# prevent the "cannot install cross-compiled binaries when GOBIN is set" error.
@@ -37,14 +61,15 @@ env\
GOWORK='off'\
"$go" install\
--modfile=./internal/tools/go.mod\
- $v_flags\
- $x_flags\
+ "$v_flags"\
+ "$x_flags"\
github.com/fzipp/gocyclo/cmd/gocyclo\
github.com/golangci/misspell/cmd/misspell\
github.com/gordonklaus/ineffassign\
github.com/kisielk/errcheck\
github.com/kyoh86/looppointer/cmd/looppointer\
github.com/securego/gosec/v2/cmd/gosec\
+ golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment\
golang.org/x/tools/go/analysis/passes/nilness/cmd/nilness\
golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow\
golang.org/x/vuln/cmd/govulncheck\
diff --git a/scripts/make/helper.sh b/scripts/make/helper.sh
new file mode 100644
index 00000000..6d7fe778
--- /dev/null
+++ b/scripts/make/helper.sh
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+# Common script helpers
+#
+# This file contains common script helpers. It should be sourced in scripts
+# right after the initial environment processing.
+
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a remarkable change is made to this script.
+#
+# AdGuard-Project-Version: 2
+
+
+
+# Deferred helpers
+
+not_found_msg='
+looks like a binary not found error.
+make sure you have installed the linter binaries using:
+
+ $ make go-tools
+'
+readonly not_found_msg
+
+not_found() {
+ if [ "$?" -eq '127' ]
+ then
+ # Code 127 is the exit status a shell uses when a command or a file is
+ # not found, according to the Bash Hackers wiki.
+ #
+ # See https://wiki.bash-hackers.org/dict/terms/exit_status.
+ echo "$not_found_msg" 1>&2
+ fi
+}
+trap not_found EXIT
+
+
+
+# Helpers
+
+# run_linter runs the given linter with two additions:
+#
+# 1. If the first argument is "-e", run_linter exits with a nonzero exit code
+# if there is anything in the command's combined output.
+#
+# 2. In any case, run_linter adds the program's name to its combined output.
+run_linter() (
+ set +e
+
+ if [ "$VERBOSE" -lt '2' ]
+ then
+ set +x
+ fi
+
+ cmd="${1:?run_linter: provide a command}"
+ shift
+
+ exit_on_output='0'
+ if [ "$cmd" = '-e' ]
+ then
+ exit_on_output='1'
+ cmd="${1:?run_linter: provide a command}"
+ shift
+ fi
+
+ readonly cmd
+
+ output="$( "$cmd" "$@" )"
+ exitcode="$?"
+
+ readonly output
+
+ if [ "$output" != '' ]
+ then
+ echo "$output" | sed -e "s/^/${cmd}: /"
+
+ if [ "$exitcode" -eq '0' ] && [ "$exit_on_output" -eq '1' ]
+ then
+ exitcode='1'
+ fi
+ fi
+
+ return "$exitcode"
+)
diff --git a/scripts/make/txt-lint.sh b/scripts/make/txt-lint.sh
index aa959506..23434e4e 100644
--- a/scripts/make/txt-lint.sh
+++ b/scripts/make/txt-lint.sh
@@ -1,9 +1,13 @@
#!/bin/sh
+# This comment is used to simplify checking local copies of the script. Bump
+# this number every time a remarkable change is made to this script.
+#
+# AdGuard-Project-Version: 2
+
verbose="${VERBOSE:-0}"
readonly verbose
-# Set verbosity.
if [ "$verbose" -gt '0' ]
then
set -x
@@ -20,31 +24,9 @@ fi
# We don't need glob expansions and we want to see errors about unset variables.
set -f -u
-
-
-# Deferred Helpers
-
-not_found_msg='
-looks like a binary not found error.
-make sure you have installed the linter binaries using:
-
- $ make go-tools
-'
-readonly not_found_msg
-
-# TODO(a.garipov): Put it into a separate script and source it both here and in
-# go-lint.sh?
-not_found() {
- if [ "$?" -eq '127' ]
- then
- # Code 127 is the exit status a shell uses when a command or
- # a file is not found, according to the Bash Hackers wiki.
- #
- # See https://wiki.bash-hackers.org/dict/terms/exit_status.
- echo "$not_found_msg" 1>&2
- fi
-}
-trap not_found EXIT
+# Source the common helpers, including not_found.
+. ./scripts/make/helper.sh
git ls-files -- '*.md' '*.yaml' '*.yml' 'client/src/__locales/en.json'\
- | xargs misspell --error
+ | xargs misspell --error\
+ | sed -e 's/^/misspell: /'