-
+
+
谷歌 (Google)
-
+
+
YouTube
+
+
+
+

+
Amazon
+
+
+
+
+
+
+
+

+
BBC
+
+
+
+
+
+
+
+

+
Discord
+
+
+
+
+
+
+
+

+
Dropbox
+
+
+
+
+
+
+
+

+
Microsoft
+
+
+
+
+
+
+
+

+
Steam
+
+
+
+
+
+
+
+

+
Telegram
+
+
+
+
+
+
+
+

+
TikTok
+
+
+
+
+
+
+
+

+
V2EX
+
+
+
+
+
+
+
+

+
Wikimedia
+
+
+
+
+
+
+
+

+
Yahoo
+
+
+
+
@@ -1152,6 +1276,13 @@
+
+
+
+
diff --git a/static/js/api.js b/static/js/api.js
index 62725df..18e229e 100644
--- a/static/js/api.js
+++ b/static/js/api.js
@@ -31,11 +31,10 @@ async function apiRequest(endpoint, method = 'GET', data = null) {
// 竞争:请求或超时
const response = await Promise.race([fetch(url, options), timeoutPromise]);
- // 获取响应文本,用于调试和错误处理
+ // 获取响应文本
const responseText = await response.text();
if (!response.ok) {
- // 优化错误响应处理
console.warn(`API请求失败: ${response.status}`);
// 处理401未授权错误,重定向到登录页面
@@ -45,73 +44,28 @@ async function apiRequest(endpoint, method = 'GET', data = null) {
return { error: '未授权访问' };
}
- // 尝试解析JSON,但如果失败,直接使用原始文本作为错误信息
+ // 尝试解析JSON错误响应
try {
const errorData = JSON.parse(responseText);
return { error: errorData.error || responseText || `请求失败: ${response.status}` };
} catch (parseError) {
- // 当响应不是有效的JSON时(如中文错误信息),直接使用原始文本
- console.warn('非JSON格式错误响应:', responseText);
+ // 当响应不是有效的JSON时,直接使用原始文本作为错误信息
return { error: responseText || `请求失败: ${response.status}` };
}
}
- // 尝试解析成功响应
+ // 如果响应文本为空,返回null
+ if (!responseText || responseText.trim() === '') {
+ return null;
+ }
+
+ // 尝试解析JSON响应
try {
- // 首先检查响应文本是否为空
- if (!responseText || responseText.trim() === '') {
- console.warn('空响应文本');
- return null; // 返回null表示空响应
- }
-
- // 尝试解析JSON
const parsedData = JSON.parse(responseText);
-
- // 检查解析后的数据是否有效
- if (parsedData === null) {
- console.warn('解析后的数据为null');
- return null;
- }
-
- // 允许返回空数组,但不允许返回空对象
- if (typeof parsedData === 'object' && !Array.isArray(parsedData) && Object.keys(parsedData).length === 0) {
- console.warn('解析后的数据为空对象');
- return null;
- }
-
- // 限制所有数字为两位小数
- const formatNumbers = (obj) => {
- if (typeof obj === 'number') {
- return parseFloat(obj.toFixed(2));
- } else if (Array.isArray(obj)) {
- return obj.map(formatNumbers);
- } else if (obj && typeof obj === 'object') {
- const formattedObj = {};
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- formattedObj[key] = formatNumbers(obj[key]);
- }
- }
- return formattedObj;
- }
- return obj;
- };
-
- const formattedData = formatNumbers(parsedData);
- return formattedData;
+ return parsedData;
} catch (parseError) {
- // 详细记录错误信息和响应内容
console.error('JSON解析错误:', parseError);
console.error('原始响应文本:', responseText);
- console.error('响应长度:', responseText.length);
- console.error('响应前100字符:', responseText.substring(0, 100));
-
- // 如果是位置66附近的错误,特别标记
- if (parseError.message.includes('position 66')) {
- console.error('位置66附近的字符:', responseText.substring(60, 75));
- }
-
- // 返回错误对象,让上层处理
return { error: 'JSON解析错误' };
}
} catch (error) {
@@ -156,66 +110,6 @@ const api = {
// 获取查询类型统计
getQueryTypeStats: () => apiRequest('/query/type?t=' + Date.now()),
- // 获取屏蔽规则 - 已禁用
- getShieldRules: () => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({}); // 返回空对象而非API调用
- },
-
- // 添加屏蔽规则 - 已禁用
- addShieldRule: (rule) => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 删除屏蔽规则 - 已禁用
- deleteShieldRule: (rule) => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 更新远程规则 - 已禁用
- updateRemoteRules: () => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 获取黑名单列表 - 已禁用
- getBlacklists: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve([]); // 返回空数组而非API调用
- },
-
- // 添加黑名单 - 已禁用
- addBlacklist: (url) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 删除黑名单 - 已禁用
- deleteBlacklist: (url) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 获取Hosts内容 - 已禁用
- getHosts: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ content: '' }); // 返回空内容而非API调用
- },
-
- // 保存Hosts内容 - 已禁用
- saveHosts: (content) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 刷新Hosts - 已禁用
- refreshHosts: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
// 查询DNS记录 - 兼容多种参数格式
queryDNS: async function(domain, recordType) {
try {
@@ -231,36 +125,22 @@ const api = {
params = { domain, recordType };
}
- // 尝试不同的API端点
- const endpoints = ['/api/dns/query', '/dns/query', '/api/query', '/query'];
- let lastError;
+ // 使用正确的API端点
+ const response = await fetch('/api/query', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(params)
+ });
- for (const endpoint of endpoints) {
- try {
- console.log(`尝试API端点: ${endpoint}`);
- const response = await fetch(endpoint, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- });
-
- if (response.ok) {
- const data = await response.json();
- console.log('DNS查询成功:', data);
- return data;
- } else {
- lastError = new Error(`HTTP error! status: ${response.status} for endpoint: ${endpoint}`);
- }
- } catch (error) {
- lastError = error;
- console.log(`端点 ${endpoint} 调用失败,尝试下一个`);
- }
+ if (response.ok) {
+ const data = await response.json();
+ console.log('DNS查询成功:', data);
+ return data;
+ } else {
+ throw new Error(`HTTP error! status: ${response.status}`);
}
-
- // 如果所有端点都失败,抛出最后一个错误
- throw lastError || new Error('所有API端点调用失败');
} catch (error) {
console.error('DNS查询API调用失败:', error);
diff --git a/static/js/config.js b/static/js/config.js
index 3737f4f..906deca 100644
--- a/static/js/config.js
+++ b/static/js/config.js
@@ -60,6 +60,7 @@ function populateConfigForm(config) {
// DNS配置 - 使用函数安全设置值,避免 || 操作符可能的错误处理
setElementValue('dns-port', getSafeValue(dnsServerConfig.Port, 53));
+ setElementValue('dns-run-mode', getSafeValue(dnsServerConfig.QueryMode, 'parallel'));
setElementValue('dns-upstream-servers', getSafeArray(dnsServerConfig.UpstreamServers).join('\n'));
setElementValue('dns-dnssec-upstream-servers', getSafeArray(dnsServerConfig.DNSSECUpstreamServers).join('\n'));
//setElementValue('dns-stats-file', getSafeValue(dnsServerConfig.StatsFile, 'data/stats.json'));
@@ -69,7 +70,7 @@ function populateConfigForm(config) {
setElementValue('dns-cache-size', getSafeValue(dnsServerConfig.CacheSize, 100));
setElementValue('dns-max-cache-ttl', getSafeValue(dnsServerConfig.MaxCacheTTL, 120));
setElementValue('dns-min-cache-ttl', getSafeValue(dnsServerConfig.MinCacheTTL, 5));
- setElementValue('dns-enable-ipv6', getSafeValue(dnsServerConfig.EnableIPv6, false));
+ setElementValue('dns-enable-ipv6', getSafeValue(dnsServerConfig.enableIPv6, false));
// HTTP配置
setElementValue('http-port', getSafeValue(httpServerConfig.Port, 8080));
// 屏蔽配置
@@ -96,6 +97,8 @@ function setElementValue(elementId, value) {
}
} else if (element.tagName === 'TEXTAREA') {
element.value = value;
+ } else if (element.tagName === 'SELECT') {
+ element.value = value;
} else if (element.tagName === 'BUTTON' && element.classList.contains('toggle-btn')) {
const icon = element.querySelector('i');
if (icon) {
@@ -220,6 +223,7 @@ function collectFormData() {
return {
dnsserver: {
port: dnsPort,
+ queryMode: getElementValue('dns-run-mode') || 'parallel',
upstreamServers: upstreamServers,
dnssecUpstreamServers: dnssecUpstreamServers,
timeout: timeout,
@@ -313,12 +317,12 @@ function showNotification(message, type = 'info') {
// 创建新通知
const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-transform duration-300 ease-in-out translate-y-0 opacity-0`;
+ notification.className = `notification fixed top-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-transform duration-300 ease-in-out translate-y-0 opacity-0`;
// 设置通知样式(兼容Tailwind和原生CSS)
notification.style.cssText += `
position: fixed;
- bottom: 16px;
+ top: 16px;
right: 16px;
padding: 16px 24px;
border-radius: 8px;
@@ -331,15 +335,17 @@ function showNotification(message, type = 'info') {
if (type === 'success') {
notification.style.backgroundColor = '#10b981';
notification.style.color = 'white';
+ notification.innerHTML = `
${message}`;
} else if (type === 'error') {
notification.style.backgroundColor = '#ef4444';
notification.style.color = 'white';
+ notification.innerHTML = `
${message}`;
} else {
notification.style.backgroundColor = '#3b82f6';
notification.style.color = 'white';
+ notification.innerHTML = `
${message}`;
}
- notification.textContent = message;
document.body.appendChild(notification);
// 显示通知
@@ -383,13 +389,28 @@ async function loadGFWListConfig() {
// 填充GFWList配置表单
function populateGFWListForm(config) {
const gfwListConfig = config.gfwList || {};
+ const enabled = getSafeValue(gfwListConfig.enabled, false);
- setElementValue('gfwlist-enabled', getSafeValue(gfwListConfig.enabled, false));
+ setElementValue('gfwlist-enabled', enabled);
setElementValue('gfwlist-target-ip', getSafeValue(gfwListConfig.ip, ''));
setElementValue('gfwlist-google', getSafeValue(config.allowGoogle, false));
setElementValue('gfwlist-youtube', getSafeValue(config.allowYouTube, false));
setElementValue('gfwlist-facebook', getSafeValue(config.allowFacebook, false));
setElementValue('gfwlist-twitter', getSafeValue(config.allowTwitter, false));
+ setElementValue('gfwlist-amazon', getSafeValue(config.allowAmazon, false));
+ setElementValue('gfwlist-bbc', getSafeValue(config.allowBBC, false));
+ setElementValue('gfwlist-discord', getSafeValue(config.allowDiscord, false));
+ setElementValue('gfwlist-dropbox', getSafeValue(config.allowDropbox, false));
+ setElementValue('gfwlist-microsoft', getSafeValue(config.allowMicrosoft, false));
+ setElementValue('gfwlist-steam', getSafeValue(config.allowSteam, false));
+ setElementValue('gfwlist-telegram', getSafeValue(config.allowTelegram, false));
+ setElementValue('gfwlist-tiktok', getSafeValue(config.allowTikTok, false));
+ setElementValue('gfwlist-v2ex', getSafeValue(config.allowV2EX, false));
+ setElementValue('gfwlist-wikimedia', getSafeValue(config.allowWikimedia, false));
+ setElementValue('gfwlist-yahoo', getSafeValue(config.allowYahoo, false));
+
+ // 更新通行网站部分的显示效果
+ updateAllowedSitesSection(enabled);
}
// 保存GFWList配置
@@ -424,10 +445,53 @@ function collectGFWListFormData() {
allowGoogle: getElementValue('gfwlist-google'),
allowYouTube: getElementValue('gfwlist-youtube'),
allowFacebook: getElementValue('gfwlist-facebook'),
- allowTwitter: getElementValue('gfwlist-twitter')
+ allowTwitter: getElementValue('gfwlist-twitter'),
+ allowAmazon: getElementValue('gfwlist-amazon'),
+ allowBBC: getElementValue('gfwlist-bbc'),
+ allowDiscord: getElementValue('gfwlist-discord'),
+ allowDropbox: getElementValue('gfwlist-dropbox'),
+ allowMicrosoft: getElementValue('gfwlist-microsoft'),
+ allowSteam: getElementValue('gfwlist-steam'),
+ allowTelegram: getElementValue('gfwlist-telegram'),
+ allowTikTok: getElementValue('gfwlist-tiktok'),
+ allowV2EX: getElementValue('gfwlist-v2ex'),
+ allowWikimedia: getElementValue('gfwlist-wikimedia'),
+ allowYahoo: getElementValue('gfwlist-yahoo')
};
}
+// 更新通行网站部分的显示效果
+function updateAllowedSitesSection(enabled) {
+ const section = document.getElementById('allowed-sites-section');
+ if (!section) return;
+
+ const siteCards = section.querySelectorAll('.bg-gray-50');
+ const siteLabels = section.querySelectorAll('.text-gray-700');
+ const siteToggles = section.querySelectorAll('.toggle-btn');
+
+ if (enabled) {
+ // GFWList已启用,显示彩色且可点击
+ section.classList.remove('opacity-50');
+ siteCards.forEach(card => {
+ card.style.filter = 'grayscale(0%)';
+ });
+ siteToggles.forEach(toggle => {
+ toggle.disabled = false;
+ toggle.classList.remove('cursor-not-allowed');
+ });
+ } else {
+ // GFWList已禁用,显示灰色且不可点击
+ section.classList.add('opacity-50');
+ siteCards.forEach(card => {
+ card.style.filter = 'grayscale(100%)';
+ });
+ siteToggles.forEach(toggle => {
+ toggle.disabled = true;
+ toggle.classList.add('cursor-not-allowed');
+ });
+ }
+}
+
// 重启GFWList服务
async function handleRestartGFWListService() {
if (!confirm('确定要重启DNS服务吗?重启期间服务可能会短暂不可用。')) return;
@@ -460,6 +524,11 @@ function setupGFWListEventListeners() {
// 切换按钮状态
const currentState = this.classList.contains('bg-success');
setElementValue(this.id, !currentState);
+
+ // 如果是GFWList启用开关,更新通行网站部分的显示效果
+ if (this.id === 'gfwlist-enabled') {
+ updateAllowedSitesSection(!currentState);
+ }
});
});
}
diff --git a/static/js/dashboard.js b/static/js/dashboard.js
index d3ee5b4..49aa4e8 100644
--- a/static/js/dashboard.js
+++ b/static/js/dashboard.js
@@ -18,10 +18,19 @@ window.dashboardHistoryData = window.dashboardHistoryData || {
prevActiveIPs: null,
prevTopQueryTypeCount: null
};
+// 节流相关变量
+let lastProcessedTime = 0;
+const PROCESS_THROTTLE_INTERVAL = 1000; // 1秒节流间隔
// 引入颜色配置文件
const COLOR_CONFIG = window.COLOR_CONFIG || {};
+// 全局统计变量
+let totalQueries = 0;
+let blockedQueries = 0;
+let allowedQueries = 0;
+let errorQueries = 0;
+
// 初始化仪表盘
async function initDashboard() {
try {
@@ -33,8 +42,6 @@ async function initDashboard() {
// 初始化图表
initCharts();
-
-
// 初始化时间范围切换
initTimeRangeToggle();
@@ -122,9 +129,24 @@ function setupReconnect() {
}, reconnectDelay);
}
-// 处理实时数据更新
+// 处理实时数据更新 - 添加节流机制
function processRealTimeData(stats) {
+ // 节流处理,限制执行频率
+ const now = Date.now();
+ if (now - lastProcessedTime < PROCESS_THROTTLE_INTERVAL) {
+ return; // 跳过执行
+ }
+ lastProcessedTime = now;
+
try {
+ console.log('收到实时数据:', stats);
+
+ // 确保stats是有效的对象
+ if (!stats || typeof stats !== 'object') {
+ console.error('无效的实时数据:', stats);
+ return;
+ }
+
// 更新统计卡片 - 这会更新所有统计卡片,包括CPU使用率卡片
updateStatsCards(stats);
@@ -133,118 +155,38 @@ function processRealTimeData(stats) {
if (stats.dns && stats.dns.QueryTypes) {
queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
type,
- count
+ count: Number(count) || 0
}));
}
// 更新图表数据
updateCharts(stats, queryTypeStats);
-
-
- // 尝试从stats中获取总查询数等信息
+ // 尝试从stats中获取总查询数等信息,并更新全局变量
+ // 确保使用数字类型
if (stats.dns) {
- totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
- blockedQueries = stats.dns.Blocked;
- errorQueries = stats.dns.Errors || 0;
- allowedQueries = stats.dns.Allowed;
+ const allowed = Number(stats.dns.Allowed) || 0;
+ const blocked = Number(stats.dns.Blocked) || 0;
+ const errors = Number(stats.dns.Errors || 0);
+ totalQueries = allowed + blocked + errors;
+ blockedQueries = blocked;
+ errorQueries = errors;
+ allowedQueries = allowed;
} else {
- totalQueries = stats.totalQueries || 0;
- blockedQueries = stats.blockedQueries || 0;
- errorQueries = stats.errorQueries || 0;
- allowedQueries = stats.allowedQueries || 0;
+ totalQueries = Number(stats.totalQueries) || 0;
+ blockedQueries = Number(stats.blockedQueries) || 0;
+ errorQueries = Number(stats.errorQueries) || 0;
+ allowedQueries = Number(stats.allowedQueries) || 0;
}
- // 更新新卡片数据
- if (document.getElementById('avg-response-time')) {
- // 首先尝试从stats.dns.AvgResponseTime获取,然后尝试stats.avgResponseTime
- let avgResponseTime = null;
- if (stats.dns && stats.dns.AvgResponseTime !== undefined) {
- avgResponseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- avgResponseTime = stats.avgResponseTime;
- }
-
- const responseTime = avgResponseTime ? avgResponseTime.toFixed(2) + 'ms' : '---';
-
- // 计算响应时间趋势
- let responsePercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '•';
-
- // 查找箭头元素
- const responseTimePercentElem = document.getElementById('response-time-percent');
- let parent = null;
- let arrowIcon = null;
-
- if (responseTimePercentElem) {
- parent = responseTimePercentElem.parentElement;
- if (parent) {
- arrowIcon = parent.querySelector('.fa-arrow-up, .fa-arrow-down, .fa-circle');
- }
- }
-
- if (avgResponseTime !== undefined && avgResponseTime !== null) {
- // 首次加载时初始化历史数据,不计算趋势
- if (window.dashboardHistoryData.prevResponseTime === undefined || window.dashboardHistoryData.prevResponseTime === null) {
- window.dashboardHistoryData.prevResponseTime = avgResponseTime;
- responsePercent = '0.0%';
- trendIcon = '•';
- trendClass = 'text-gray-500';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-circle mr-1 text-xs';
- parent.className = 'text-gray-500 text-sm flex items-center';
- }
- } else {
- const prevResponseTime = window.dashboardHistoryData.prevResponseTime;
-
- // 计算变化百分比
- const changePercent = ((avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
- responsePercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 处理-0.0%的情况
- if (responsePercent === '-0.0%') {
- responsePercent = '0.0%';
- }
-
- // 根据用户要求:数量下降显示红色箭头,上升显示绿色箭头
- if (changePercent > 0) {
- // 响应时间增加,数值上升
- trendIcon = '↑';
- trendClass = 'text-success';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-up mr-1';
- parent.className = 'text-success text-sm flex items-center';
- }
- } else if (changePercent < 0) {
- // 响应时间减少,数值下降
- trendIcon = '↓';
- trendClass = 'text-danger';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-down mr-1';
- parent.className = 'text-danger text-sm flex items-center';
- }
- } else {
- // 趋势为0时,显示圆点图标
- trendIcon = '•';
- trendClass = 'text-gray-500';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-circle mr-1 text-xs';
- parent.className = 'text-gray-500 text-sm flex items-center';
- }
- }
-
- // 更新历史数据
- window.dashboardHistoryData.prevResponseTime = avgResponseTime;
- }
- }
-
- document.getElementById('avg-response-time').textContent = responseTime;
- if (responseTimePercentElem) {
- responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
- responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
+ console.log('实时数据处理完成,更新后的值:', {
+ totalQueries,
+ allowedQueries,
+ blockedQueries,
+ errorQueries
+ });
+
+
if (document.getElementById('top-query-type')) {
const queryType = stats.topQueryType || '---';
@@ -495,418 +437,38 @@ function cleanupResources() {
clearInterval(intervalId);
intervalId = null;
}
+
+ // 清除图表实例,释放内存
+ if (ratioChart) {
+ ratioChart.destroy();
+ ratioChart = null;
+ }
+ if (dnsRequestsChart) {
+ dnsRequestsChart.destroy();
+ dnsRequestsChart = null;
+ }
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.destroy();
+ detailedDnsRequestsChart = null;
+ }
+ if (queryTypeChart) {
+ queryTypeChart.destroy();
+ queryTypeChart = null;
+ }
+
+ // 清除统计卡片图表实例
+ for (const key in statCardCharts) {
+ if (statCardCharts[key]) {
+ statCardCharts[key].destroy();
+ delete statCardCharts[key];
+ }
+ }
+
+ // 清除事件监听器
+ window.removeEventListener('beforeunload', cleanupResources);
}
// 加载仪表盘数据
-async function loadDashboardData() {
- console.log('开始加载仪表盘数据');
- try {
- // 获取基本统计数据
- const stats = await api.getStats();
- console.log('统计数据:', stats);
-
- // 获取查询类型统计数据
- let queryTypeStats = null;
- try {
- queryTypeStats = await api.getQueryTypeStats();
- console.log('查询类型统计数据:', queryTypeStats);
- } catch (error) {
- console.warn('获取查询类型统计失败:', error);
- // 如果API调用失败,尝试从stats中提取查询类型数据
- if (stats && stats.dns && stats.dns.QueryTypes) {
- queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
- type,
- count
- }));
- console.log('从stats中提取的查询类型统计:', queryTypeStats);
- }
- }
-
- // 尝试获取TOP被屏蔽域名,如果失败则提供模拟数据
- let topBlockedDomains = [];
- try {
- topBlockedDomains = await api.getTopBlockedDomains();
- console.log('TOP被屏蔽域名:', topBlockedDomains);
-
- // 确保返回的数据是数组
- if (!Array.isArray(topBlockedDomains)) {
- console.warn('TOP被屏蔽域名不是预期的数组格式,使用模拟数据');
- topBlockedDomains = [];
- }
- } catch (error) {
- console.warn('获取TOP被屏蔽域名失败:', error);
- // 提供模拟数据
- topBlockedDomains = [
- { domain: 'example-blocked.com', count: 15, lastSeen: new Date().toISOString() },
- { domain: 'ads.example.org', count: 12, lastSeen: new Date().toISOString() },
- { domain: 'tracking.example.net', count: 8, lastSeen: new Date().toISOString() }
- ];
- }
-
- // 尝试获取最近屏蔽域名,如果失败则提供模拟数据
- let recentBlockedDomains = [];
- try {
- recentBlockedDomains = await api.getRecentBlockedDomains();
- console.log('最近屏蔽域名:', recentBlockedDomains);
-
- // 确保返回的数据是数组
- if (!Array.isArray(recentBlockedDomains)) {
- console.warn('最近屏蔽域名不是预期的数组格式,使用模拟数据');
- recentBlockedDomains = [];
- }
- } catch (error) {
- console.warn('获取最近屏蔽域名失败:', error);
- // 提供模拟数据
- recentBlockedDomains = [
- { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() },
- { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() }
- ];
- }
-
-
-
- function showError(elementId) {
- const loadingElement = document.getElementById(elementId + '-loading');
- const errorElement = document.getElementById(elementId + '-error');
- if (loadingElement) loadingElement.classList.add('hidden');
- if (errorElement) errorElement.classList.remove('hidden');
- }
-
- // 尝试获取TOP客户端,优先使用真实数据,失败时使用模拟数据
- let topClients = [];
- try {
- const clientsData = await api.getTopClients();
- console.log('TOP客户端:', clientsData);
-
- // 检查数据是否有效
- if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
- // 使用真实数据
- topClients = clientsData;
- } else if (clientsData && clientsData.error) {
- // API返回错误
- console.warn('获取TOP客户端失败:', clientsData.error);
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- } else {
- // 数据为空或格式不正确
- console.warn('TOP客户端数据为空或格式不正确,使用模拟数据');
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- }
- } catch (error) {
- console.warn('获取TOP客户端失败:', error);
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- }
-
- // 尝试获取TOP域名,优先使用真实数据,失败时使用模拟数据
- let topDomains = [];
- try {
- const domainsData = await api.getTopDomains();
- console.log('TOP域名:', domainsData);
-
- // 检查数据是否有效
- if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
- // 使用真实数据
- topDomains = domainsData;
- } else if (domainsData && domainsData.error) {
- // API返回错误
- console.warn('获取TOP域名失败:', domainsData.error);
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- } else {
- // 数据为空或格式不正确
- console.warn('TOP域名数据为空或格式不正确,使用模拟数据');
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- }
- } catch (error) {
- console.warn('获取TOP域名失败:', error);
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- }
-
- // 更新统计卡片
- updateStatsCards(stats);
-
- // 更新图表数据,传入查询类型统计
- updateCharts(stats, queryTypeStats);
-
- // 更新表格数据
- await updateTopBlockedTable(topBlockedDomains);
- updateRecentBlockedTable(recentBlockedDomains);
- await updateTopClientsTable(topClients);
- await updateTopDomainsTable(topDomains);
-
- // 尝试从stats中获取总查询数等信息
- if (stats.dns) {
- totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
- blockedQueries = stats.dns.Blocked;
- errorQueries = stats.dns.Errors || 0;
- allowedQueries = stats.dns.Allowed;
- } else {
- totalQueries = stats.totalQueries || 0;
- blockedQueries = stats.blockedQueries || 0;
- errorQueries = stats.errorQueries || 0;
- allowedQueries = stats.allowedQueries || 0;
- }
-
- // 全局历史数据对象,用于存储趋势计算所需的上一次值
- window.dashboardHistoryData = window.dashboardHistoryData || {};
-
- // 更新新卡片数据 - 使用API返回的真实数据
- if (document.getElementById('avg-response-time')) {
- // 首先尝试从stats.dns.AvgResponseTime获取,然后尝试stats.avgResponseTime
- let avgResponseTime = null;
- if (stats.dns && stats.dns.AvgResponseTime !== undefined) {
- avgResponseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- avgResponseTime = stats.avgResponseTime;
- }
-
- // 保留两位小数并添加单位
- const responseTime = avgResponseTime ? avgResponseTime.toFixed(2) + 'ms' : '---';
-
- // 计算响应时间趋势
- let responsePercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '•';
-
- // 查找箭头元素
- const responseTimePercentElem = document.getElementById('response-time-percent');
- let parent = null;
- let arrowIcon = null;
-
- if (responseTimePercentElem) {
- parent = responseTimePercentElem.parentElement;
- if (parent) {
- arrowIcon = parent.querySelector('.fa-arrow-up, .fa-arrow-down, .fa-circle');
- }
- }
-
- if (avgResponseTime !== undefined && avgResponseTime !== null) {
- // 首次加载时初始化历史数据,不计算趋势
- if (window.dashboardHistoryData.prevResponseTime === undefined || window.dashboardHistoryData.prevResponseTime === null) {
- window.dashboardHistoryData.prevResponseTime = avgResponseTime;
- responsePercent = '0.0%';
- trendIcon = '•';
- trendClass = 'text-gray-500';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-circle mr-1 text-xs';
- parent.className = 'text-gray-500 text-sm flex items-center';
- }
- } else {
- const prevResponseTime = window.dashboardHistoryData.prevResponseTime;
-
- // 计算变化百分比
- if (prevResponseTime > 0) {
- const changePercent = ((avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
- responsePercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 处理-0.0%的情况
- if (responsePercent === '-0.0%') {
- responsePercent = '0.0%';
- }
-
- // 根据用户要求:数量下降显示红色箭头,上升显示绿色箭头
- // 对于响应时间,数值增加表示性能下降,数值减少表示性能提升
- // 但根据用户要求,我们只根据数值变化方向来设置颜色
- if (changePercent > 0) {
- // 响应时间增加(性能下降),数值上升
- trendIcon = '↑';
- trendClass = 'text-success';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-up mr-1';
- parent.className = 'text-success text-sm flex items-center';
- }
- } else if (changePercent < 0) {
- // 响应时间减少(性能提升),数值下降
- trendIcon = '↓';
- trendClass = 'text-danger';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-down mr-1';
- parent.className = 'text-danger text-sm flex items-center';
- }
- } else {
- // 趋势为0时,显示圆点图标
- trendIcon = '•';
- trendClass = 'text-gray-500';
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-circle mr-1 text-xs';
- parent.className = 'text-gray-500 text-sm flex items-center';
- }
- }
- }
-
- // 更新历史数据
- window.dashboardHistoryData.prevResponseTime = avgResponseTime;
- }
- }
-
- document.getElementById('avg-response-time').textContent = responseTime;
- if (responseTimePercentElem) {
- responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
- responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- if (document.getElementById('top-query-type')) {
- // 直接使用API返回的查询类型
- const queryType = stats.topQueryType || '---';
-
- // 计算最常用查询类型的百分比
- let queryTypePercentage = 0;
- if (stats.dns && stats.dns.QueryTypes && stats.dns.Queries > 0) {
- const topTypeCount = stats.dns.QueryTypes[queryType] || 0;
- queryTypePercentage = (topTypeCount / stats.dns.Queries) * 100;
- }
-
- const queryPercentElem = document.getElementById('query-type-percentage');
- if (queryPercentElem) {
- queryPercentElem.textContent = `• ${Math.round(queryTypePercentage)}%`;
- queryPercentElem.className = 'text-sm flex items-center text-primary';
- }
-
- document.getElementById('top-query-type').textContent = queryType;
- }
-
- if (document.getElementById('active-ips')) {
- // 直接使用API返回的活跃IP数
- const activeIPs = stats.activeIPs !== undefined ? formatNumber(stats.activeIPs) : '---';
-
- // 计算活跃IP趋势
- let ipsPercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '•';
-
- // 查找箭头元素
- const activeIpsPercentElem = document.getElementById('active-ips-percent');
- let parent = null;
- let arrowIcon = null;
-
- if (activeIpsPercentElem) {
- parent = activeIpsPercentElem.parentElement;
- if (parent) {
- arrowIcon = parent.querySelector('.fa-arrow-up, .fa-arrow-down');
- }
- }
-
- if (stats.activeIPs !== undefined && stats.activeIPs !== null) {
- // 存储当前值用于下次计算趋势
- const prevActiveIPs = window.dashboardHistoryData.prevActiveIPs || stats.activeIPs;
- window.dashboardHistoryData.prevActiveIPs = stats.activeIPs;
-
- // 计算变化百分比
- if (prevActiveIPs > 0) {
- const changePercent = ((stats.activeIPs - prevActiveIPs) / prevActiveIPs) * 100;
- ipsPercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 设置趋势图标和颜色
- if (changePercent > 0) {
- trendIcon = '↑';
- trendClass = 'text-success';
-
- // 更新箭头图标和颜色
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-up mr-1';
- parent.className = 'text-success text-sm flex items-center';
- }
- } else if (changePercent < 0) {
- trendIcon = '↓';
- trendClass = 'text-danger';
-
- // 更新箭头图标和颜色
- if (arrowIcon) {
- arrowIcon.className = 'fa fa-arrow-down mr-1';
- parent.className = 'text-danger text-sm flex items-center';
- }
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- document.getElementById('active-ips').textContent = activeIPs;
- if (activeIpsPercentElem) {
- activeIpsPercentElem.textContent = trendIcon + ' ' + ipsPercent;
- activeIpsPercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- // 更新图表
- updateCharts({totalQueries, blockedQueries, allowedQueries, errorQueries});
-
- // 确保响应时间图表使用API实时数据
- if (document.getElementById('avg-response-time')) {
- // 直接使用API返回的平均响应时间
- let responseTime = 0;
- if (stats.dns && stats.dns.AvgResponseTime) {
- responseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- responseTime = stats.avgResponseTime;
- } else if (stats.responseTime) {
- responseTime = stats.responseTime;
- }
-
- if (responseTime > 0 && statCardCharts['response-time-chart']) {
- // 限制小数位数为两位并更新图表
- updateChartData('response-time-chart', parseFloat(responseTime).toFixed(2));
- }
- }
-
- // 更新运行状态
- updateUptime();
-
- // 确保TOP域名数据被正确加载
- updateTopData();
- } catch (error) {
- console.error('加载仪表盘数据失败:', error);
- // 静默失败,不显示通知以免打扰用户
- }
-}
// 更新统计卡片
function updateStatsCards(stats) {
@@ -914,54 +476,78 @@ function updateStatsCards(stats) {
// 适配不同的数据结构
// 保存当前显示的值,用于在数据缺失时保留
- let totalQueries, blockedQueries, allowedQueries, errorQueries;
+ let totalQueries = 0, blockedQueries = 0, allowedQueries = 0, errorQueries = 0;
let topQueryType = 'A', queryTypePercentage = 0;
- let activeIPs, activeIPsPercentage = 0;
+ let activeIPs = 0, activeIPsPercentage = 0;
+ let avgResponseTime = 0;
- // 优先从DOM中获取当前显示的值,作为默认值
- const totalQueriesElem = document.getElementById('total-queries');
- const blockedQueriesElem = document.getElementById('blocked-queries');
- const allowedQueriesElem = document.getElementById('allowed-queries');
- const errorQueriesElem = document.getElementById('error-queries');
- const activeIPsElem = document.getElementById('active-ips');
-
- // 解析当前显示的值,作为默认值
+ // 优先从API数据中获取值,仅在API数据不可用时使用DOM中的当前值
+ // 解析当前显示的值,作为备用默认值
const getCurrentValue = (elem) => {
if (!elem) return 0;
const text = elem.textContent.replace(/,/g, '').replace(/[^0-9]/g, '');
return parseInt(text) || 0;
};
- // 初始化默认值为当前显示的值
- totalQueries = getCurrentValue(totalQueriesElem);
- blockedQueries = getCurrentValue(blockedQueriesElem);
- allowedQueries = getCurrentValue(allowedQueriesElem);
- errorQueries = getCurrentValue(errorQueriesElem);
- activeIPs = getCurrentValue(activeIPsElem);
-
// 检查数据结构,兼容可能的不同格式
if (stats) {
// 优先使用顶层字段,只有当值存在时才更新
- if (stats.totalQueries !== undefined) totalQueries = stats.totalQueries;
- if (stats.blockedQueries !== undefined) blockedQueries = stats.blockedQueries;
- if (stats.allowedQueries !== undefined) allowedQueries = stats.allowedQueries;
- if (stats.errorQueries !== undefined) errorQueries = stats.errorQueries;
- if (stats.topQueryType !== undefined) topQueryType = stats.topQueryType;
- if (stats.queryTypePercentage !== undefined) queryTypePercentage = stats.queryTypePercentage;
- if (stats.activeIPs !== undefined) activeIPs = stats.activeIPs;
- if (stats.activeIPsPercentage !== undefined) activeIPsPercentage = stats.activeIPsPercentage;
+ if (stats.totalQueries !== undefined) {
+ totalQueries = Number(stats.totalQueries) || 0;
+ }
+ if (stats.blockedQueries !== undefined) {
+ blockedQueries = Number(stats.blockedQueries) || 0;
+ }
+ if (stats.allowedQueries !== undefined) {
+ allowedQueries = Number(stats.allowedQueries) || 0;
+ }
+ if (stats.errorQueries !== undefined) {
+ errorQueries = Number(stats.errorQueries) || 0;
+ }
+ if (stats.topQueryType !== undefined) {
+ topQueryType = stats.topQueryType;
+ }
+ if (stats.queryTypePercentage !== undefined) {
+ queryTypePercentage = stats.queryTypePercentage;
+ }
+ if (stats.activeIPs !== undefined) {
+ activeIPs = Number(stats.activeIPs) || 0;
+ }
+ if (stats.activeIPsPercentage !== undefined) {
+ activeIPsPercentage = stats.activeIPsPercentage;
+ }
if (stats.avgResponseTime !== undefined) {
- // 存储平均响应时间,用于后续更新卡片
- window.avgResponseTime = stats.avgResponseTime;
+ avgResponseTime = Number(stats.avgResponseTime) || 0;
+ }
+ if (stats.responseTime !== undefined) {
+ avgResponseTime = Number(stats.responseTime) || 0;
}
-
// 如果dns对象存在,优先使用其中的数据
if (stats.dns) {
- if (stats.dns.Queries !== undefined) totalQueries = stats.dns.Queries;
- if (stats.dns.Blocked !== undefined) blockedQueries = stats.dns.Blocked;
- if (stats.dns.Allowed !== undefined) allowedQueries = stats.dns.Allowed;
- if (stats.dns.Errors !== undefined) errorQueries = stats.dns.Errors;
+ // 计算总查询数,确保准确性
+ if (stats.dns.Allowed !== undefined && stats.dns.Blocked !== undefined) {
+ const allowed = Number(stats.dns.Allowed) || 0;
+ const blocked = Number(stats.dns.Blocked) || 0;
+ const errors = Number(stats.dns.Errors || 0);
+ totalQueries = allowed + blocked + errors;
+ allowedQueries = allowed;
+ blockedQueries = blocked;
+ errorQueries = errors;
+ } else if (stats.dns.Queries !== undefined) {
+ totalQueries = Number(stats.dns.Queries) || 0;
+ }
+
+ // 确保使用dns对象中的具体数值
+ if (stats.dns.Blocked !== undefined) {
+ blockedQueries = Number(stats.dns.Blocked) || 0;
+ }
+ if (stats.dns.Allowed !== undefined) {
+ allowedQueries = Number(stats.dns.Allowed) || 0;
+ }
+ if (stats.dns.Errors !== undefined) {
+ errorQueries = Number(stats.dns.Errors) || 0;
+ }
// 计算最常用查询类型的百分比
if (stats.dns.QueryTypes && stats.dns.Queries > 0) {
@@ -976,20 +562,54 @@ function updateStatsCards(stats) {
// 检查并更新平均响应时间
if (stats.dns.AvgResponseTime !== undefined) {
- // 存储平均响应时间,用于后续更新卡片
- window.avgResponseTime = stats.dns.AvgResponseTime;
+ avgResponseTime = Number(stats.dns.AvgResponseTime) || 0;
}
}
} else if (Array.isArray(stats) && stats.length > 0) {
// 可能的数据结构3: 数组形式
- if (stats[0].total !== undefined) totalQueries = stats[0].total;
- if (stats[0].blocked !== undefined) blockedQueries = stats[0].blocked;
- if (stats[0].allowed !== undefined) allowedQueries = stats[0].allowed;
- if (stats[0].error !== undefined) errorQueries = stats[0].error;
- if (stats[0].topQueryType !== undefined) topQueryType = stats[0].topQueryType;
- if (stats[0].queryTypePercentage !== undefined) queryTypePercentage = stats[0].queryTypePercentage;
- if (stats[0].activeIPs !== undefined) activeIPs = stats[0].activeIPs;
- if (stats[0].activeIPsPercentage !== undefined) activeIPsPercentage = stats[0].activeIPsPercentage;
+ if (stats[0].total !== undefined) {
+ totalQueries = Number(stats[0].total) || 0;
+ }
+ if (stats[0].blocked !== undefined) {
+ blockedQueries = Number(stats[0].blocked) || 0;
+ }
+ if (stats[0].allowed !== undefined) {
+ allowedQueries = Number(stats[0].allowed) || 0;
+ }
+ if (stats[0].error !== undefined) {
+ errorQueries = Number(stats[0].error) || 0;
+ }
+ if (stats[0].topQueryType !== undefined) {
+ topQueryType = stats[0].topQueryType;
+ }
+ if (stats[0].queryTypePercentage !== undefined) {
+ queryTypePercentage = stats[0].queryTypePercentage;
+ }
+ if (stats[0].activeIPs !== undefined) {
+ activeIPs = Number(stats[0].activeIPs) || 0;
+ }
+ if (stats[0].activeIPsPercentage !== undefined) {
+ activeIPsPercentage = stats[0].activeIPsPercentage;
+ }
+ if (stats[0].avgResponseTime !== undefined) {
+ avgResponseTime = Number(stats[0].avgResponseTime) || 0;
+ }
+ if (stats[0].responseTime !== undefined) {
+ avgResponseTime = Number(stats[0].responseTime) || 0;
+ }
+ } else {
+ // 仅在API数据完全不可用时,才从DOM中获取当前值作为默认值
+ const totalQueriesElem = document.getElementById('total-queries');
+ const blockedQueriesElem = document.getElementById('blocked-queries');
+ const allowedQueriesElem = document.getElementById('allowed-queries');
+ const errorQueriesElem = document.getElementById('error-queries');
+ const activeIPsElem = document.getElementById('active-ips');
+
+ totalQueries = getCurrentValue(totalQueriesElem);
+ blockedQueries = getCurrentValue(blockedQueriesElem);
+ allowedQueries = getCurrentValue(allowedQueriesElem);
+ errorQueries = getCurrentValue(errorQueriesElem);
+ activeIPs = getCurrentValue(activeIPsElem);
}
// 存储正在进行的动画状态,避免动画重叠
@@ -1000,175 +620,28 @@ function updateStatsCards(stats) {
const element = document.getElementById(elementId);
if (!element) return;
- // 如果该元素正在进行动画,取消当前动画并立即更新值
- if (animationInProgress[elementId]) {
- // 清除之前可能设置的定时器
- clearTimeout(animationInProgress[elementId].timeout1);
- clearTimeout(animationInProgress[elementId].timeout2);
- clearTimeout(animationInProgress[elementId].timeout3);
-
- // 立即设置新值,避免显示错乱
- const formattedNewValue = formatNumber(newValue);
- element.innerHTML = formattedNewValue;
- return;
- }
-
- const oldValue = parseInt(element.textContent.replace(/,/g, '')) || 0;
const formattedNewValue = formatNumber(newValue);
+ const currentValue = element.textContent;
- // 如果值没有变化,不执行动画
- if (oldValue === newValue && element.textContent === formattedNewValue) {
+ // 如果值没有变化,不执行任何操作
+ if (currentValue === formattedNewValue) {
return;
}
- // 先移除可能存在的光晕效果类
- element.classList.remove('number-glow', 'number-glow-blue', 'number-glow-red', 'number-glow-green', 'number-glow-yellow');
- element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
+ // 简化动画:使用CSS opacity过渡实现平滑更新
+ element.style.transition = 'opacity 0.3s ease-in-out';
+ element.style.opacity = '0';
- // 保存原始样式
- const originalStyle = element.getAttribute('style') || '';
-
- try {
- // 复制原始元素的样式到新元素,确保大小完全一致
- const computedStyle = getComputedStyle(element);
+ // 使用requestAnimationFrame确保平滑过渡
+ requestAnimationFrame(() => {
+ element.textContent = formattedNewValue;
+ element.style.opacity = '1';
- // 配置翻页容器样式,确保与原始元素大小完全一致
- const containerStyle =
- 'position: relative; ' +
- 'display: ' + computedStyle.display + '; ' +
- 'overflow: hidden; ' +
- 'height: ' + element.offsetHeight + 'px; ' +
- 'width: ' + element.offsetWidth + 'px; ' +
- 'margin: ' + computedStyle.margin + '; ' +
- 'padding: ' + computedStyle.padding + '; ' +
- 'box-sizing: ' + computedStyle.boxSizing + '; ' +
- 'line-height: ' + computedStyle.lineHeight + ';';
-
- // 创建翻页容器
- const flipContainer = document.createElement('div');
- flipContainer.style.cssText = containerStyle;
- flipContainer.className = 'number-flip-container';
-
- // 创建旧值元素
- const oldValueElement = document.createElement('div');
- oldValueElement.textContent = element.textContent;
- oldValueElement.style.cssText =
- 'position: absolute; ' +
- 'top: 0; ' +
- 'left: 0; ' +
- 'width: 100%; ' +
- 'height: 100%; ' +
- 'display: flex; ' +
- 'align-items: center; ' +
- 'justify-content: center; ' +
- 'transition: transform 400ms ease-in-out; ' +
- 'transform-origin: center;';
-
- // 创建新值元素
- const newValueElement = document.createElement('div');
- newValueElement.textContent = formattedNewValue;
- newValueElement.style.cssText =
- 'position: absolute; ' +
- 'top: 0; ' +
- 'left: 0; ' +
- 'width: 100%; ' +
- 'height: 100%; ' +
- 'display: flex; ' +
- 'align-items: center; ' +
- 'justify-content: center; ' +
- 'transition: transform 400ms ease-in-out; ' +
- 'transform-origin: center; ' +
- 'transform: translateY(100%);';
- [oldValueElement, newValueElement].forEach(el => {
- el.style.fontSize = computedStyle.fontSize;
- el.style.fontWeight = computedStyle.fontWeight;
- el.style.color = computedStyle.color;
- el.style.fontFamily = computedStyle.fontFamily;
- el.style.textAlign = computedStyle.textAlign;
- el.style.lineHeight = computedStyle.lineHeight;
- el.style.width = '100%';
- el.style.height = '100%';
- el.style.margin = '0';
- el.style.padding = '0';
- el.style.boxSizing = 'border-box';
- el.style.whiteSpace = computedStyle.whiteSpace;
- el.style.overflow = 'hidden';
- el.style.textOverflow = 'ellipsis';
- // 确保垂直对齐正确
- el.style.verticalAlign = 'middle';
- });
-
- // 替换原始元素的内容
- element.textContent = '';
- flipContainer.appendChild(oldValueElement);
- flipContainer.appendChild(newValueElement);
- element.appendChild(flipContainer);
-
- // 标记该元素正在进行动画
- animationInProgress[elementId] = {};
-
- // 启动翻页动画
- animationInProgress[elementId].timeout1 = setTimeout(() => {
- if (oldValueElement && newValueElement) {
- oldValueElement.style.transform = 'translateY(-100%)';
- newValueElement.style.transform = 'translateY(0)';
- }
- }, 50);
-
- // 动画结束后,恢复原始元素
- animationInProgress[elementId].timeout2 = setTimeout(() => {
- try {
- // 清理并设置最终值
- element.innerHTML = formattedNewValue;
- if (originalStyle) {
- element.setAttribute('style', originalStyle);
- } else {
- element.removeAttribute('style');
- }
-
- // 添加当前卡片颜色的深色光晕效果
- const card = element.closest('.stat-card, .bg-blue-50, .bg-red-50, .bg-green-50, .bg-yellow-50');
- let glowColorClass = '';
-
- if (card) {
- if (card.classList.contains('bg-blue-50') || card.id.includes('total') || card.id.includes('response')) {
- glowColorClass = 'number-glow-dark-blue';
- } else if (card.classList.contains('bg-red-50') || card.id.includes('blocked')) {
- glowColorClass = 'number-glow-dark-red';
- } else if (card.classList.contains('bg-green-50') || card.id.includes('allowed') || card.id.includes('active')) {
- glowColorClass = 'number-glow-dark-green';
- } else if (card.classList.contains('bg-yellow-50') || card.id.includes('error') || card.id.includes('cpu')) {
- glowColorClass = 'number-glow-dark-yellow';
- }
- }
-
- if (glowColorClass) {
- element.classList.add(glowColorClass);
-
- // 2秒后移除光晕效果
- animationInProgress[elementId].timeout3 = setTimeout(() => {
- element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
- }, 2000);
- }
- } catch (e) {
- console.error('更新元素失败:', e);
- } finally {
- // 清除动画状态标记
- delete animationInProgress[elementId];
- }
- }, 450);
- } catch (e) {
- console.error('创建动画失败:', e);
- // 出错时直接设置值
- element.innerHTML = formattedNewValue;
- if (originalStyle) {
- element.setAttribute('style', originalStyle);
- } else {
- element.removeAttribute('style');
- }
- // 清除动画状态标记
- delete animationInProgress[elementId];
- }
+ // 移除transition样式,避免影响后续更新
+ setTimeout(() => {
+ element.style.transition = '';
+ }, 300);
+ });
}
// 更新百分比元素的函数
@@ -1316,6 +789,12 @@ function updateStatsCards(stats) {
updatePercentage(elementId, formattedPercentage);
}
+ // 响应时间特殊处理:响应时间下降(性能提升)显示上升箭头,响应时间上升(性能下降)显示下降箭头
+ if (elementId === 'response-time-percent') {
+ // 反转箭头逻辑
+ [isIncrease, isDecrease] = [isDecrease, isIncrease];
+ }
+
// 更新箭头图标和颜色
if (isIncrease) {
arrowIcon.className = 'fa fa-arrow-up mr-1';
@@ -1335,7 +814,8 @@ function updateStatsCards(stats) {
totalQueries: 0,
blockedQueries: 0,
allowedQueries: 0,
- errorQueries: 0
+ errorQueries: 0,
+ avgResponseTime: 0
};
// 计算百分比并更新箭头
@@ -1358,8 +838,27 @@ function updateStatsCards(stats) {
// 更新平均响应时间卡片
if (document.getElementById('avg-response-time')) {
- const responseTime = window.avgResponseTime ? window.avgResponseTime.toFixed(2) + 'ms' : '---';
+ const responseTime = avgResponseTime ? avgResponseTime.toFixed(2) + 'ms' : '---';
document.getElementById('avg-response-time').textContent = responseTime;
+
+ // 更新平均响应时间的百分比和箭头,使用与其他统计卡片相同的逻辑
+ if (avgResponseTime !== undefined && avgResponseTime !== null) {
+ // 计算变化百分比
+ let responsePercent = '0.0%';
+ const prevResponseTime = window.dashboardHistoryData.avgResponseTime || 0;
+ const currentResponseTime = avgResponseTime;
+
+ if (prevResponseTime > 0) {
+ const changePercent = ((currentResponseTime - prevResponseTime) / prevResponseTime) * 100;
+ responsePercent = Math.abs(changePercent).toFixed(1) + '%';
+ }
+
+ // 响应时间趋势特殊处理:响应时间下降(性能提升)显示上升箭头,响应时间上升(性能下降)显示下降箭头
+ // updatePercentWithArrow函数内部已添加响应时间的特殊处理
+ updatePercentWithArrow('response-time-percent', responsePercent, prevResponseTime, currentResponseTime);
+ } else {
+ updatePercentage('response-time-percent', '---');
+ }
}
// 更新历史数据
@@ -1367,6 +866,10 @@ function updateStatsCards(stats) {
window.dashboardHistoryData.blockedQueries = blockedQueries;
window.dashboardHistoryData.allowedQueries = allowedQueries;
window.dashboardHistoryData.errorQueries = errorQueries;
+ // 只在avgResponseTime不为0时更新历史数据,保留上一次不为0的状态
+ if (avgResponseTime > 0) {
+ window.dashboardHistoryData.avgResponseTime = avgResponseTime;
+ }
}
@@ -1417,11 +920,11 @@ async function updateTopBlockedTable(domains) {
// 构建跟踪器浮窗内容
const trackerTooltip = isTracker ? `
-
已知跟踪器
-
名称: ${trackerInfo.name}
-
类别: ${trackersDatabase.categories[trackerInfo.categoryId] || '未知'}
- ${trackerInfo.url ? `
` : ''}
- ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
+
已知跟踪器
+
名称: ${trackerInfo.name || '未知'}
+
类别: ${trackerInfo.categoryId && trackersDatabase && trackersDatabase.categories ? trackersDatabase.categories[trackerInfo.categoryId] : '未知'}
+ ${trackerInfo.url ? `
` : ''}
+ ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
` : '';
@@ -1466,14 +969,15 @@ async function updateTopBlockedTable(domains) {
trackerIconContainers.forEach(container => {
const tooltip = container.querySelector('.tracker-tooltip');
if (tooltip) {
- tooltip.style.display = 'none';
+ // 移除内联样式,使用CSS类控制显示
+ tooltip.removeAttribute('style');
container.addEventListener('mouseenter', () => {
- tooltip.style.display = 'block';
+ tooltip.classList.add('visible');
});
container.addEventListener('mouseleave', () => {
- tooltip.style.display = 'none';
+ tooltip.classList.remove('visible');
});
}
});
@@ -1839,11 +1343,11 @@ async function updateTopDomainsTable(domains) {
// 构建跟踪器浮窗内容
const trackerTooltip = isTracker ? `
-
已知跟踪器
-
名称: ${trackerInfo.name}
-
类别: ${trackersDatabase.categories[trackerInfo.categoryId] || '未知'}
- ${trackerInfo.url ? `
` : ''}
- ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
+
已知跟踪器
+
名称: ${trackerInfo.name || '未知'}
+
类别: ${trackerInfo.categoryId && trackersDatabase && trackersDatabase.categories ? trackersDatabase.categories[trackerInfo.categoryId] : '未知'}
+ ${trackerInfo.url ? `
` : ''}
+ ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
` : '';
@@ -1888,34 +1392,41 @@ async function updateTopDomainsTable(domains) {
trackerIconContainers.forEach(container => {
const tooltip = container.querySelector('.tracker-tooltip');
if (tooltip) {
- tooltip.style.display = 'none';
+ // 移除内联样式,使用CSS类控制显示
+ tooltip.removeAttribute('style');
container.addEventListener('mouseenter', () => {
- tooltip.style.display = 'block';
+ tooltip.classList.add('visible');
});
container.addEventListener('mouseleave', () => {
- tooltip.style.display = 'none';
+ tooltip.classList.remove('visible');
});
}
});
}
// 当前选中的时间范围
-let currentTimeRange = '30d'; // 默认为30天
-let isMixedView = true; // 是否为混合视图 - 默认显示混合视图
-let lastSelectedIndex = 2; // 最后选中的按钮索引,30天是第三个按钮
+let currentTimeRange = '24h'; // 默认为24小时
+let lastSelectedIndex = 0; // 最后选中的按钮索引,24小时是第一个按钮
// 详细图表专用变量
-let detailedCurrentTimeRange = '30d'; // 详细图表当前时间范围
-let detailedIsMixedView = false; // 详细图表是否为混合视图
+let detailedCurrentTimeRange = '24h'; // 详细图表当前时间范围
// 初始化时间范围切换
function initTimeRangeToggle() {
console.log('初始化时间范围切换');
// 查找所有可能的时间范围按钮类名
- const timeRangeButtons = document.querySelectorAll('.time-range-btn, .time-range-button, .timerange-btn, button[data-range]');
- console.log('找到时间范围按钮数量:', timeRangeButtons.length);
+ const allTimeRangeButtons = document.querySelectorAll('.time-range-btn, .time-range-button, .timerange-btn, button[data-range]');
+
+ // 排除图表模态框内的按钮
+ const chartModal = document.getElementById('chart-modal');
+ const timeRangeButtons = Array.from(allTimeRangeButtons).filter(button => {
+ // 检查按钮是否是图表模态框的后代
+ return !chartModal || !chartModal.contains(button);
+ });
+
+ console.log('找到时间范围按钮数量:', timeRangeButtons.length, '排除了图表模态框内的按钮');
if (timeRangeButtons.length === 0) {
console.warn('未找到时间范围按钮,请检查HTML中的类名');
@@ -1941,12 +1452,6 @@ function initTimeRangeToggle() {
hover: ['hover:bg-purple-100'],
active: ['bg-purple-500', 'text-white'],
activeHover: ['hover:bg-purple-400'] // 选中时的浅色悬停
- },
- { // 混合视图按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-gray-200'],
- active: ['bg-gray-500', 'text-white'],
- activeHover: ['hover:bg-gray-400'] // 选中时的浅色悬停
}
];
@@ -1974,9 +1479,6 @@ function initTimeRangeToggle() {
console.log('点击按钮:', button.textContent.trim(), '索引:', index);
- // 检查是否是再次点击已选中的按钮
- const isActive = button.classList.contains('active');
-
// 重置所有按钮为非选中状态
timeRangeButtons.forEach((btn, btnIndex) => {
const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
@@ -1991,49 +1493,34 @@ function initTimeRangeToggle() {
btn.classList.add(...btnStyle.hover);
});
- if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
- // 切换到混合视图
- isMixedView = true;
- currentTimeRange = 'mixed';
- console.log('切换到混合视图');
-
- // 设置当前按钮为特殊混合视图状态(保持原按钮选中但添加混合视图标记)
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
+ // 普通选中模式
+ lastSelectedIndex = index;
+
+ // 设置当前按钮为激活状态
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
+
+ // 获取并更新当前时间范围
+ let rangeValue;
+ if (button.dataset.range) {
+ rangeValue = button.dataset.range;
} else {
- // 普通选中模式
- isMixedView = false;
- lastSelectedIndex = index;
-
- // 设置当前按钮为激活状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
-
- // 获取并更新当前时间范围
- let rangeValue;
- if (button.dataset.range) {
- rangeValue = button.dataset.range;
+ const btnText = button.textContent.trim();
+ if (btnText.includes('24')) {
+ rangeValue = '24h';
+ } else if (btnText.includes('7')) {
+ rangeValue = '7d';
+ } else if (btnText.includes('30')) {
+ rangeValue = '30d';
} else {
- const btnText = button.textContent.trim();
- if (btnText.includes('24')) {
- rangeValue = '24h';
- } else if (btnText.includes('7')) {
- rangeValue = '7d';
- } else if (btnText.includes('30')) {
- rangeValue = '30d';
- } else {
- rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
- }
+ rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
}
- currentTimeRange = rangeValue;
- console.log('更新时间范围为:', currentTimeRange);
}
+ currentTimeRange = rangeValue;
+ console.log('更新时间范围为:', currentTimeRange);
// 重新加载数据
loadDashboardData();
@@ -2044,10 +1531,10 @@ function initTimeRangeToggle() {
// 移除自定义鼠标悬停提示效果
});
- // 确保默认选中30天按钮并显示混合内容
+ // 确保默认选中24小时按钮
if (timeRangeButtons.length > 0) {
- // 选择30天按钮(索引为2),如果不存在则使用第一个按钮
- const defaultButtonIndex = 2;
+ // 选择24小时按钮(索引为0),如果不存在则使用第一个按钮
+ const defaultButtonIndex = 0;
const defaultButton = timeRangeButtons[defaultButtonIndex] || timeRangeButtons[0];
const defaultStyle = buttonStyles[defaultButtonIndex % buttonStyles.length] || buttonStyles[0];
@@ -2061,17 +1548,16 @@ function initTimeRangeToggle() {
btn.classList.add(...btnStyle.hover);
});
- // 然后设置30天按钮为激活状态,并标记为混合视图
+ // 然后设置24小时按钮为激活状态
defaultButton.classList.remove(...defaultStyle.normal);
defaultButton.classList.remove(...defaultStyle.hover);
- defaultButton.classList.add('active', 'mixed-view-active');
+ defaultButton.classList.add('active');
defaultButton.classList.add(...defaultStyle.active);
defaultButton.classList.add(...defaultStyle.activeHover);
- console.log('默认选中30天按钮并显示混合内容:', defaultButton.textContent.trim());
+ console.log('默认选中24小时按钮:', defaultButton.textContent.trim());
- // 设置默认显示混合内容
- isMixedView = true;
- currentTimeRange = 'mixed';
+ // 设置默认时间范围为24小时
+ currentTimeRange = '24h';
}
}
@@ -2091,62 +1577,128 @@ function initCharts() {
data: {
labels: ['正常解析', '被屏蔽', '错误'],
datasets: [{
- data: ['---', '---', '---'],
- backgroundColor: ['#00B42A', '#F53F3F', '#FF7D00'],
- borderWidth: 2, // 添加边框宽度,增强区块分隔
- borderColor: '#fff', // 白色边框,使各个扇区更清晰
- hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
- hoverBorderWidth: 3 // 悬停时增加边框宽度
+ data: [0, 0, 0],
+ backgroundColor: ['#34D399', '#EF4444', '#F59E0B'], // 优化的现代化配色
+ borderWidth: 3, // 增加边框宽度,增强区块分隔
+ borderColor: '#FFFFFF', // 白色边框,使各个扇区更清晰
+ hoverOffset: 15, // 增加悬停偏移效果,增强交互体验
+ hoverBorderWidth: 4, // 悬停时增加边框宽度
+ hoverBackgroundColor: ['#10B981', '#DC2626', '#D97706'], // 悬停时的深色效果
+ borderRadius: 10, // 添加圆角效果,增强现代感
+ borderSkipped: false // 显示所有边框
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
- // 添加全局动画配置,确保图表创建和更新时都平滑过渡
+ // 简化动画,提高性能
animation: {
- duration: 500, // 延长动画时间,使过渡更平滑
- easing: 'easeInOutQuart'
+ duration: 300, // 缩短动画时间
+ easing: 'easeOutQuart', // 简化缓动函数
+ animateRotate: true, // 仅保留旋转动画
+ animateScale: false // 禁用缩放动画
},
plugins: {
legend: {
position: 'bottom',
+ align: 'center',
labels: {
- boxWidth: 12, // 减小图例框的宽度
+ boxWidth: 12, // 调整图例框的宽度
font: {
- size: 11 // 减小字体大小
+ size: 11, // 调整字体大小
+ family: 'Inter, system-ui, sans-serif', // 使用现代字体
+ weight: 500 // 字体粗细
},
- padding: 10 // 减小内边距
+ padding: 12, // 调整内边距
+ lineHeight: 1.5, // 调整行高
+ usePointStyle: true, // 使用点样式代替方形图例,节省空间
+ pointStyle: 'circle', // 使用圆形点样式
+ color: '#4B5563', // 图例文本颜色
+ generateLabels: function(chart) {
+ // 自定义图例生成,添加更多样式控制
+ const data = chart.data;
+ if (data.labels.length && data.datasets.length) {
+ return data.labels.map((label, i) => {
+ const dataset = data.datasets[0];
+ return {
+ text: label,
+ fillStyle: dataset.backgroundColor[i],
+ strokeStyle: dataset.borderColor,
+ lineWidth: dataset.borderWidth,
+ pointStyle: 'circle',
+ hidden: !chart.isDatasetVisible(0),
+ index: i
+ };
+ });
+ }
+ return [];
+ }
}
},
tooltip: {
enabled: true,
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
- padding: 10,
+ backgroundColor: 'rgba(17, 24, 39, 0.9)', // 深背景,增强可读性
+ padding: 12, // 增加内边距
titleFont: {
- size: 12
+ size: 13, // 标题字体大小
+ family: 'Inter, system-ui, sans-serif',
+ weight: 600
},
bodyFont: {
- size: 11
+ size: 12, // 正文字体大小
+ family: 'Inter, system-ui, sans-serif'
},
+ bodySpacing: 6, // 正文行间距
+ displayColors: true, // 显示颜色指示器
callbacks: {
label: function(context) {
const label = context.label || '';
const value = context.raw || 0;
- const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
+ const total = context.dataset.data.reduce((acc, val) => acc + val, 0);
const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
return `${label}: ${value} (${percentage}%)`;
+ },
+ afterLabel: function(context) {
+ // 可以添加额外的信息
}
- }
+ },
+ cornerRadius: 8, // 圆角
+ boxPadding: 6, // 盒子内边距
+ borderColor: 'rgba(255, 255, 255, 0.2)', // 边框颜色
+ borderWidth: 1 // 边框宽度
+ },
+ title: {
+ display: false // 不显示标题,由HTML标题代替
}
},
- cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
- // 添加线段指示相关配置
+ cutout: '70%', // 调整中心空白区域比例,增强现代感
+ // 增强元素配置
elements: {
arc: {
- // 确保圆弧绘制时有足够的精度
borderAlign: 'center',
- tension: 0.1 // 添加轻微的张力,使圆弧更平滑
+ tension: 0.1, // 添加轻微的张力,使圆弧更平滑
+ borderWidth: 3 // 统一边框宽度
}
+ },
+ layout: {
+ padding: {
+ top: 20, // 增加顶部内边距
+ right: 20,
+ bottom: 30, // 增加底部内边距,为图例预留更多空间
+ left: 20
+ }
+ },
+ // 添加交互配置
+ interaction: {
+ mode: 'nearest', // 交互模式
+ axis: 'x', // 交互轴
+ intersect: false // 不要求精确相交
+ },
+ // 增强悬停效果
+ hover: {
+ mode: 'nearest',
+ intersect: true,
+ animationDuration: 300 // 悬停动画持续时间
}
}
});
@@ -2165,60 +1717,145 @@ function initCharts() {
datasets: [{
data: [1],
backgroundColor: [queryTypeColors[0]],
- borderWidth: 2, // 添加边框宽度,增强区块分隔
+ borderWidth: 3, // 增加边框宽度,增强区块分隔
borderColor: '#fff', // 白色边框,使各个扇区更清晰
- hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
- hoverBorderWidth: 3 // 悬停时增加边框宽度
+ hoverOffset: 15, // 增加悬停偏移效果,增强交互体验
+ hoverBorderWidth: 4, // 悬停时增加边框宽度
+ hoverBackgroundColor: queryTypeColors.map(color => {
+ // 生成悬停时的深色效果
+ const hex = color.replace('#', '');
+ const r = parseInt(hex.substring(0, 2), 16);
+ const g = parseInt(hex.substring(2, 4), 16);
+ const b = parseInt(hex.substring(4, 6), 16);
+ return `rgb(${Math.max(0, r - 20)}, ${Math.max(0, g - 20)}, ${Math.max(0, b - 20)})`;
+ }),
+ borderRadius: 10, // 添加圆角效果,增强现代感
+ borderSkipped: false // 显示所有边框
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
- // 添加全局动画配置,确保图表创建和更新时都平滑过渡
+ // 简化动画,提高性能
animation: {
- duration: 300,
- easing: 'easeInOutQuart'
+ duration: 300, // 缩短动画时间
+ easing: 'easeOutQuart', // 简化缓动函数
+ animateRotate: true, // 仅保留旋转动画
+ animateScale: false // 禁用缩放动画
},
plugins: {
legend: {
position: 'bottom',
+ align: 'center',
labels: {
- boxWidth: 12, // 减小图例框的宽度
+ boxWidth: 12, // 调整图例框的宽度
font: {
- size: 11 // 减小字体大小
+ size: 11, // 调整字体大小
+ family: 'Inter, system-ui, sans-serif', // 使用现代字体
+ weight: 500 // 字体粗细
},
- padding: 10 // 减小内边距
+ padding: 12, // 调整内边距
+ lineHeight: 1.5, // 调整行高
+ usePointStyle: true, // 使用点样式代替方形图例,节省空间
+ pointStyle: 'circle', // 使用圆形点样式
+ color: '#4B5563', // 图例文本颜色
+ generateLabels: function(chart) {
+ // 自定义图例生成,添加更多样式控制
+ const data = chart.data;
+ if (data.labels.length && data.datasets.length) {
+ return data.labels.map((label, i) => {
+ const dataset = data.datasets[0];
+ return {
+ text: label,
+ fillStyle: dataset.backgroundColor[i],
+ strokeStyle: dataset.borderColor,
+ lineWidth: dataset.borderWidth,
+ pointStyle: 'circle',
+ hidden: !chart.isDatasetVisible(0),
+ index: i
+ };
+ });
+ }
+ return [];
+ },
+ // 启用图例点击交互
+ onClick: function(event, legendItem, legend) {
+ // 切换对应数据的显示
+ const index = legendItem.index;
+ const ci = legend.chart;
+ ci.toggleDataVisibility(index);
+ ci.update();
+ },
+ // 图例悬停样式
+ fontColor: '#4B5563',
+ usePointStyle: true,
+ pointStyle: 'circle'
}
},
tooltip: {
enabled: true,
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
- padding: 10,
+ backgroundColor: 'rgba(17, 24, 39, 0.9)', // 深背景,增强可读性
+ padding: 12, // 增加内边距
titleFont: {
- size: 12
+ size: 13, // 标题字体大小
+ family: 'Inter, system-ui, sans-serif',
+ weight: 600
},
bodyFont: {
- size: 11
+ size: 12, // 正文字体大小
+ family: 'Inter, system-ui, sans-serif'
},
+ bodySpacing: 6, // 正文行间距
+ displayColors: true, // 显示颜色指示器
callbacks: {
label: function(context) {
const label = context.label || '';
const value = context.raw || 0;
- const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
+ const total = context.dataset.data.reduce((acc, val) => acc + val, 0);
const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
return `${label}: ${value} (${percentage}%)`;
+ },
+ afterLabel: function(context) {
+ // 可以添加额外的信息
}
- }
+ },
+ cornerRadius: 8, // 圆角
+ boxPadding: 6, // 盒子内边距
+ borderColor: 'rgba(255, 255, 255, 0.2)', // 边框颜色
+ borderWidth: 1 // 边框宽度
+ },
+ title: {
+ display: false // 不显示标题,由HTML标题代替
}
},
- cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
- // 添加线段指示相关配置
+ cutout: '70%', // 调整中心空白区域比例,增强现代感
+ // 增强元素配置
elements: {
arc: {
- // 确保圆弧绘制时有足够的精度
borderAlign: 'center',
- tension: 0.1 // 添加轻微的张力,使圆弧更平滑
+ tension: 0.1, // 添加轻微的张力,使圆弧更平滑
+ borderWidth: 3 // 统一边框宽度
}
+ },
+ layout: {
+ padding: {
+ top: 20, // 增加顶部内边距
+ right: 20,
+ bottom: 30, // 增加底部内边距,为图例预留更多空间
+ left: 20
+ }
+ },
+ // 添加交互配置
+ interaction: {
+ mode: 'nearest', // 交互模式
+ axis: 'x', // 交互轴
+ intersect: false // 不要求精确相交
+ },
+ // 增强悬停效果
+ hover: {
+ mode: 'nearest',
+ intersect: true,
+ animationDuration: 300 // 悬停动画持续时间
}
}
});
@@ -2300,7 +1937,6 @@ function initDetailedTimeRangeToggle() {
// 初始化详细图表的默认状态,与主图表保持一致
detailedCurrentTimeRange = currentTimeRange;
- detailedIsMixedView = isMixedView;
// 定义按钮样式配置,与主视图保持一致
const buttonStyles = [
@@ -2321,12 +1957,6 @@ function initDetailedTimeRangeToggle() {
hover: ['hover:bg-purple-100'],
active: ['bg-purple-500', 'text-white'],
activeHover: ['hover:bg-purple-400']
- },
- { // 混合视图按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-gray-200'],
- active: ['bg-gray-500', 'text-white'],
- activeHover: ['hover:bg-gray-400']
}
];
@@ -2342,24 +1972,12 @@ function initDetailedTimeRangeToggle() {
button.classList.add('transition-colors', 'duration-200');
button.classList.add(...styleConfig.normal);
button.classList.add(...styleConfig.hover);
-
- // 如果是第一个按钮且当前是混合视图,设置为混合视图激活状态
- if (index === 0 && detailedIsMixedView) {
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
- }
});
detailedTimeRangeButtons.forEach((button, index) => {
button.addEventListener('click', () => {
const styleConfig = buttonStyles[index % buttonStyles.length];
- // 检查是否是再次点击已选中的按钮
- const isActive = button.classList.contains('active');
-
// 重置所有按钮为非选中状态
detailedTimeRangeButtons.forEach((btn, btnIndex) => {
const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
@@ -2374,48 +1992,31 @@ function initDetailedTimeRangeToggle() {
btn.classList.add(...btnStyle.hover);
});
- if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
- // 切换到混合视图
- detailedIsMixedView = true;
- detailedCurrentTimeRange = 'mixed';
- console.log('详细图表切换到混合视图');
-
- // 设置当前按钮为特殊混合视图状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
+ // 设置当前按钮为激活状态
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover);
+
+ // 获取并更新当前时间范围
+ let rangeValue;
+ if (button.dataset.range) {
+ rangeValue = button.dataset.range;
} else {
- // 普通选中模式
- detailedIsMixedView = false;
-
- // 设置当前按钮为激活状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
-
- // 获取并更新当前时间范围
- let rangeValue;
- if (button.dataset.range) {
- rangeValue = button.dataset.range;
+ const btnText = button.textContent.trim();
+ if (btnText.includes('24')) {
+ rangeValue = '24h';
+ } else if (btnText.includes('7')) {
+ rangeValue = '7d';
+ } else if (btnText.includes('30')) {
+ rangeValue = '30d';
} else {
- const btnText = button.textContent.trim();
- if (btnText.includes('24')) {
- rangeValue = '24h';
- } else if (btnText.includes('7')) {
- rangeValue = '7d';
- } else if (btnText.includes('30')) {
- rangeValue = '30d';
- } else {
- rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
- }
+ rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
}
- detailedCurrentTimeRange = rangeValue;
- console.log('详细图表更新时间范围为:', detailedCurrentTimeRange);
}
+ detailedCurrentTimeRange = rangeValue;
+ console.log('详细图表更新时间范围为:', detailedCurrentTimeRange);
// 重新绘制详细图表
drawDetailedDNSRequestsChart();
@@ -2425,7 +2026,7 @@ function initDetailedTimeRangeToggle() {
// 绘制详细的DNS请求趋势图表
function drawDetailedDNSRequestsChart() {
- console.log('绘制详细DNS请求趋势图表,时间范围:', detailedCurrentTimeRange, '混合视图:', detailedIsMixedView);
+ console.log('绘制详细DNS请求趋势图表,时间范围:', detailedCurrentTimeRange);
const ctx = document.getElementById('detailed-dns-requests-chart');
if (!ctx) {
@@ -2435,119 +2036,27 @@ function drawDetailedDNSRequestsChart() {
const chartContext = ctx.getContext('2d');
- // 混合视图配置
- const datasetsConfig = [
- { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
- { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
- { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
- ];
+ // 根据详细视图时间范围选择API函数和对应的颜色
+ let apiFunction;
+ let chartColor;
+ let chartFillColor;
- // 检查是否为混合视图
- if (detailedIsMixedView || detailedCurrentTimeRange === 'mixed') {
- console.log('渲染混合视图详细图表');
-
- // 显示图例
- const showLegend = true;
-
- // 获取所有时间范围的数据
- Promise.all(datasetsConfig.map(config =>
- config.api().catch(error => {
- console.error(`获取${config.label}数据失败:`, error);
- // 返回空数据
- const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
- return {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
- })
- )).then(results => {
- // 创建数据集
- const datasets = results.map((data, index) => ({
- label: datasetsConfig[index].label,
- data: data.data,
- borderColor: datasetsConfig[index].color,
- backgroundColor: datasetsConfig[index].fillColor,
- tension: 0.4,
- fill: false,
- borderWidth: 2
- }));
-
- // 创建或更新图表
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.data.labels = results[0].labels;
- detailedDnsRequestsChart.data.datasets = datasets;
- detailedDnsRequestsChart.options.plugins.legend.display = showLegend;
- // 使用平滑过渡动画更新图表
- detailedDnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- detailedDnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: results[0].labels,
- datasets: datasets
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: showLegend,
- position: 'top'
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制混合视图详细图表失败:', error);
- });
- } else {
- // 普通视图
- // 根据详细视图时间范围选择API函数和对应的颜色
- let apiFunction;
- let chartColor;
- let chartFillColor;
-
- switch (detailedCurrentTimeRange) {
- case '7d':
- apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
- chartFillColor = 'rgba(34, 197, 94, 0.1)';
- break;
- case '30d':
- apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
- chartFillColor = 'rgba(168, 85, 247, 0.1)';
- break;
- default: // 24h
- apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
- chartFillColor = 'rgba(59, 130, 246, 0.1)';
- }
+ switch (detailedCurrentTimeRange) {
+ case '7d':
+ apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#22c55e'; // 绿色,与7天按钮颜色一致
+ chartFillColor = 'rgba(34, 197, 94, 0.1)';
+ break;
+ case '30d':
+ apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#a855f7'; // 紫色,与30天按钮颜色一致
+ chartFillColor = 'rgba(168, 85, 247, 0.1)';
+ break;
+ default: // 24h
+ apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#3b82f6'; // 蓝色,与24小时按钮颜色一致
+ chartFillColor = 'rgba(59, 130, 246, 0.1)';
+ }
// 获取统计数据
apiFunction().then(data => {
@@ -2633,10 +2142,12 @@ function drawDetailedDNSRequestsChart() {
if (detailedDnsRequestsChart) {
detailedDnsRequestsChart.data.labels = emptyData.labels;
detailedDnsRequestsChart.data.datasets[0].data = emptyData.data;
- detailedDnsRequestsChart.update();
+ detailedDnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
}
});
- }
}
// 绘制DNS请求统计图表
@@ -2649,120 +2160,28 @@ function drawDNSRequestsChart() {
const chartContext = ctx.getContext('2d');
- // 混合视图配置
- const datasetsConfig = [
- { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
- { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
- { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
- ];
+ // 普通视图
+ // 根据当前时间范围选择API函数和对应的颜色
+ let apiFunction;
+ let chartColor;
+ let chartFillColor;
- // 检查是否为混合视图
- if (isMixedView || currentTimeRange === 'mixed') {
- console.log('渲染混合视图图表');
-
- // 显示图例
- const showLegend = true;
-
- // 获取所有时间范围的数据
- Promise.all(datasetsConfig.map(config =>
- config.api().catch(error => {
- console.error(`获取${config.label}数据失败:`, error);
- // 返回空数据而不是模拟数据
- const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
- return {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
- })
- )).then(results => {
- // 创建数据集
- const datasets = results.map((data, index) => ({
- label: datasetsConfig[index].label,
- data: data.data,
- borderColor: datasetsConfig[index].color,
- backgroundColor: datasetsConfig[index].fillColor,
- tension: 0.4,
- fill: false, // 混合视图不填充
- borderWidth: 2
- }));
-
- // 创建或更新图表
- if (dnsRequestsChart) {
- // 使用第一个数据集的标签,但确保每个数据集使用自己的数据
- dnsRequestsChart.data.labels = results[0].labels;
- dnsRequestsChart.data.datasets = datasets;
- dnsRequestsChart.options.plugins.legend.display = showLegend;
- // 使用平滑过渡动画更新图表
- dnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- dnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: results[0].labels,
- datasets: datasets
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: showLegend,
- position: 'top'
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制混合视图图表失败:', error);
- });
- } else {
- // 普通视图
- // 根据当前时间范围选择API函数和对应的颜色
- let apiFunction;
- let chartColor;
- let chartFillColor;
-
- switch (currentTimeRange) {
- case '7d':
- apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
- chartFillColor = 'rgba(34, 197, 94, 0.1)';
- break;
- case '30d':
- apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
- chartFillColor = 'rgba(168, 85, 247, 0.1)';
- break;
- default: // 24h
- apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
- chartFillColor = 'rgba(59, 130, 246, 0.1)';
- }
+ switch (currentTimeRange) {
+ case '7d':
+ apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#22c55e'; // 绿色,与7天按钮颜色一致
+ chartFillColor = 'rgba(34, 197, 94, 0.1)';
+ break;
+ case '30d':
+ apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#a855f7'; // 紫色,与30天按钮颜色一致
+ chartFillColor = 'rgba(168, 85, 247, 0.1)';
+ break;
+ default: // 24h
+ apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#3b82f6'; // 蓝色,与24小时按钮颜色一致
+ chartFillColor = 'rgba(59, 130, 246, 0.1)';
+ }
// 获取统计数据
apiFunction().then(data => {
@@ -2841,10 +2260,12 @@ function drawDNSRequestsChart() {
if (dnsRequestsChart) {
dnsRequestsChart.data.labels = emptyData.labels;
dnsRequestsChart.data.datasets[0].data = emptyData.data;
- dnsRequestsChart.update();
+ dnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
}
});
- }
}
// 更新图表数据
@@ -2860,17 +2281,17 @@ function updateCharts(stats, queryTypeStats) {
// 更新比例图表
if (ratioChart) {
- let allowed = '---', blocked = '---', error = '---';
+ let allowed = 0, blocked = 0, error = 0;
// 尝试从stats数据中提取
if (stats.dns) {
- allowed = stats.dns.Allowed || allowed;
- blocked = stats.dns.Blocked || blocked;
- error = stats.dns.Errors || error;
+ allowed = parseInt(stats.dns.Allowed) || allowed;
+ blocked = parseInt(stats.dns.Blocked) || blocked;
+ error = parseInt(stats.dns.Errors) || error;
} else if (stats.totalQueries !== undefined) {
- allowed = stats.allowedQueries || allowed;
- blocked = stats.blockedQueries || blocked;
- error = stats.errorQueries || error;
+ allowed = parseInt(stats.allowedQueries) || allowed;
+ blocked = parseInt(stats.blockedQueries) || blocked;
+ error = parseInt(stats.errorQueries) || error;
}
ratioChart.data.datasets[0].data = [allowed, blocked, error];
@@ -2995,21 +2416,7 @@ function updateStatCardCharts(stats) {
updateChartData('cpu-chart', cpuUsage);
}
- // 更新平均响应时间显示
- if (document.getElementById('avg-response-time')) {
- let avgResponseTime = null;
- // 尝试从不同的数据结构获取平均响应时间
- if (stats.dns && stats.dns.AvgResponseTime !== undefined) {
- avgResponseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- avgResponseTime = stats.avgResponseTime;
- } else if (stats.responseTime) {
- avgResponseTime = stats.responseTime;
- }
- // 保留两位小数并添加单位
- const responseTime = avgResponseTime ? avgResponseTime.toFixed(2) + 'ms' : '---';
- document.getElementById('avg-response-time').textContent = responseTime;
- }
+
// 更新规则数图表
if (statCardCharts['rules-chart']) {
@@ -3659,4 +3066,241 @@ window.addEventListener('DOMContentLoaded', () => {
clearInterval(intervalId);
}
});
-});
\ No newline at end of file
+});// 重写loadDashboardData函数,修复语法错误
+async function loadDashboardData() {
+ console.log('开始加载仪表盘数据');
+ try {
+ // 并行获取所有数据,提高加载效率
+ const [stats, queryTypeStatsResult, topBlockedDomainsResult, recentBlockedDomainsResult, topClientsResult] = await Promise.all([
+ // 获取基本统计数据
+ api.getStats().catch(error => {
+ console.error('获取基本统计数据失败:', error);
+ return null;
+ }),
+ // 获取查询类型统计数据
+ api.getQueryTypeStats().catch(() => null),
+ // 获取TOP被屏蔽域名
+ api.getTopBlockedDomains().catch(() => null),
+ // 获取最近屏蔽域名
+ api.getRecentBlockedDomains().catch(() => null),
+ // 获取TOP客户端
+ api.getTopClients().catch(() => null)
+ ]);
+
+ // 确保stats是有效的对象
+ if (!stats || typeof stats !== 'object') {
+ console.error('无效的统计数据:', stats);
+ return;
+ }
+
+ console.log('统计数据:', stats);
+
+ // 处理查询类型统计数据
+ let queryTypeStats = null;
+ if (queryTypeStatsResult) {
+ console.log('查询类型统计数据:', queryTypeStatsResult);
+ queryTypeStats = queryTypeStatsResult;
+ } else if (stats.dns && stats.dns.QueryTypes) {
+ queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
+ type,
+ count
+ }));
+ console.log('从stats中提取的查询类型统计:', queryTypeStats);
+ }
+
+ // 处理TOP被屏蔽域名
+ let topBlockedDomains = [];
+ if (topBlockedDomainsResult && Array.isArray(topBlockedDomainsResult)) {
+ topBlockedDomains = topBlockedDomainsResult;
+ console.log('TOP被屏蔽域名:', topBlockedDomains);
+ } else {
+ topBlockedDomains = [
+ { domain: 'example-blocked.com', count: 15, lastSeen: new Date().toISOString() },
+ { domain: 'ads.example.org', count: 12, lastSeen: new Date().toISOString() },
+ { domain: 'tracking.example.net', count: 8, lastSeen: new Date().toISOString() }
+ ];
+ }
+
+ // 处理最近屏蔽域名
+ let recentBlockedDomains = [];
+ if (recentBlockedDomainsResult && Array.isArray(recentBlockedDomainsResult)) {
+ recentBlockedDomains = recentBlockedDomainsResult;
+ console.log('最近屏蔽域名:', recentBlockedDomains);
+ } else {
+ recentBlockedDomains = [
+ { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() },
+ { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() }
+ ];
+ }
+
+ // 显示错误的辅助函数
+ function showError(elementId) {
+ const loadingElement = document.getElementById(elementId + '-loading');
+ const errorElement = document.getElementById(elementId + '-error');
+ if (loadingElement) loadingElement.classList.add('hidden');
+ if (errorElement) errorElement.classList.remove('hidden');
+ }
+
+ // 处理TOP客户端
+ let topClients = [];
+ if (topClientsResult && !topClientsResult.error && Array.isArray(topClientsResult) && topClientsResult.length > 0) {
+ topClients = topClientsResult;
+ console.log('TOP客户端:', topClients);
+ } else {
+ console.warn('获取TOP客户端失败或数据无效,使用模拟数据');
+ topClients = [
+ { ip: '192.168.1.100', count: 120 },
+ { ip: '192.168.1.101', count: 95 },
+ { ip: '192.168.1.102', count: 80 },
+ { ip: '192.168.1.103', count: 65 },
+ { ip: '192.168.1.104', count: 50 }
+ ];
+ showError('top-clients');
+ }
+
+ // 处理TOP域名 - 注意:这个API调用不在Promise.all中,所以需要try-catch
+ let topDomains = [];
+ try {
+ const domainsData = await api.getTopDomains();
+ console.log('TOP域名:', domainsData);
+
+ if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
+ topDomains = domainsData;
+ } else {
+ console.warn('获取TOP域名失败或数据无效,使用模拟数据');
+ topDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ showError('top-domains');
+ }
+ } catch (error) {
+ console.warn('获取TOP域名失败:', error);
+ topDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ showError('top-domains');
+ }
+
+ // 存储统计卡片历史数据,用于计算趋势
+ const getStatValue = (statPath, defaultValue = 0) => {
+ const path = statPath.split('.');
+ let value = stats;
+ for (const key of path) {
+ if (!value || typeof value !== 'object') {
+ return defaultValue;
+ }
+ value = value[key];
+ }
+ return value !== undefined ? value : defaultValue;
+ };
+
+ // 更新主页面的统计卡片数据
+ updateStatsCards(stats);
+
+ // 更新TOP客户端表格
+ updateTopClientsTable(topClients);
+
+ // 更新TOP域名表格
+ updateTopDomainsTable(topDomains);
+
+ // 更新TOP被屏蔽域名表格
+ updateTopBlockedTable(topBlockedDomains);
+
+ // 更新最近屏蔽域名表格
+ updateRecentBlockedTable(recentBlockedDomains);
+
+ // 更新图表
+ updateCharts(stats, queryTypeStats);
+
+ // 初始化或更新查询类型统计饼图
+ if (queryTypeStats) {
+ drawQueryTypeChart(queryTypeStats);
+ }
+
+ // 更新查询类型统计信息
+ if (document.getElementById('top-query-type')) {
+ const topQueryTypeElement = document.getElementById('top-query-type');
+ const topQueryTypeCountElement = document.getElementById('top-query-type-count');
+
+ // 从stats中获取查询类型统计数据
+ if (stats.dns && stats.dns.QueryTypes) {
+ const queryTypes = stats.dns.QueryTypes;
+
+ // 找出数量最多的查询类型
+ let maxCount = 0;
+ let topType = 'A';
+
+ for (const [type, count] of Object.entries(queryTypes)) {
+ const numCount = Number(count) || 0;
+ if (numCount > maxCount) {
+ maxCount = numCount;
+ topType = type;
+ }
+ }
+
+ // 更新DOM
+ if (topQueryTypeElement) {
+ topQueryTypeElement.textContent = topType;
+ }
+
+ if (topQueryTypeCountElement) {
+ topQueryTypeCountElement.textContent = formatNumber(maxCount);
+ }
+
+ // 保存到历史数据,用于计算趋势
+ window.dashboardHistoryData.prevTopQueryTypeCount = maxCount;
+ }
+ }
+
+ // 更新活跃IP信息
+ if (document.getElementById('active-ips')) {
+ const activeIPsElement = document.getElementById('active-ips');
+
+ // 从stats中获取活跃IP数
+ let activeIPs = getStatValue('dns.ActiveIPs', 0);
+
+ // 更新DOM
+ if (activeIPsElement) {
+ activeIPsElement.textContent = formatNumber(activeIPs);
+ }
+
+ // 保存到历史数据,用于计算趋势
+ window.dashboardHistoryData.prevActiveIPs = activeIPs;
+ }
+
+ // 更新平均响应时间
+ if (document.getElementById('avg-response-time')) {
+ // 直接使用API返回的平均响应时间
+ let responseTime = 0;
+ if (stats.dns && stats.dns.AvgResponseTime) {
+ responseTime = stats.dns.AvgResponseTime;
+ } else if (stats.avgResponseTime !== undefined) {
+ responseTime = stats.avgResponseTime;
+ } else if (stats.responseTime) {
+ responseTime = stats.responseTime;
+ }
+
+ if (responseTime > 0 && statCardCharts['response-time-chart']) {
+ // 限制小数位数为两位并更新图表
+ updateChartData('response-time-chart', parseFloat(responseTime).toFixed(2));
+ }
+ }
+
+ // 更新运行状态
+ updateUptime();
+
+ // 确保TOP域名数据被正确加载
+ updateTopData();
+ } catch (error) {
+ console.error('加载仪表盘数据失败:', error);
+ // 静默失败,不显示通知以免打扰用户
+ }
+}
diff --git a/static/js/logs.js b/static/js/logs.js
index 40b3dca..4a7dfd2 100644
--- a/static/js/logs.js
+++ b/static/js/logs.js
@@ -1232,11 +1232,11 @@ async function updateLogsTable(logs) {
// 构建跟踪器浮窗内容
const trackerTooltip = isTracker ? `
-
已知跟踪器
-
名称: ${trackerInfo.name}
-
类别: ${trackersDatabase.categories[trackerInfo.categoryId] || '未知'}
- ${trackerInfo.url ? `
` : ''}
- ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
+
已知跟踪器
+
名称: ${trackerInfo.name || '未知'}
+
类别: ${trackerInfo.categoryId && trackersDatabase && trackersDatabase.categories ? trackersDatabase.categories[trackerInfo.categoryId] : '未知'}
+ ${trackerInfo.url ? `
` : ''}
+ ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
` : '';
@@ -1307,14 +1307,15 @@ async function updateLogsTable(logs) {
const iconContainer = row.querySelector('.tracker-icon-container');
const tooltip = iconContainer.querySelector('.tracker-tooltip');
if (iconContainer && tooltip) {
- tooltip.style.display = 'none';
+ // 移除内联样式,使用CSS类控制显示
+ tooltip.removeAttribute('style');
iconContainer.addEventListener('mouseenter', () => {
- tooltip.style.display = 'block';
+ tooltip.classList.add('visible');
});
iconContainer.addEventListener('mouseleave', () => {
- tooltip.style.display = 'none';
+ tooltip.classList.remove('visible');
});
}
}
@@ -1945,6 +1946,17 @@ async function showLogDetailModal(log) {
`;
+ // 构建跟踪器浮窗内容
+ const trackerTooltip = isTracker ? `
+
+
已知跟踪器
+
名称: ${trackerInfo.name || '未知'}
+
类别: ${trackerInfo.categoryId && trackersDatabase && trackersDatabase.categories ? trackersDatabase.categories[trackerInfo.categoryId] : '未知'}
+ ${trackerInfo.url ? `
` : ''}
+ ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
+
+ ` : '';
+
// 跟踪器信息
const trackerDiv = document.createElement('div');
trackerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
@@ -1953,13 +1965,34 @@ async function showLogDetailModal(log) {
${isTracker ? `
-
-
${trackerInfo.name} (${trackersDatabase.categories[trackerInfo.categoryId] || '未知'})
+
+
+ ${trackerTooltip}
+
+
${trackerInfo.name} (${trackerInfo.categoryId && trackersDatabase && trackersDatabase.categories ? trackersDatabase.categories[trackerInfo.categoryId] : '未知'})
` : '无'}
`;
+ // 添加跟踪器图标悬停事件
+ if (isTracker) {
+ const iconContainer = trackerDiv.querySelector('.tracker-icon-container');
+ const tooltip = iconContainer.querySelector('.tracker-tooltip');
+ if (iconContainer && tooltip) {
+ // 移除内联样式,使用CSS类控制显示
+ tooltip.removeAttribute('style');
+
+ iconContainer.addEventListener('mouseenter', () => {
+ tooltip.classList.add('visible');
+ });
+
+ iconContainer.addEventListener('mouseleave', () => {
+ tooltip.classList.remove('visible');
+ });
+ }
+ }
+
// 解析记录
const recordsDiv = document.createElement('div');
recordsDiv.className = 'col-span-1 md:col-span-2 space-y-1';
diff --git a/static/js/main.js b/static/js/main.js
index 0e7c31e..cb44fd0 100644
--- a/static/js/main.js
+++ b/static/js/main.js
@@ -1,115 +1,5 @@
// main.js - 主脚本文件
-// 页面导航功能
-function setupNavigation() {
- // 侧边栏菜单项
- const menuItems = document.querySelectorAll('nav a');
- const contentSections = [
- document.getElementById('dashboard-content'),
- document.getElementById('shield-content'),
- document.getElementById('hosts-content'),
- document.getElementById('gfwlist-content'),
- document.getElementById('query-content'),
- document.getElementById('logs-content'),
- document.getElementById('config-content')
- ];
- const pageTitle = document.getElementById('page-title');
-
- menuItems.forEach((item, index) => {
- item.addEventListener('click', (e) => {
- // 允许浏览器自动更新地址栏中的hash,不阻止默认行为
-
- // 移动端点击菜单项后自动关闭侧边栏
- if (window.innerWidth < 768) {
- closeSidebar();
- }
- });
- });
-
- // 移动端侧边栏切换
- const toggleSidebar = document.getElementById('toggle-sidebar');
- const closeSidebarBtn = document.getElementById('close-sidebar');
- const sidebar = document.getElementById('mobile-sidebar');
- const sidebarOverlay = document.getElementById('sidebar-overlay');
-
- // 打开侧边栏函数
- function openSidebar() {
- console.log('Opening sidebar...');
- if (sidebar) {
- sidebar.classList.remove('-translate-x-full');
- sidebar.classList.add('translate-x-0');
- }
- if (sidebarOverlay) {
- sidebarOverlay.classList.remove('hidden');
- sidebarOverlay.classList.add('block');
- }
- // 防止页面滚动
- document.body.style.overflow = 'hidden';
- console.log('Sidebar opened successfully');
- }
-
- // 关闭侧边栏函数
- function closeSidebar() {
- console.log('Closing sidebar...');
- if (sidebar) {
- sidebar.classList.add('-translate-x-full');
- sidebar.classList.remove('translate-x-0');
- }
- if (sidebarOverlay) {
- sidebarOverlay.classList.add('hidden');
- sidebarOverlay.classList.remove('block');
- }
- // 恢复页面滚动
- document.body.style.overflow = '';
- console.log('Sidebar closed successfully');
- }
-
- // 切换侧边栏函数
- function toggleSidebarVisibility() {
- console.log('Toggling sidebar visibility...');
- console.log('Current sidebar classes:', sidebar ? sidebar.className : 'sidebar not found');
- if (sidebar && sidebar.classList.contains('-translate-x-full')) {
- console.log('Sidebar is hidden, opening...');
- openSidebar();
- } else {
- console.log('Sidebar is visible, closing...');
- closeSidebar();
- }
- }
-
- // 绑定切换按钮事件
- if (toggleSidebar) {
- toggleSidebar.addEventListener('click', toggleSidebarVisibility);
- }
-
- // 绑定关闭按钮事件
- if (closeSidebarBtn) {
- closeSidebarBtn.addEventListener('click', closeSidebar);
- }
-
- // 绑定遮罩层点击事件
- if (sidebarOverlay) {
- sidebarOverlay.addEventListener('click', closeSidebar);
- }
-
- // 移动端点击菜单项后自动关闭侧边栏
- menuItems.forEach(item => {
- item.addEventListener('click', () => {
- // 检查是否是移动设备视图
- if (window.innerWidth < 768) {
- closeSidebar();
- }
- });
- });
-
- // 添加键盘事件监听,按ESC键关闭侧边栏
- document.addEventListener('keydown', (e) => {
- if (e.key === 'Escape') {
- closeSidebar();
- }
- });
-}
-
// 页面初始化函数 - 根据当前hash值初始化对应页面
function initPageByHash() {
const hash = window.location.hash.substring(1);
@@ -186,41 +76,6 @@ function initPageByHash() {
}
}
-// 初始化函数
-function init() {
- // 设置导航
- setupNavigation();
-
- // 初始化页面
- initPageByHash();
-
- // 添加hashchange事件监听,处理浏览器前进/后退按钮
- window.addEventListener('hashchange', initPageByHash);
-
- // 定期更新系统状态
- setInterval(updateSystemStatus, 5000);
-}
-
-// 更新系统状态
-function updateSystemStatus() {
- fetch('/api/status')
- .then(response => response.json())
- .then(data => {
- const uptimeElement = document.getElementById('uptime');
- if (uptimeElement) {
- uptimeElement.textContent = `正常运行中 | ${formatUptime(data.uptime)}`;
- }
- })
- .catch(error => {
- console.error('更新系统状态失败:', error);
- const uptimeElement = document.getElementById('uptime');
- if (uptimeElement) {
- uptimeElement.textContent = '连接异常';
- uptimeElement.classList.add('text-danger');
- }
- });
-}
-
// 格式化运行时间
function formatUptime(milliseconds) {
// 简化版的格式化,实际使用时需要根据API返回的数据格式调整
@@ -240,6 +95,29 @@ function formatUptime(milliseconds) {
}
}
+// 更新系统状态
+function updateSystemStatus() {
+ api.getStatus()
+ .then(data => {
+ if (data.error) {
+ throw new Error(data.error);
+ }
+ const uptimeElement = document.getElementById('uptime');
+ if (uptimeElement) {
+ uptimeElement.textContent = `正常运行中 | ${formatUptime(data.uptime)}`;
+ uptimeElement.classList.remove('text-danger');
+ }
+ })
+ .catch(error => {
+ console.error('更新系统状态失败:', error);
+ const uptimeElement = document.getElementById('uptime');
+ if (uptimeElement) {
+ uptimeElement.textContent = '连接异常';
+ uptimeElement.classList.add('text-danger');
+ }
+ });
+}
+
// 账户功能 - 下拉菜单、注销和修改密码
function setupAccountFeatures() {
// 下拉菜单功能
@@ -392,6 +270,107 @@ function setupAccountFeatures() {
}
}
+// 页面导航功能
+function setupNavigation() {
+ // 侧边栏菜单项
+ const menuItems = document.querySelectorAll('nav a');
+ const pageTitle = document.getElementById('page-title');
+
+ menuItems.forEach((item, index) => {
+ item.addEventListener('click', (e) => {
+ // 允许浏览器自动更新地址栏中的hash,不阻止默认行为
+
+ // 移动端点击菜单项后自动关闭侧边栏
+ if (window.innerWidth < 768) {
+ closeSidebar();
+ }
+ });
+ });
+
+ // 移动端侧边栏切换
+ const toggleSidebar = document.getElementById('toggle-sidebar');
+ const closeSidebarBtn = document.getElementById('close-sidebar');
+ const sidebar = document.getElementById('mobile-sidebar');
+ const sidebarOverlay = document.getElementById('sidebar-overlay');
+
+ // 打开侧边栏函数
+ function openSidebar() {
+ console.log('Opening sidebar...');
+ if (sidebar) {
+ sidebar.classList.remove('-translate-x-full');
+ sidebar.classList.add('translate-x-0');
+ }
+ if (sidebarOverlay) {
+ sidebarOverlay.classList.remove('hidden');
+ sidebarOverlay.classList.add('block');
+ // 防止页面滚动
+ document.body.style.overflow = 'hidden';
+ }
+ console.log('Sidebar opened successfully');
+ }
+
+ // 关闭侧边栏函数
+ function closeSidebar() {
+ console.log('Closing sidebar...');
+ if (sidebar) {
+ sidebar.classList.add('-translate-x-full');
+ sidebar.classList.remove('translate-x-0');
+ }
+ if (sidebarOverlay) {
+ sidebarOverlay.classList.add('hidden');
+ sidebarOverlay.classList.remove('block');
+ // 恢复页面滚动
+ document.body.style.overflow = '';
+ }
+ console.log('Sidebar closed successfully');
+ }
+
+ // 切换侧边栏函数
+ function toggleSidebarVisibility() {
+ console.log('Toggling sidebar visibility...');
+ console.log('Current sidebar classes:', sidebar ? sidebar.className : 'sidebar not found');
+ if (sidebar && sidebar.classList.contains('-translate-x-full')) {
+ console.log('Sidebar is hidden, opening...');
+ openSidebar();
+ } else {
+ console.log('Sidebar is visible, closing...');
+ closeSidebar();
+ }
+ }
+
+ // 绑定切换按钮事件
+ if (toggleSidebar) {
+ toggleSidebar.addEventListener('click', toggleSidebarVisibility);
+ }
+
+ // 绑定关闭按钮事件
+ if (closeSidebarBtn) {
+ closeSidebarBtn.addEventListener('click', closeSidebar);
+ }
+
+ // 绑定遮罩层点击事件
+ if (sidebarOverlay) {
+ sidebarOverlay.addEventListener('click', closeSidebar);
+ }
+
+ // 移动端点击菜单项后自动关闭侧边栏
+ menuItems.forEach(item => {
+ item.addEventListener('click', () => {
+ // 检查是否是移动设备视图
+ if (window.innerWidth < 768) {
+ closeSidebar();
+ }
+ });
+ });
+
+ // 添加键盘事件监听,按ESC键关闭侧边栏
+ document.addEventListener('keydown', (e) => {
+ if (e.key === 'Escape') {
+ closeSidebar();
+ }
+ });
+}
+
// 初始化函数
function init() {
// 设置导航
diff --git a/static/js/shield.js b/static/js/shield.js
index a9ec599..7844320 100644
--- a/static/js/shield.js
+++ b/static/js/shield.js
@@ -1248,7 +1248,7 @@ function showNotification(message, type = 'info') {
// 创建新通知
const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
+ notification.className = `notification fixed top-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
// 设置通知样式
if (type === 'success') {
diff --git a/staticbak/static/api/css/style.css b/staticbak/static/api/css/style.css
new file mode 100644
index 0000000..e647096
--- /dev/null
+++ b/staticbak/static/api/css/style.css
@@ -0,0 +1,488 @@
+/* 基础样式 */
+ body {
+ margin: 0;
+ padding: 0;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ background-color: #ffffff;
+ color: #333333;
+ }
+
+ /* 默认浅色主题样式 */
+ .swagger-ui .topbar {
+ background-color: #2c3e50;
+ padding: 15px 0;
+ }
+
+ .swagger-ui .topbar .topbar-wrapper .link {
+ color: #ecf0f1;
+ font-size: 1.2rem;
+ }
+
+ .swagger-ui .info {
+ margin: 20px 0;
+ }
+
+ .swagger-ui .info .title {
+ font-size: 2rem;
+ margin-bottom: 10px;
+ color: #333;
+ }
+
+ .swagger-ui .info .description {
+ font-size: 1rem;
+ color: #555;
+ margin-bottom: 15px;
+ }
+
+ /* 修复服务器URL输入框样式 */
+ .swagger-ui .servers li input[type="text"] {
+ padding: 8px 12px;
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ /* 修复服务器选择区域的背景颜色和布局 */
+ .swagger-ui .servers {
+ padding: 16px;
+ width: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ }
+
+ /* 确保服务器列表容器有正确的背景色和布局 */
+ .swagger-ui .servers-wrapper {
+ width: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ }
+
+ /* 确保整个顶部区域颜色一致和布局正确 */
+ .swagger-ui .info {
+ margin: 0;
+ padding: 20px 16px;
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ /* 确保顶部主容器颜色一致和布局正确 */
+ .swagger-ui {
+ width: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ }
+
+ /* 确保API信息区域颜色一致和布局正确 */
+ .swagger-ui .info-container {
+ width: 100%;
+ box-sizing: border-box;
+ }
+ body.dark-mode .swagger-ui .servers li label {
+ color: #ffffff !important;
+ font-weight: 500 !important;
+ }
+
+ /* 修复服务器URL输入框深色模式样式 */
+ body.dark-mode .swagger-ui .servers li input[type="text"] {
+ background-color: #1a202c !important;
+ color: #ffffff !important;
+ border-color: #4a5568 !important;
+ padding: 8px 12px !important;
+ width: 100% !important;
+ }
+
+ /* 修复服务器选择区域的深色模式背景颜色和布局 */
+ body.dark-mode .swagger-ui .servers {
+ background-color: #1a202c !important;
+ border: none !important;
+ padding: 16px !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ }
+
+ /* 确保服务器列表容器在深色模式下也有正确的背景色和布局 */
+ body.dark-mode .swagger-ui .servers-wrapper {
+ background-color: #1a202c !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ }
+
+ /* 确保整个顶部区域在深色模式下颜色一致和布局正确 */
+ body.dark-mode .swagger-ui .info {
+ background-color: #1a202c !important;
+ margin: 0 !important;
+ padding: 20px 16px !important;
+ border-bottom: 1px solid #4a5568 !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ }
+
+ /* 确保顶部主容器在深色模式下颜色一致和布局正确 */
+ body.dark-mode .swagger-ui {
+ background-color: #1a202c !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
+
+ /* 确保API信息区域在深色模式下颜色一致和布局正确 */
+ body.dark-mode .swagger-ui .info-container {
+ background-color: #1a202c !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
+
+ /* 修复深色模式下内容区域的布局问题 */
+ body.dark-mode .swagger-ui .wrapper {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
+
+ /* 修复深色模式下API操作块的布局 */
+ body.dark-mode .swagger-ui .opblock {
+ margin: 0 !important;
+ padding: 0 !important;
+ width: 100% !important;
+ box-sizing: border-box !important;
+ }
+
+ /* 修复深色模式下过滤器的布局 */
+ body.dark-mode .swagger-ui .filter {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ padding: 16px !important;
+ margin: 0 !important;
+ }
+
+ /* 修复深色模式下顶部栏布局 */
+ body.dark-mode .swagger-ui .topbar {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ margin: 0 !important;
+ padding: 15px 0 !important;
+ }
+
+ /* 修复深色模式下顶部栏包装器布局 */
+ body.dark-mode .swagger-ui .topbar .topbar-wrapper {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ padding: 0 16px !important;
+ }
+
+ /* 修复深色模式下响应容器布局 */
+ body.dark-mode .swagger-ui .responses-inner {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ }
+
+ /* 修复深色模式下操作块摘要布局 */
+ body.dark-mode .swagger-ui .opblock-summary {
+ width: 100% !important;
+ box-sizing: border-box !important;
+ }
+
+ /* 确保深色模式下所有容器元素都使用box-sizing */
+ body.dark-mode * {
+ box-sizing: border-box !important;
+ }
+
+ /* 增强标签标题深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-tag {
+ color: #ffffff !important;
+ background-color: #2d3748 !important;
+ padding: 12px 16px !important;
+ border-radius: 6px !important;
+ margin-bottom: 12px !important;
+ font-weight: 700 !important;
+ font-size: 1.1rem !important;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) !important;
+ }
+
+ /* 增强标签标题(h3)深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-tag.h3 {
+ color: #ffffff !important;
+ background-color: #2d3748 !important;
+ }
+
+ /* 增强标签部分深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-tag-section {
+ background-color: #2d3748 !important;
+ padding: 16px !important;
+ border-radius: 8px !important;
+ margin-bottom: 20px !important;
+ }
+
+ /* 增强API描述深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-description-wrapper {
+ color: #ffffff !important;
+ background-color: #2d3748 !important;
+ padding: 12px 16px !important;
+ border-radius: 6px !important;
+ margin-bottom: 12px !important;
+ font-weight: 500 !important;
+ }
+
+ body.dark-mode .swagger-ui .opblock-description-wrapper p {
+ color: #ffffff !important;
+ line-height: 1.5 !important;
+ }
+
+ /* 增强stats标签描述深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-summary-description {
+ color: #ffffff !important;
+ font-weight: 500 !important;
+ }
+
+ /* 增强操作块标题深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-title_normal h4 {
+ color: #ffffff !important;
+ font-weight: 600 !important;
+ }
+
+ /* 增强参数部分深色模式样式 */
+ body.dark-mode .swagger-ui .opblock-body {
+ background-color: #2d3748 !important;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__name {
+ color: #ffffff !important;
+ font-weight: 600 !important;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__type {
+ color: #ffffff !important;
+ font-weight: 500 !important;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__description {
+ color: #ffffff !important;
+ }
+
+ body.dark-mode .swagger-ui .parameters-col_description,
+ body.dark-mode .swagger-ui .parameters-col_name,
+ body.dark-mode .swagger-ui .parameters-col_type {
+ color: #ffffff !important;
+ }
+
+ body.dark-mode .swagger-ui .parameters-col_description p,
+ body.dark-mode .swagger-ui .parameters-col_name p,
+ body.dark-mode .swagger-ui .parameters-col_type p {
+ color: #ffffff !important;
+ }
+
+ /* 新增:适配API文档展开界面的所有文字元素 */
+ body.dark-mode .swagger-ui .opblock-body {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__name {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__type {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .parameter__description {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .body-param-options {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .body-param-options .body-param-type {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .responses-inner {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .responses-inner h4 {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .response-container {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .response-container .response-wrapper {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .response-container .response-code {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .response-container .response-description {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model .property {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model .property .property-name {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model .property .property-description {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model .property .property-type {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .model .property .required {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .scroll-to-top {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-tag-section {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .servers-title {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .servers {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .servers li {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .servers li label {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .servers li select {
+ color: #ffffff;
+ background-color: #1a202c;
+ border-color: #4a5568;
+ }
+
+ body.dark-mode .swagger-ui .auth-wrapper {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .auth-wrapper .auth-title {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .auth-wrapper .auth-list {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .auth-wrapper .auth-item {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .auth-wrapper .auth-item label {
+ color: #ffffff;
+ }
+
+ /* 确保代码块内的文字也清晰可见 */
+ body.dark-mode .swagger-ui pre {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui code {
+ color: #ffffff;
+ }
+
+ /* 确保所有表单元素的文字颜色正确 */
+ body.dark-mode .swagger-ui form {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui form label {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui select {
+ color: #ffffff;
+ background-color: #1a202c;
+ border-color: #4a5568;
+ }
+
+ /* 适配可能的嵌套内容 */
+ body.dark-mode .swagger-ui .opblock-body .schema {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .schema .title {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .opblock-body .schema .required {
+ color: #ffffff;
+ }
+
+ /* 适配可能的按钮组 */
+ body.dark-mode .swagger-ui .btn-group {
+ color: #ffffff;
+ }
+
+ /* 适配可能的标签 */
+ body.dark-mode .swagger-ui .tag {
+ color: #ffffff;
+ }
+
+ /* 适配可能的警告和提示信息 */
+ body.dark-mode .swagger-ui .warning {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui .hint {
+ color: #ffffff;
+ }
+
+ /* 适配可能的表格内容 */
+ body.dark-mode .swagger-ui table {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui table th {
+ color: #ffffff;
+ }
+
+ body.dark-mode .swagger-ui table td {
+ color: #ffffff;
+ }
+
+ /* 响应式设计 */
+ @media (max-width: 768px) {
+ .topbar-controls {
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 10px;
+ }
+
+ .theme-toggle-btn {
+ padding: 6px 10px;
+ font-size: 12px;
+ }
+
+ .theme-toggle-btn span {
+ display: none;
+ }
+ }
\ No newline at end of file
diff --git a/staticbak/static/api/index.html b/staticbak/static/api/index.html
new file mode 100644
index 0000000..ebb375d
--- /dev/null
+++ b/staticbak/static/api/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
DNS Server API 文档
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/staticbak/static/api/js/index.js b/staticbak/static/api/js/index.js
new file mode 100644
index 0000000..9addc52
--- /dev/null
+++ b/staticbak/static/api/js/index.js
@@ -0,0 +1,1791 @@
+ // 定义API文档的JSON
+ const swaggerDocument = {
+ "openapi": "3.0.3",
+ "info": {
+ "title": "DNS Server API",
+ "description": "DNS服务器完整API文档,包括统计信息、Shield管理、主机管理等功能。",
+ "version": "1.2.5",
+ "contact": {
+ "name": "DNS Server 支持",
+ "email": "support@dnsserver.com"
+ },
+ "license": {
+ "name": "Apache 2.0",
+ "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+ }
+ },
+ "servers": [
+ {
+ "url": "http://localhost:8080/api",
+ "description": "本地开发服务器"
+ },
+ {
+ "url": "http://{host}:{port}/api",
+ "description": "自定义服务器",
+ "variables": {
+ "host": {
+ "default": "localhost"
+ },
+ "port": {
+ "default": "8080"
+ }
+ }
+ }
+ ],
+ "paths": {
+ "/login": {
+ "post": {
+ "summary": "用户登录",
+ "description": "使用用户名和密码登录DNS服务器API。",
+ "tags": ["auth"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "username": {"type": "string", "description": "用户名"},
+ "password": {"type": "string", "description": "密码"}
+ }
+ },
+ "example": {
+ "username": "admin",
+ "password": "admin"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "登录成功",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"},
+ "message": {"type": "string", "description": "操作信息"}
+ }
+ },
+ "example": {
+ "status": "success",
+ "message": "登录成功"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "无效的请求体"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "用户名或密码错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "用户名或密码错误"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/logout": {
+ "post": {
+ "summary": "用户注销",
+ "description": "注销当前登录的用户会话。",
+ "tags": ["auth"],
+ "responses": {
+ "200": {
+ "description": "注销成功",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"},
+ "message": {"type": "string", "description": "操作信息"}
+ }
+ },
+ "example": {
+ "status": "success",
+ "message": "注销成功"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/change-password": {
+ "post": {
+ "summary": "修改密码",
+ "description": "修改当前登录用户的密码。",
+ "tags": ["auth"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "currentPassword": {"type": "string", "description": "当前密码"},
+ "newPassword": {"type": "string", "description": "新密码"}
+ }
+ },
+ "example": {
+ "currentPassword": "admin",
+ "newPassword": "newpassword"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "密码修改成功",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"},
+ "message": {"type": "string", "description": "操作信息"}
+ }
+ },
+ "example": {
+ "status": "success",
+ "message": "密码修改成功"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "无效的请求体"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "当前密码错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "当前密码错误"
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "保存密码失败"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/stats": {
+ "get": {
+ "summary": "获取系统统计信息",
+ "description": "获取DNS服务器和Shield的详细统计信息,包括查询量、CPU使用率等。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取统计信息",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "dns": {
+ "type": "object",
+ "properties": {
+ "Queries": {"type": "integer", "description": "总查询次数"},
+ "Blocked": {"type": "integer", "description": "被阻止的查询次数"},
+ "Allowed": {"type": "integer", "description": "允许的查询次数"},
+ "Errors": {"type": "integer", "description": "错误查询次数"},
+ "LastQuery": {"type": "string", "description": "最近一次查询时间"},
+ "AvgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
+ "TotalResponseTime": {"type": "number", "description": "总响应时间(毫秒)"},
+ "QueryTypes": {"type": "object", "description": "查询类型统计"},
+ "SourceIPs": {"type": "object", "description": "来源IP统计"},
+ "CpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
+ "DNSSECQueries": {"type": "integer", "description": "DNSSEC查询次数"},
+ "DNSSECSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
+ "DNSSECFailed": {"type": "integer", "description": "DNSSEC失败次数"},
+ "DNSSECEnabled": {"type": "boolean", "description": "是否启用DNSSEC"}
+ }
+ },
+ "shield": {"type": "object", "description": "Shield统计信息"},
+ "topQueryType": {"type": "string", "description": "最常见的查询类型"},
+ "activeIPs": {"type": "integer", "description": "活跃IP数量"},
+ "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
+ "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
+ "dnssecEnabled": {"type": "boolean", "description": "是否启用DNSSEC"},
+ "dnssecQueries": {"type": "integer", "description": "DNSSEC查询次数"},
+ "dnssecSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
+ "dnssecFailed": {"type": "integer", "description": "DNSSEC失败次数"},
+ "dnssecUsage": {"type": "number", "description": "DNSSEC使用率(百分比)"},
+ "time": {"type": "string", "description": "统计时间"}
+ }
+ },
+ "examples": {
+ "default": {
+ "value": {
+ "dns": {
+ "Queries": 1250,
+ "Blocked": 230,
+ "Allowed": 1020,
+ "Errors": 0,
+ "LastQuery": "2023-07-15T14:30:45Z",
+ "AvgResponseTime": 12.5,
+ "TotalResponseTime": 15625,
+ "QueryTypes": {"A": 850, "AAAA": 250, "CNAME": 150},
+ "SourceIPs": {"192.168.1.100": 500, "192.168.1.101": 750},
+ "CpuUsage": 0.15,
+ "DNSSECQueries": 500,
+ "DNSSECSuccess": 480,
+ "DNSSECFailed": 20,
+ "DNSSECEnabled": true
+ },
+ "shield": {},
+ "topQueryType": "A",
+ "activeIPs": 2,
+ "avgResponseTime": 12.5,
+ "cpuUsage": 0.15,
+ "dnssecEnabled": true,
+ "dnssecQueries": 500,
+ "dnssecSuccess": 480,
+ "dnssecFailed": 20,
+ "dnssecUsage": 40.0,
+ "time": "2023-07-15T14:30:45Z"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "无法获取统计信息"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/top-blocked": {
+ "get": {
+ "summary": "获取TOP被阻止域名",
+ "description": "获取被阻止次数最多的域名列表。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取TOP被阻止域名",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {"type": "string", "description": "域名"},
+ "count": {"type": "integer", "description": "被阻止次数"}
+ }
+ }
+ },
+ "example": [
+ {"domain": "ad.example.com", "count": 150},
+ {"domain": "tracker.example.net", "count": 120}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/top-resolved": {
+ "get": {
+ "summary": "获取TOP已解析域名",
+ "description": "获取解析次数最多的域名列表。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取TOP已解析域名",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {"type": "string", "description": "域名"},
+ "count": {"type": "integer", "description": "解析次数"}
+ }
+ }
+ },
+ "example": [
+ {"domain": "google.com", "count": 200},
+ {"domain": "facebook.com", "count": 150}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/top-clients": {
+ "get": {
+ "summary": "获取TOP客户端",
+ "description": "获取查询量最多的客户端IP列表。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取TOP客户端",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip": {"type": "string", "description": "客户端IP地址"},
+ "count": {"type": "integer", "description": "查询次数"}
+ }
+ }
+ },
+ "example": [
+ {"ip": "192.168.1.100", "count": 500},
+ {"ip": "192.168.1.101", "count": 750}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/top-domains": {
+ "get": {
+ "summary": "获取TOP域名",
+ "description": "获取查询量最多的域名列表(包括被阻止和已解析的域名)。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取TOP域名",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {"type": "string", "description": "域名"},
+ "count": {"type": "integer", "description": "查询次数"}
+ }
+ }
+ },
+ "example": [
+ {"domain": "example.com", "count": 150},
+ {"domain": "google.com", "count": 120}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/recent-blocked": {
+ "get": {
+ "summary": "获取最近被阻止的域名",
+ "description": "获取最近被Shield阻止的域名列表。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取最近被阻止的域名",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {"type": "string", "description": "域名"},
+ "timestamp": {"type": "string", "description": "阻止时间"}
+ }
+ }
+ },
+ "example": [
+ {"domain": "ad.example.com", "timestamp": "2023-07-15T14:30:45Z"},
+ {"domain": "tracker.example.net", "timestamp": "2023-07-15T14:29:30Z"}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/hourly-stats": {
+ "get": {
+ "summary": "获取小时统计",
+ "description": "获取按小时统计的DNS查询数据。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取小时统计",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "labels": {"type": "array", "items": {"type": "string"}, "description": "小时标签"},
+ "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
+ }
+ },
+ "example": {
+ "labels": ["15:00", "16:00", "17:00"],
+ "data": [120, 90, 150]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/daily-stats": {
+ "get": {
+ "summary": "获取每日统计",
+ "description": "获取最近7天的DNS查询统计数据。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取每日统计",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
+ "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
+ }
+ },
+ "example": {
+ "labels": ["01-02", "01-03", "01-04"],
+ "data": [2500, 2700, 2300]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/monthly-stats": {
+ "get": {
+ "summary": "获取每月统计",
+ "description": "获取最近30天的DNS查询统计数据。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取每月统计",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
+ "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
+ }
+ },
+ "example": {
+ "labels": ["01-01", "01-02", "01-03"],
+ "data": [2500, 2700, 2300]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/query/type": {
+ "get": {
+ "summary": "获取查询类型统计",
+ "description": "获取DNS查询类型的详细统计信息。",
+ "tags": ["stats"],
+ "responses": {
+ "200": {
+ "description": "成功获取查询类型统计",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "type": {"type": "string", "description": "查询类型"},
+ "count": {"type": "integer", "description": "查询次数"}
+ }
+ }
+ },
+ "example": [
+ {"type": "A", "count": 850},
+ {"type": "AAAA", "count": 250},
+ {"type": "CNAME", "count": 150}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/logs/stats": {
+ "get": {
+ "summary": "获取日志统计信息",
+ "description": "获取DNS查询日志的统计信息。",
+ "tags": ["logs"],
+ "responses": {
+ "200": {
+ "description": "成功获取日志统计信息",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "description": "日志统计信息"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/logs/query": {
+ "get": {
+ "summary": "查询日志",
+ "description": "根据条件查询DNS查询日志。",
+ "tags": ["logs"],
+ "parameters": [
+ {
+ "name": "limit",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 100
+ },
+ "description": "返回结果数量限制"
+ },
+ {
+ "name": "offset",
+ "in": "query",
+ "schema": {
+ "type": "integer",
+ "default": 0
+ },
+ "description": "结果偏移量"
+ },
+ {
+ "name": "sort",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "排序字段"
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "排序方向"
+ },
+ {
+ "name": "result",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "查询结果过滤"
+ },
+ {
+ "name": "search",
+ "in": "query",
+ "schema": {
+ "type": "string"
+ },
+ "description": "搜索关键词"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "成功查询日志",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "description": "日志条目"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/logs/count": {
+ "get": {
+ "summary": "获取日志总数",
+ "description": "获取DNS查询日志的总数。",
+ "tags": ["logs"],
+ "responses": {
+ "200": {
+ "description": "成功获取日志总数",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "count": {"type": "integer", "description": "日志总数"}
+ }
+ },
+ "example": {
+ "count": 1000
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/shield": {
+ "get": {
+ "summary": "获取Shield配置和统计信息",
+ "description": "获取Shield的配置信息和规则统计,包括更新间隔、屏蔽方法、黑名单数量等。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功获取配置和统计信息",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "updateInterval": {"type": "integer", "description": "更新间隔(秒)"},
+ "blockMethod": {"type": "string", "description": "屏蔽方法"},
+ "blacklistCount": {"type": "integer", "description": "黑名单数量"},
+ "domainRulesCount": {"type": "integer", "description": "域名规则数量"},
+ "domainExceptionsCount": {"type": "integer", "description": "域名例外规则数量"},
+ "regexRulesCount": {"type": "integer", "description": "正则规则数量"},
+ "regexExceptionsCount": {"type": "integer", "description": "正则例外规则数量"},
+ "hostsRulesCount": {"type": "integer", "description": "Hosts规则数量"}
+ }
+ },
+ "example": {
+ "updateInterval": 3600,
+ "blockMethod": "NXDOMAIN",
+ "blacklistCount": 4,
+ "domainRulesCount": 1000,
+ "domainExceptionsCount": 100,
+ "regexRulesCount": 50,
+ "regexExceptionsCount": 10,
+ "hostsRulesCount": 200
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "无法获取Shield配置"}
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "summary": "添加屏蔽规则",
+ "description": "添加新的屏蔽规则到Shield。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "rule": {"type": "string", "description": "屏蔽规则"}
+ }
+ },
+ "example": {
+ "rule": "example.com"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功添加规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "参数格式错误"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "添加规则失败"}
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "summary": "删除屏蔽规则",
+ "description": "从Shield中删除指定的屏蔽规则。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "rule": {"type": "string", "description": "要删除的屏蔽规则"}
+ }
+ },
+ "example": {
+ "rule": "example.com"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功删除规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "参数格式错误"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "删除规则失败"}
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "summary": "重新加载规则",
+ "description": "重新加载和应用Shield规则。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功重新加载规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"},
+ "message": {"type": "string", "description": "操作信息"}
+ }
+ },
+ "example": {
+ "status": "success",
+ "message": "规则重新加载成功"
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "重新加载规则失败"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/shield/blacklists": {
+ "get": {
+ "summary": "获取黑名单列表",
+ "description": "获取Shield的黑名单列表,包括内置黑名单和自定义黑名单。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功获取黑名单列表",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {"type": "string", "description": "黑名单名称"},
+ "url": {"type": "string", "description": "黑名单URL"},
+ "enabled": {"type": "boolean", "description": "是否启用"},
+ "lastUpdate": {"type": "string", "description": "最后更新时间"},
+ "status": {"type": "string", "description": "状态"},
+ "rulesCount": {"type": "integer", "description": "规则数量"}
+ }
+ }
+ },
+ "example": [
+ {
+ "name": "AdBlock List",
+ "url": "https://example.com/ads.txt",
+ "enabled": true,
+ "lastUpdate": "2023-07-15T10:00:00Z",
+ "status": "active",
+ "rulesCount": 1500
+ }
+ ]
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "获取黑名单列表失败"}
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "summary": "添加黑名单",
+ "description": "添加新的黑名单URL到Shield。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": ["name", "url"],
+ "properties": {
+ "name": {"type": "string", "description": "黑名单名称"},
+ "url": {"type": "string", "description": "黑名单URL"},
+ "enabled": {"type": "boolean", "description": "是否启用", "default": true}
+ }
+ },
+ "example": {
+ "name": "AdBlock List",
+ "url": "https://example.com/ads.txt",
+ "enabled": true
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功添加黑名单",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "名称和URL为必填项"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "添加黑名单失败"}
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "summary": "更新黑名单列表(包括启用/禁用状态)",
+ "description": "更新黑名单列表(包括启用/禁用状态)。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "blacklists": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {"type": "string", "description": "黑名单名称"},
+ "url": {"type": "string", "description": "黑名单URL"},
+ "enabled": {"type": "boolean", "description": "是否启用"}
+ }
+ }
+ }
+ }
+ },
+ "example": {
+ "blacklists": [
+ {
+ "name": "AdBlock List",
+ "url": "https://example.com/ads.txt",
+ "enabled": true
+ }
+ ]
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功更新黑名单列表",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "无效的请求体"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "更新黑名单列表失败"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/shield/localrules": {
+ "get": {
+ "summary": "获取自定义规则",
+ "description": "获取Shield的自定义规则列表。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功获取自定义规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {"type": "string", "description": "规则ID"},
+ "pattern": {"type": "string", "description": "规则模式"},
+ "description": {"type": "string", "description": "规则描述"}
+ }
+ }
+ },
+ "example": [
+ {"id": "1", "pattern": ".*malware.*", "description": "恶意软件域名"}
+ ]
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "summary": "添加自定义规则",
+ "description": "添加新的自定义规则。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "pattern": {"type": "string", "description": "规则模式"},
+ "description": {"type": "string", "description": "规则描述"}
+ }
+ },
+ "example": {
+ "pattern": ".*ad\.com$",
+ "description": "广告域名"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功添加规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "summary": "删除自定义规则",
+ "description": "删除指定的自定义规则。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "规则ID"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "成功删除规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/shield/remoterules": {
+ "get": {
+ "summary": "获取远程规则状态",
+ "description": "获取远程规则的更新状态和版本信息。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功获取远程规则",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {"type": "string", "description": "规则ID"},
+ "pattern": {"type": "string", "description": "规则模式"},
+ "source": {"type": "string", "description": "规则来源"}
+ }
+ }
+ },
+ "example": [
+ {"id": "1001", "pattern": ".*phishing.*", "source": "malwarelist"}
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "/shield/hosts": {
+ "get": {
+ "summary": "获取hosts内容",
+ "description": "获取当前的hosts文件内容。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "responses": {
+ "200": {
+ "description": "成功获取hosts列表",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip": {"type": "string", "description": "IP地址"},
+ "domain": {"type": "string", "description": "域名"}
+ }
+ }
+ },
+ "example": [
+ {"ip": "127.0.0.1", "domain": "localhost"}
+ ]
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "summary": "添加hosts记录",
+ "description": "添加新的hosts记录。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": ["ip", "domain"],
+ "properties": {
+ "ip": {"type": "string", "description": "IP地址"},
+ "domain": {"type": "string", "description": "域名"}
+ }
+ },
+ "example": {
+ "ip": "127.0.0.1",
+ "domain": "example.com"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功添加hosts记录",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "IP和域名是必填项"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "添加hosts记录失败"}
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "summary": "删除hosts记录",
+ "description": "删除指定域名的hosts记录。",
+ "deprecated": false,
+ "tags": ["shield"],
+ "parameters": [
+ {
+ "name": "domain",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "description": "要删除的域名"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "成功删除hosts记录",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "域名是必填项"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "删除hosts记录失败"}
+ }
+ }
+ }
+ }
+ }
+ },
+ "/dns/query": {
+ "post": {
+ "summary": "查询DNS记录",
+ "description": "查询指定域名的DNS记录,可以指定记录类型。",
+ "tags": ["dns"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "description": "要查询的域名"
+ },
+ "recordType": {
+ "type": "string",
+ "description": "DNS记录类型(如A、AAAA、MX、NS等)"
+ }
+ },
+ "required": ["domain"]
+ },
+ "example": {
+ "domain": "example.com",
+ "recordType": "A"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功获取DNS记录",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "Type": {
+ "type": "string",
+ "description": "DNS记录类型"
+ },
+ "Value": {
+ "type": "string",
+ "description": "DNS记录值"
+ },
+ "TTL": {
+ "type": "integer",
+ "description": "生存时间"
+ },
+ "Preference": {
+ "type": "integer",
+ "description": "MX记录优先级"
+ }
+ }
+ }
+ },
+ "example": [
+ {"Type": "A", "Value": "93.184.216.34", "TTL": 172800},
+ {"Type": "A", "Value": "93.184.216.35", "TTL": 172800}
+ ]
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {
+ "type": "string",
+ "description": "错误信息"
+ }
+ }
+ },
+ "example": {
+ "error": "Domain parameter is required"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/status": {
+ "get": {
+ "summary": "获取服务器状态",
+ "description": "获取DNS服务器的状态信息,包括查询统计、运行时间等。",
+ "tags": ["server"],
+ "responses": {
+ "200": {
+ "description": "成功获取服务器状态",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "服务器状态"},
+ "queries": {"type": "integer", "description": "总查询次数"},
+ "blocked": {"type": "integer", "description": "被阻止的查询次数"},
+ "allowed": {"type": "integer", "description": "允许的查询次数"},
+ "errors": {"type": "integer", "description": "错误查询次数"},
+ "lastQuery": {"type": "string", "description": "最近一次查询时间"},
+ "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
+ "activeIPs": {"type": "integer", "description": "活跃IP数量"},
+ "startTime": {"type": "string", "description": "服务器启动时间"},
+ "uptime": {"type": "integer", "description": "运行时间(毫秒)"},
+ "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
+ "timestamp": {"type": "string", "description": "当前时间"}
+ }
+ },
+ "example": {
+ "status": "running",
+ "queries": 1250,
+ "blocked": 230,
+ "allowed": 1020,
+ "errors": 0,
+ "lastQuery": "2023-07-15T14:30:45Z",
+ "avgResponseTime": 12.5,
+ "activeIPs": 2,
+ "startTime": "2023-07-15T10:00:00Z",
+ "uptime": 16200000,
+ "cpuUsage": 0.15,
+ "timestamp": "2023-07-15T14:30:45Z"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/config": {
+ "get": {
+ "summary": "获取服务器配置",
+ "description": "获取DNS服务器的配置信息,包括Shield配置。",
+ "tags": ["server"],
+ "responses": {
+ "200": {
+ "description": "成功获取服务器配置",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "shield": {
+ "type": "object",
+ "properties": {
+ "blockMethod": {"type": "string", "description": "屏蔽方法"},
+ "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
+ "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
+ "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
+ }
+ }
+ }
+ },
+ "example": {
+ "shield": {
+ "blockMethod": "NXDOMAIN",
+ "customBlockIP": "",
+ "blacklists": [
+ {
+ "name": "AdGuard DNS filter",
+ "url": "https://example.com/ads.txt",
+ "enabled": true
+ }
+ ],
+ "updateInterval": 3600
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "summary": "更新服务器配置",
+ "description": "更新DNS服务器的配置信息,包括Shield配置。",
+ "tags": ["server"],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "shield": {
+ "type": "object",
+ "properties": {
+ "blockMethod": {"type": "string", "description": "屏蔽方法"},
+ "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
+ "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
+ "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
+ }
+ }
+ }
+ },
+ "example": {
+ "shield": {
+ "blockMethod": "NXDOMAIN",
+ "customBlockIP": "",
+ "blacklists": [
+ {
+ "name": "AdGuard DNS filter",
+ "url": "https://example.com/ads.txt",
+ "enabled": true
+ }
+ ],
+ "updateInterval": 3600
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "成功更新服务器配置",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "success": {"type": "boolean", "description": "是否成功"},
+ "message": {"type": "string", "description": "操作信息"}
+ }
+ },
+ "example": {
+ "success": true,
+ "message": "配置已更新"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "请求参数错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "无效的请求体"
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {
+ "error": "保存配置失败"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/config/restart": {
+ "post": {
+ "summary": "重启服务器",
+ "description": "重启DNS服务器。",
+ "tags": ["server"],
+ "responses": {
+ "200": {
+ "description": "成功重启服务器",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "status": {"type": "string", "description": "操作状态"}
+ }
+ },
+ "example": {"status": "success"}
+ }
+ }
+ },
+ "500": {
+ "description": "服务器内部错误",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "error": {"type": "string", "description": "错误信息"}
+ }
+ },
+ "example": {"error": "重启服务器失败"}
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "auth",
+ "description": "认证相关API"
+ },
+ {
+ "name": "stats",
+ "description": "统计相关API"
+ },
+ {
+ "name": "shield",
+ "description": "Shield相关API"
+ },
+ {
+ "name": "server",
+ "description": "服务器相关API"
+ },
+ {
+ "name": "logs",
+ "description": "日志相关API"
+ }
+ ]
+ };
+
+ // 初始化Swagger UI
+ window.onload = function() {
+ const ui = SwaggerUIBundle({
+ spec: swaggerDocument,
+ dom_id: '#swagger-ui',
+ deepLinking: true,
+ presets: [
+ SwaggerUIBundle.presets.apis,
+ SwaggerUIStandalonePreset
+ ],
+ plugins: [
+ SwaggerUIBundle.plugins.DownloadUrl
+ ],
+ layout: "StandaloneLayout"
+ });
+
+ window.ui = ui;
+ };
\ No newline at end of file
diff --git a/staticbak/static/css/animation.css b/staticbak/static/css/animation.css
new file mode 100644
index 0000000..2319b5b
--- /dev/null
+++ b/staticbak/static/css/animation.css
@@ -0,0 +1,62 @@
+ @layer utilities {
+ .content-auto {
+ content-visibility: auto;
+ }
+ .card-shadow {
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ }
+ .sidebar-item-active {
+ background-color: rgba(22, 93, 255, 0.1);
+ color: #165DFF;
+ border-right: 4px solid #165DFF;
+ }
+ }
+
+ /* 服务器状态组件光晕效果 */
+ .glow-effect {
+ animation: pulse 2s ease-in-out;
+ }
+
+ @keyframes pulse {
+ 0% {
+ box-shadow: 0 0 0 0 rgba(41, 128, 185, 0.4);
+ }
+ 70% {
+ box-shadow: 0 0 0 10px rgba(41, 128, 185, 0);
+ }
+ 100% {
+ box-shadow: 0 0 0 0 rgba(41, 128, 185, 0);
+ }
+ }
+
+ /* 服务器状态组件样式优化 */
+ .server-status-widget {
+ min-width: 170px;
+ transition: all 0.3s ease;
+ }
+
+ .server-status-widget:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+ }
+
+
+ /* 加载状态样式 */
+ .status-loading {
+ animation: status-pulse 1.5s ease-in-out infinite;
+ }
+
+ /* 状态脉冲动画 */
+ @keyframes status-pulse {
+ 0%, 100% {
+ opacity: 1;
+ }
+ 50% {
+ opacity: 0.7;
+ }
+ }
+
+ /* 保存按钮状态样式 */
+ #save-blacklist-status {
+ transition: all 0.3s ease-in-out;
+ }
\ No newline at end of file
diff --git a/staticbak/static/css/style.css b/staticbak/static/css/style.css
new file mode 100644
index 0000000..1bdb257
--- /dev/null
+++ b/staticbak/static/css/style.css
@@ -0,0 +1,1157 @@
+/* 全局样式重置 */
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+html, body {
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+ background-color: #f5f7fa;
+ color: #333;
+ line-height: 1.6;
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+}
+
+body {
+ position: relative;
+}
+
+/* 基础响应式变量 */
+:root {
+ --sidebar-width: 250px;
+ --sidebar-mobile-width: 70px;
+ --header-height: 130px;
+ --content-padding: 1rem;
+ --card-min-width: 300px;
+}
+
+/* 主容器样式 */
+.container {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ width: 100%;
+ max-width: 100%;
+ background-color: #fff;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
+}
+
+/* 头部样式 */
+header.header-container {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
+ padding: 1.5rem;
+ width: 100%;
+ text-align: center;
+ box-sizing: border-box;
+ position: relative;
+ z-index: 10;
+}
+
+.logo {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 1rem;
+}
+
+.logo i {
+ margin-right: 1rem;
+ color: white;
+}
+
+.logo h1 {
+ font-size: 1.8rem;
+ margin: 0;
+ font-weight: 600;
+}
+
+header p {
+ font-size: 1rem;
+ opacity: 0.9;
+}
+
+/* 主体布局容器 */
+.main-layout {
+ display: flex;
+ flex: 1;
+ min-height: 0;
+ transition: all 0.3s ease;
+}
+
+/* 侧边栏样式 */
+.sidebar {
+ width: var(--sidebar-width);
+ background-color: #2c3e50;
+ color: white;
+ padding: 1rem 0;
+ flex-shrink: 0;
+ overflow-y: auto;
+ height: calc(100vh - var(--header-height)); /* 减去header的高度 */
+ transition: width 0.3s ease;
+ position: relative;
+}
+
+/* 移动设备侧边栏切换按钮 */
+.sidebar-toggle {
+ position: fixed;
+ top: calc(var(--header-height) + 10px);
+ left: 10px;
+ z-index: 100;
+ background-color: #2c3e50;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ padding: 8px 12px;
+ cursor: pointer;
+ display: none;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
+}
+
+/* 响应式布局 - 平板设备 */
+@media (max-width: 992px) {
+ .sidebar {
+ width: var(--sidebar-mobile-width);
+ }
+
+ .nav-item span {
+ display: none;
+ }
+
+ .nav-item i {
+ margin-right: 0;
+ }
+
+ .sidebar-toggle {
+ display: block;
+ }
+}
+
+/* 响应式布局 - 移动设备 */
+@media (max-width: 768px) {
+ /* 这些样式已经通过Tailwind CSS类在HTML中实现,这里移除避免冲突 */
+}
+
+.nav-menu {
+ list-style: none;
+}
+
+.nav-item {
+ padding: 1rem 1.5rem;
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+ transition: all 0.3s ease;
+}
+
+.nav-item:hover {
+ background-color: #34495e;
+ padding-left: 1.75rem;
+}
+
+.nav-item.active {
+ background-color: #3498db;
+ border-left: 4px solid #fff;
+}
+
+.nav-item i {
+ margin-right: 1rem;
+ width: 20px;
+ text-align: center;
+}
+
+/* 主内容区域样式 */
+.content {
+ flex: 1;
+ padding: var(--content-padding);
+ overflow-y: auto;
+ background-color: #f8f9fa;
+ min-width: 0; /* 防止flex子元素溢出 */
+ height: calc(100vh - var(--header-height)); /* 减去header的高度 */
+ transition: padding-left 0.3s ease;
+}
+
+/* Tooltip趋势信息颜色类 - 替代内联style */
+.tooltip-trend {
+ font-weight: 500;
+}
+
+/* 注意:这些颜色值与colors.config.js中的COLOR_CONFIG.colorClassMap保持同步 */
+.tooltip-trend.blue {
+ color: #1890ff;
+}
+
+.tooltip-trend.green {
+ color: #52c41a;
+}
+
+.tooltip-trend.orange {
+ color: #fa8c16;
+}
+
+.tooltip-trend.red {
+ color: #f5222d;
+}
+
+.tooltip-trend.purple {
+ color: #722ed1;
+}
+
+.tooltip-trend.cyan {
+ color: #13c2c2;
+}
+
+.tooltip-trend.teal {
+ color: #36cfc9;
+}
+
+/* 平板设备适配 - 侧边栏折叠时调整内容区域 */
+@media (max-width: 992px) {
+ .content {
+ padding-left: calc(var(--content-padding) + 10px);
+ }
+}
+
+/* 移动设备适配 - 侧边栏隐藏时的内容区域 */
+@media (max-width: 768px) {
+ .content {
+ padding-left: var(--content-padding);
+ }
+
+ /* 响应式头部样式 */
+ header.header-container {
+ padding: 1rem;
+ }
+
+ .logo h1 {
+ font-size: 1.5rem;
+ }
+
+ header p {
+ font-size: 0.9rem;
+ }
+}
+
+/* 面板样式 */
+.panel {
+ display: none;
+ background-color: white;
+ border-radius: 8px;
+ padding: 1.5rem;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ box-sizing: border-box;
+ overflow: hidden;
+}
+
+.panel.active {
+ display: block;
+}
+
+.panel-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 2rem;
+ padding-bottom: 1rem;
+ border-bottom: 1px solid #e9ecef;
+}
+
+.panel-header h2 {
+ font-size: 1.5rem;
+ color: #2c3e50;
+}
+
+/* 状态指示器 */
+.status-indicator {
+ display: flex;
+ align-items: center;
+}
+
+.status-dot {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ background-color: #e74c3c;
+ margin-right: 8px;
+ animation: pulse 2s infinite;
+}
+
+.status-dot.connected {
+ background-color: #2ecc71;
+}
+
+@keyframes pulse {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 50% {
+ transform: scale(1.1);
+ opacity: 0.7;
+ }
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+
+/* 按钮样式 */
+.btn {
+ padding: 0.5rem 1rem;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 0.9rem;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ display: inline-flex;
+ align-items: center;
+}
+
+.btn i {
+ margin-right: 0.5rem;
+}
+
+.btn-primary {
+ background-color: #3498db;
+ color: white;
+}
+
+.btn-primary:hover {
+ background-color: #2980b9;
+}
+
+.btn-secondary {
+ background-color: #7f8c8d;
+ color: white;
+}
+
+.btn-secondary:hover {
+ background-color: #6c757d;
+}
+
+.btn-success {
+ background-color: #2ecc71;
+ color: white;
+}
+
+.btn-success:hover {
+ background-color: #27ae60;
+}
+
+.btn-danger {
+ background-color: #e74c3c;
+ color: white;
+}
+
+.btn-danger:hover {
+ background-color: #c0392b;
+}
+
+.btn-warning {
+ background-color: #f39c12;
+ color: white;
+}
+
+.btn-warning:hover {
+ background-color: #e67e22;
+}
+
+.btn-sm {
+ padding: 0.375rem 0.75rem;
+ font-size: 0.8rem;
+}
+
+.btn-block {
+ width: 100%;
+}
+
+/* 统计卡片网格 */
+.stats-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(min(250px, 100%), 1fr));
+ gap: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整间距 */
+ margin-bottom: 2rem;
+}
+
+/* 图表容器 */
+.charts-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
+ gap: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整间距 */
+ margin-bottom: 1.5rem;
+}
+
+.stat-card {
+ background-color: white;
+ border-radius: 8px;
+ padding: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整内边距 */
+ text-align: center;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+ min-width: 0; /* 防止内容溢出 */
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+}
+
+.stat-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
+}
+
+/* 卡片布局的响应式优化 */
+@media (max-width: 640px) {
+ /* 在极小屏幕上,调整卡片网格为单列显示 */
+ .stats-grid,
+ .charts-container,
+ .tables-container {
+ grid-template-columns: 1fr;
+ }
+
+ /* 卡片更紧凑的内边距 */
+ .stat-card,
+ .chart-card,
+ .table-card {
+ padding: 1rem;
+ min-height: 120px;
+ }
+
+ /* 优化统计卡片的图标大小 */
+ .stat-card i {
+ font-size: 1.5rem;
+ margin-bottom: 0.5rem;
+ }
+
+ /* 优化统计卡片的数值和标签 */
+ .stat-value {
+ font-size: clamp(1.2rem, 5vw, 1.5rem);
+ }
+
+ .stat-label {
+ font-size: clamp(0.7rem, 3vw, 0.8rem);
+ }
+
+ /* 优化图表卡片标题 */
+ .chart-card h3 {
+ font-size: clamp(1rem, 4vw, 1.1rem);
+ }
+
+ /* 优化面板标题 */
+ .panel-header h2 {
+ font-size: clamp(1.2rem, 5vw, 1.3rem);
+ }
+}
+
+.stat-card i {
+ font-size: 2rem;
+ margin-bottom: 1rem;
+ color: #3498db;
+}
+
+.stat-value {
+ font-size: 2rem;
+ font-weight: bold;
+ margin-bottom: 0.5rem;
+ color: #2c3e50;
+}
+
+.stat-label {
+ font-size: 0.9rem;
+ color: #7f8c8d;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+}
+
+/* 图表容器 */
+.charts-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 1.5rem;
+ margin-bottom: 1.5rem;
+}
+
+.chart-card {
+ background-color: white;
+ border-radius: 8px;
+ padding: 1.5rem;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+}
+
+.chart-card h3 {
+ margin-bottom: 1rem;
+ font-size: 1.2rem;
+ color: #2c3e50;
+}
+
+/* 表格容器 */
+.tables-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
+ gap: 1.5rem;
+}
+
+/* 表格卡片样式 */
+.table-card {
+ background-color: white;
+ border-radius: 8px;
+ padding: 1.5rem;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ min-width: 0; /* 防止子元素溢出 */
+}
+
+/* 表格响应式样式 */
+@media (max-width: 768px) {
+ /* 调整卡片内边距 */
+ .table-card,
+ .stat-card,
+ .chart-card {
+ padding: 1rem;
+ }
+
+ /* 调整表格单元格内边距 */
+ th, td {
+ padding: 0.5rem;
+ font-size: 0.9rem;
+ }
+
+ /* 调整表格卡片标题 */
+ .table-card h3,
+ .chart-card h3 {
+ font-size: 1.1rem;
+ }
+
+ /* 调整统计卡片数值和标签 */
+ .stat-value {
+ font-size: 1.5rem;
+ }
+
+ .stat-label {
+ font-size: 0.8rem;
+ }
+
+ /* 调整面板标题 */
+ .panel-header h2 {
+ font-size: 1.3rem;
+ }
+
+ /* 调整按钮大小 */
+ .btn {
+ padding: 0.4rem 0.8rem;
+ font-size: 0.85rem;
+ }
+}
+
+.table-card {
+ background-color: white;
+ border-radius: 8px;
+ padding: 1.5rem;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+}
+
+.table-card h3 {
+ margin-bottom: 1rem;
+ font-size: 1.2rem;
+ color: #2c3e50;
+}
+/* 表格样式 */
+.table-wrapper {
+ overflow-x: auto;
+ border-radius: 8px;
+ background-color: #ffffff;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ margin-bottom: 16px;
+ display: block;
+ width: 100%;
+ -webkit-overflow-scrolling: touch; /* iOS平滑滚动 */
+}
+
+/* 最常屏蔽和最常解析域名表格的特殊样式 */
+#top-blocked-table, #top-resolved-table {
+ font-size: 0.85rem;
+}
+
+/* 限制域名表格高度,只显示5条内容 */
+.table-card .table-wrapper {
+ max-height: 220px;
+ overflow-y: auto;
+ overflow-x: auto;
+}
+
+table {
+ width: 100%;
+ border-collapse: collapse;
+ background-color: #ffffff;
+ margin: 0;
+ table-layout: fixed; /* 固定布局,有助于响应式设计 */
+}
+
+th, td {
+ padding: 0.75rem 1rem;
+ text-align: left;
+ border-bottom: 1px solid #e9ecef;
+ word-break: break-word; /* 长文本自动换行 */
+}
+
+/* 缩小最常屏蔽和最常解析域名表格的单元格内边距 */
+#top-blocked-table th, #top-blocked-table td,
+#top-resolved-table th, #top-resolved-table td {
+ padding: 0.5rem 0.75rem;
+ font-size: 0.85rem;
+}
+
+/* 移动设备上表格的优化 */
+@media (max-width: 768px) {
+ /* 确保表格可以水平滚动 */
+ .table-wrapper {
+ max-width: 100%;
+ margin-left: -1rem;
+ margin-right: -1rem;
+ border-radius: 0;
+ }
+
+ /* 表格单元格内容截断处理 */
+ td {
+ font-size: 0.85rem;
+ max-width: 150px; /* 限制单元格最大宽度 */
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ /* 当用户触摸单元格时显示完整内容 */
+ td:active {
+ white-space: normal;
+ word-break: break-word;
+ }
+
+ /* 优化百分比条在小屏幕上的显示 */
+ .count-cell {
+ position: relative;
+ padding-right: 50px; /* 为百分比文本留出空间 */
+ }
+
+ .percentage-text {
+ font-size: 10px;
+ right: 5px;
+ }
+}
+
+th {
+ background-color: #f8f9fa;
+ font-weight: 600;
+ color: #2c3e50;
+}
+
+td.loading {
+ text-align: center;
+ color: #7f8c8d;
+ font-style: italic;
+}
+
+tr:hover {
+ background-color: #f8f9fa;
+}
+
+/* 百分比条样式 */
+.count-cell {
+ position: relative;
+}
+
+.count-number {
+ position: relative;
+ z-index: 2;
+ display: inline-block;
+}
+
+.percentage-text {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 2;
+ font-size: 12px;
+ color: #bdc3c7;
+}
+
+.percentage-bar-container {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+ z-index: 1;
+ overflow: hidden;
+ border-radius: 4px;
+ opacity: 0.2;
+}
+
+.percentage-bar {
+ height: 100%;
+ transition: width 0.5s ease;
+ border-radius: 4px;
+}
+
+/* 分页控件样式 */
+.pagination-controls {
+ background-color: #ffffff;
+ border-radius: 8px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ padding: 16px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 16px;
+}
+
+.pagination-info {
+ font-size: 14px;
+ color: #666;
+}
+
+.pagination-buttons {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ flex-wrap: wrap;
+}
+
+.items-per-page {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 14px;
+}
+
+.items-per-page select {
+ padding: 6px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: #fff;
+ font-size: 14px;
+ cursor: pointer;
+}
+
+.nav-buttons {
+ display: flex;
+ gap: 8px;
+}
+
+.btn:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+/* 规则内容样式优化 */
+.rule-content {
+ max-width: 600px;
+}
+
+.rule-content pre {
+ margin: 0;
+ font-family: inherit;
+ white-space: pre-wrap;
+ word-break: break-all;
+ font-size: 14px;
+}
+
+/* 表单样式 */
+.form-group {
+ margin-bottom: 1rem;
+}
+
+.form-group label {
+ display: block;
+ margin-bottom: 0.5rem;
+ font-weight: 500;
+ color: #2c3e50;
+}
+
+.form-group input,
+.form-group select {
+ width: 100%;
+ padding: 0.75rem;
+ border: 1px solid #ced4da;
+ border-radius: 4px;
+ font-size: 1rem;
+ transition: border-color 0.3s ease;
+}
+
+.form-group input:focus,
+.form-group select:focus {
+ outline: none;
+ border-color: #3498db;
+}
+
+.form-row {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 1rem;
+}
+
+/* 管理区域样式 */
+.rules-management,
+.hosts-management,
+.blacklists-management {
+ margin-top: 1rem;
+}
+
+.rules-input,
+.rules-filter,
+.hosts-filter {
+ display: grid;
+ grid-template-columns: 1fr auto;
+ gap: 1rem;
+ margin-bottom: 1.5rem;
+}
+
+.rules-input {
+ grid-template-columns: 1fr auto auto;
+}
+
+/* 查询表单 */
+.query-form .form-group {
+ display: grid;
+ grid-template-columns: 1fr auto;
+ gap: 1rem;
+}
+
+/* 查询结果样式 */
+.query-result {
+ margin-top: 2rem;
+}
+
+#query-result-container {
+ background-color: #f8f9fa;
+ border-radius: 8px;
+ padding: 1.5rem;
+}
+
+#query-result-container.hidden {
+ display: none;
+}
+
+.result-header {
+ margin-bottom: 1rem;
+ border-bottom: 1px solid #e9ecef;
+ padding-bottom: 0.5rem;
+}
+
+.result-header h3 {
+ font-size: 1.2rem;
+ color: #2c3e50;
+}
+
+.result-item {
+ padding: 0.5rem 0;
+ border-bottom: 1px solid #e9ecef;
+}
+
+.result-item:last-child {
+ border-bottom: none;
+}
+
+/* 配置表单样式 */
+.config-form {
+ margin-top: 1rem;
+}
+
+.config-section {
+ background-color: #f8f9fa;
+ border-radius: 8px;
+ padding: 1.5rem;
+ margin-bottom: 2rem;
+}
+
+.config-section h3 {
+ margin-bottom: 1.5rem;
+ font-size: 1.2rem;
+ color: #2c3e50;
+}
+
+.config-actions {
+ text-align: center;
+ margin-top: 2rem;
+}
+
+/* 通知组件 */
+.notification {
+ position: fixed;
+ bottom: 20px;
+ right: 20px;
+ background-color: #3498db;
+ color: white;
+ padding: 1rem 1.5rem;
+ border-radius: 4px;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
+ z-index: 1000;
+ transform: translateX(100%);
+ transition: transform 0.3s ease;
+}
+
+.notification.show {
+ transform: translateX(0);
+}
+
+.notification.success {
+ background-color: #2ecc71;
+}
+
+.notification.error {
+ background-color: #e74c3c;
+}
+
+.notification.warning {
+ background-color: #f39c12;
+}
+
+.notification-content {
+ display: flex;
+ align-items: center;
+}
+
+.notification-content i {
+ margin-right: 1rem;
+}
+
+/* 大屏幕优化 */
+@media (min-width: 1200px) {
+ .container {
+ max-width: 1400px;
+ margin: 0 auto;
+ }
+}
+
+/* 平板设备 */
+@media (max-width: 1024px) {
+ .content {
+ padding: 1rem;
+ }
+
+ .stats-grid,
+ .charts-container {
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ }
+
+ .tables-container {
+ grid-template-columns: 1fr;
+ }
+}
+
+/* 移动设备 */
+@media (max-width: 768px) {
+ .container {
+ flex-direction: column;
+ }
+
+ .sidebar {
+ width: 100%;
+ height: auto;
+ max-height: 120px;
+ }
+
+ .nav-menu {
+ display: flex;
+ overflow-x: auto;
+ padding-bottom: 0.5rem;
+ }
+
+ .nav-item {
+ white-space: nowrap;
+ padding: 0.75rem 1rem;
+ }
+
+ .stats-grid,
+ .charts-container,
+ .tables-container {
+ grid-template-columns: 1fr;
+ }
+
+ .rules-input,
+ .rules-filter,
+ .hosts-filter {
+ grid-template-columns: 1fr;
+ }
+
+ .form-row {
+ grid-template-columns: 1fr;
+ }
+
+ .query-form .form-group {
+ grid-template-columns: 1fr;
+ }
+
+ .panel {
+ padding: 1rem;
+ }
+
+ .pagination-controls {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 12px;
+ }
+
+ .pagination-buttons {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 12px;
+ }
+
+ .nav-buttons {
+ justify-content: center;
+ }
+}
+
+/* 小屏幕移动设备 */
+@media (max-width: 480px) {
+ header {
+ padding: 1.5rem 1rem;
+ }
+
+ .logo h1 {
+ font-size: 1.5rem;
+ }
+
+ .content {
+ padding: 0.75rem;
+ }
+
+ .panel-header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 1rem;
+ }
+
+ .stat-card {
+ padding: 1rem;
+ }
+
+ .stat-value {
+ font-size: 1.5rem;
+ }
+
+ .chart-card {
+ padding: 1rem;
+ }
+
+ th, td {
+ padding: 0.5rem;
+ font-size: 0.9rem;
+ }
+}
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
+/* 确保按钮在不同容器中保持一致宽度 */
+.w-full {
+ width: 100%;
+}
+
+/* 确保输入和按钮在表单组中有合适的高度对齐 */
+.form-group button {
+ height: auto;
+ align-self: flex-end;
+}
+
+/* 优化表格中的操作按钮间距 */
+.actions-cell {
+ display: flex;
+ gap: 0.5rem;
+}
+
+/* 跟踪器状态图标容器 */
+.tracker-icon-container {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ cursor: help;
+}
+
+/* 跟踪器浮窗样式 */
+.tracker-tooltip {
+ position: absolute;
+ top: -10px;
+ left: 100%;
+ margin-left: 10px;
+ background-color: white;
+ border: 1px solid #e2e8f0;
+ border-radius: 8px;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+ padding: 12px;
+ min-width: 250px;
+ z-index: 50;
+ font-size: 14px;
+ color: #333;
+ /* 添加箭头 */
+}
+
+/* 浮窗箭头 */
+.tracker-tooltip::before {
+ content: '';
+ position: absolute;
+ top: 15px;
+ left: -10px;
+ width: 0;
+ height: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-right: 10px solid white;
+}
+
+.tracker-tooltip::after {
+ content: '';
+ position: absolute;
+ top: 15px;
+ left: -11px;
+ width: 0;
+ height: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-right: 10px solid #e2e8f0;
+ z-index: -1;
+}
+
+/* 浮窗标题 */
+.tracker-tooltip .font-semibold {
+ font-weight: 600;
+ color: #2d3748;
+ margin-bottom: 8px;
+}
+
+/* 搜索框样式优化 */
+#logs-search {
+ /* 确保搜索框在所有设备上都有合适的宽度 */
+ max-width: 100%;
+ box-sizing: border-box;
+}
+
+/* 在移动设备上进一步优化搜索框 */
+@media (max-width: 768px) {
+ /* 确保搜索框在移动设备上占满宽度 */
+ #logs-search {
+ width: 100%;
+ padding: 0.5rem;
+ font-size: 0.9rem;
+ }
+}
+
+/* 浮窗内容项 */
+.tracker-tooltip > div {
+ margin-bottom: 6px;
+}
+
+/* 浮窗链接样式 */
+.tracker-tooltip a {
+ color: #3182ce;
+ text-decoration: none;
+}
+
+.tracker-tooltip a:hover {
+ text-decoration: underline;
+}
\ No newline at end of file
diff --git a/staticbak/static/css/vendor/all.min.css b/staticbak/static/css/vendor/all.min.css
new file mode 100644
index 0000000..1f367c1
--- /dev/null
+++ b/staticbak/static/css/vendor/all.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2023 Fonticons, Inc.
+ */
+.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}
+
+.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}
+.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
\ No newline at end of file
diff --git a/staticbak/static/css/webfonts/fa-solid-900.woff2 b/staticbak/static/css/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..5c16cd3
Binary files /dev/null and b/staticbak/static/css/webfonts/fa-solid-900.woff2 differ
diff --git a/staticbak/static/domain-info/domains/domain-info.json b/staticbak/static/domain-info/domains/domain-info.json
new file mode 100644
index 0000000..5202ac5
--- /dev/null
+++ b/staticbak/static/domain-info/domains/domain-info.json
@@ -0,0 +1,535 @@
+{
+ "timeUpdated": "2025-03-17T10:05:02.622Z",
+ "categories": {
+ "0": "官方网站",
+ "1": "搜索引擎",
+ "2": "CDN",
+ "3": "新闻资讯",
+ "4": "购物网站",
+ "5": "社交网站",
+ "6": "工具网站",
+ "7": "社交工具",
+ "8": "视频网站",
+ "9": "混合内容",
+ "10": "博客/自媒体",
+ "11": "论坛/社区",
+ "12": "地图",
+ "13": "涉政网站",
+ "14": "政府网站",
+ "15": "政务网站",
+ "16": "组织网站",
+ "17": "事业单位",
+ "18": "政务服务",
+ "19": "网络邮件",
+ "20": "云服务",
+ "21": "网络存储",
+ "22": "网络服务",
+ "23": "CDN网络分发平台",
+ "24": "支付平台",
+ "25": "其他"
+ },
+ "domains": {
+ "网易": {
+ "网易163": {
+ "name": "网易163",
+ "categoryId": 3,
+ "url": "http://www.163.com/",
+ "icon": "https://www.163.com/favicon.ico"
+ },
+ "网易163免费邮": {
+ "name": "网易163免费邮",
+ "categoryId": 18,
+ "url": "https://mail.163.com/",
+ "icon": "https://mail.163.com/favicon.ico"
+ },
+ "网易126免费邮": {
+ "name": "网易126免费邮",
+ "categoryId": 18,
+ "url": "https://www.126.com/",
+ "icon": "https://www.126.com/favicon.ico"
+ },
+ "网易有道词典": {
+ "name": "网易有道词典",
+ "categoryId": 0,
+ "url": "https://dict.youdao.com/",
+ "icon": "https://dict.youdao.com/favicon.ico"
+ },
+ "网易uu加速器":{
+ "name": "网易uu加速器",
+ "categoryId": 0,
+ "url": {
+ "1": "https://uu.163.com/",
+ "2": "https://log.uu.163.com/"
+ }
+ },
+ "company": "网易股份有限公司"
+ },
+ "百度": {
+ "百度搜索": {
+ "name": "百度搜索",
+ "categoryId": 0,
+ "url": "https://www.baidu.com/",
+ "icon": "https://www.baidu.com/favicon.ico"
+ },
+ "百度百科": {
+ "name": "百度百科",
+ "categoryId": 19,
+ "url": "https://baike.baidu.com/",
+ "icon": "https://baike.baidu.com/favicon.ico"
+ },
+ "百度地图": {
+ "name": "百度地图",
+ "categoryId": 7,
+ "url": "https://map.baidu.com/",
+ "icon": "https://map.baidu.com/favicon.ico"
+ },
+ "百度知道": {
+ "name": "百度知道",
+ "categoryId": 12,
+ "url": "https://zhidao.baidu.com/",
+ "icon": "https://zhidao.baidu.com/favicon.ico"
+ },
+ "company": "北京百度网讯科技有限公司"
+ },
+ "阿里云": {
+ "阿里云": {
+ "name": "阿里云",
+ "categoryId": 22,
+ "url": "https://www.aliyun.com/",
+ "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
+ },
+ "阿里云API服务": {
+ "name": "阿里云API服务",
+ "categoryId": 22,
+ "url": "aliyuncs.com",
+ "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
+ },
+ "阿里云DNS": {
+ "name": "阿里云DNS",
+ "categoryId": 22,
+ "url": {
+ "1": "alidns.com",
+ "2": "alibabadns.com"
+ },
+ "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
+ },
+ "支付宝": {
+ "name": "支付宝",
+ "categoryId": 24,
+ "url": "https://www.alipay.com/",
+ "icon": "https://www.alipay.com/favicon.ico"
+ },
+ "淘宝": {
+ "name": "淘宝",
+ "categoryId": 4,
+ "url": "https://www.taobao.com/",
+ "icon": "https://www.taobao.com/favicon.ico"
+ },
+ "天猫": {
+ "name": "天猫",
+ "categoryId": 4,
+ "url": "https://www.tmall.com/",
+ "icon": "https://www.tmall.com/favicon.ico"
+ },
+ "阿里云镜像源":{
+ "name": "阿里巴巴开源镜像站",
+ "categoryId": 0,
+ "url": {
+ "1": "https://mirrors.aliyun.com/"
+ },
+ "icon": "https://www.aliyun.com/favicon.ico"
+ },
+ "company": "阿里云计算有限公司/阿里巴巴集团"
+ },
+ "UC":{
+ "UC浏览器官网": {
+ "name": "UC浏览器官网",
+ "categoryId": 4,
+ "url": {
+ "1": "www.uc.cn",
+ "2": "https://www.uc.com/"
+ },
+ "icon": "https://www.uc.cn/favicon.ico"
+ },
+ "company": "广州市动景计算机科技有限公司"
+ },
+ "腾讯": {
+ "微信": {
+ "name": "微信",
+ "categoryId": 7,
+ "url": {
+ "1": "https://wx.qq.com/",
+ "2": "https://weixin.qq.com/",
+ "3": "https://res.wx.qq.com/",
+ "4": "dns.weixin.qq.com",
+ "5": "pc.weixin.qq.com"
+ },
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ },
+ "WeChat": {
+ "name": "WeChat",
+ "categoryId": 7,
+ "url": {
+ "1":"wechat.com",
+ "2": "support.wechat.com",
+ "3": "www.wechat.com"
+ },
+
+ "icon": "https://wechat.com/favicon.ico"
+ },
+ "微信开放平台": {
+ "name": "微信开放平台",
+ "categoryId": 24,
+ "url": "https://open.weixin.qq.com/",
+ "icon": "https://open.weixin.qq.com/favicon.ico"
+ },
+ "微信支付": {
+ "name": "微信支付商户平台",
+ "categoryId": 24,
+ "url": {"1": "pay.weixin.qq.com",
+ "2": "pay.wechatpay.cn",
+ "3": "act.weixin.qq.com",
+ "4": "api.wechatpay.cn",
+ "5": "api.mch.weixin.qq.com",
+ "6": "api2.mch.weixin.qq.com",
+ "7": "api.wechatpay.cn",
+ "8": "api2.wechatpay.cn",
+ "9": "payapp.weixin.qq.com",
+ "10": "payapp.wechatpay.cn",
+ "11": "fraud.mch.weixin.qq.com",
+ "12": "fraud.wechatpay.cn",
+ "13": "action.weixin.qq.com",
+ "14": "action.wechatpay.cn",
+ "15": "wechatpay.cn"
+ },
+
+ "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
+ },
+ "微信支付海外版": {
+ "name": "微信支付海外版",
+ "categoryId": 24,
+ "url": {"1": "https://pay.wechatpay.global/",
+ "2": "apihk.mch.weixin.qq.com",
+ "3": "apius.mch.weixin.qq.com"
+ },
+ "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
+ },
+ "微信CDN": {
+ "name": "微信CDN和日志等资源",
+ "categoryId": 23,
+ "url": {"1": "https://gtimg.wechatpay.cn/",
+ "2": "log.wechatpay.cn",
+ "3": "newres.wechat.com",
+ "4": "res.wx.qq.com",
+ "5": "sh.servicewechat.com",
+ "6": "res.servicewechat.com"
+ },
+ "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
+ },
+ "腾讯下载加速网络CDN": {
+ "name": "腾讯下载加速网络CDN",
+ "categoryId": 23,
+ "url": {"1": "dldir1v6.qq.com",
+ "2": "dldir1.qq.com",
+ "3": "dldir2.qq.com",
+ "4": "dldir3.qq.com",
+ "5": "dl.qq.com",
+ "6": "dldir.tencent.com",
+ "7": "pc.qq.com"
+ },
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "腾讯QQ": {
+ "name": "腾讯QQ",
+ "categoryId": 5,
+ "url": "https://im.qq.com/",
+ "icon": "https://im.qq.com/favicon.ico"
+ },
+ "腾讯网": {
+ "name": "腾讯网",
+ "categoryId": 3,
+ "url": "https://www.qq.com/",
+ "icon": "https://www.qq.com/favicon.ico"
+ },
+ "腾讯3G移动门户": {
+ "name": "腾讯3G移动门户",
+ "categoryId": 3,
+ "url": "3g.qq.com",
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "3G 移动门户CDN": {
+ "name": "3G 移动门户CDN",
+ "categoryId": 23,
+ "url": "cdnimg.3g.qq.com",
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "腾讯": {
+ "name": "腾讯",
+ "categoryId": 0,
+ "url": "https://www.tencent.com/",
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "腾讯地图": {
+ "name": "腾讯地图",
+ "categoryId": 8,
+ "url": "https://map.qq.com/",
+ "icon": "https://map.qq.com/favicon.ico"
+ },
+ "腾讯视频": {
+ "name": "腾讯视频",
+ "categoryId": 8,
+ "url": "https://v.qq.com/",
+ "icon": "https://v.qq.com/favicon.ico"
+ },
+ "腾讯广告": {
+ "name": "腾讯广告",
+ "categoryId": 0,
+ "url": {
+ "1": "ugdtimg.com",
+ "2": "gdtimg.com",
+ "3": "ad.qq.com",
+ "4": "v3.gdt.qq.com",
+ "5": "c3.gdt.qq.com",
+ "6": "v2mi.gdt.qq.com",
+ "7": "gdt.qq.com"
+ },
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "腾讯Beacon事件日志上报": {
+ "name": "腾讯Beacon事件日志上报",
+ "categoryId": 0,
+ "url": "aeventlog.beacon.qq.com",
+ "icon": "https://www.tencent.com/favicon.ico"
+ },
+ "company": "腾讯计算机系统有限公司"
+ },
+
+ "微信青少年相关":{
+ "微信守护平台":{
+ "name": "微信守护平台",
+ "categoryId": 24,
+ "url": "wxguard.weixin.qq.com",
+ "icon": "https://open.weixin.qq.com/favicon.ico"
+ },
+ "微信未成年人服务短链接":{
+ "name": "微信未成年人服务短链接",
+ "categoryId": 24,
+ "url": {"1": "minorshort.weixin.qq.com",
+ "2": "szminorshort.weixin.qq.com"
+ },
+ "icon": "https://open.weixin.qq.com/favicon.ico"
+ },
+ "深圳地区扩展短链接":{
+ "name": "深圳地区扩展短链接",
+ "categoryId": 24,
+ "url": "szextshort.weixin.qq.com",
+ "icon": "https://open.weixin.qq.com/favicon.ico"
+ },
+ "company": "腾讯计算机系统有限公司"
+ },
+ "高德地图相关": {
+ "高德地图": {
+ "name": "高德地图",
+ "categoryId": 7,
+ "url": "https://map.amap.com/",
+ "icon": "https://a.amap.com/pc/static/favicon.ico"
+ },
+ "高德开放平台": {
+ "name": "高德开放平台",
+ "categoryId": 7,
+ "url": "lbs.amap.com",
+ "icon": "https://a.amap.com/pc/static/favicon.ico"
+ },
+ "高德地图API": {
+ "name": "高德地图API",
+ "categoryId": 7,
+ "url": "https://restapi.amap.com/",
+ "icon": "https://a.amap.com/pc/static/favicon.ico"
+ },
+ "company": "北京高德图强科技有限公司"
+ },
+ "微软": {
+ "微软": {
+ "name": "微软",
+ "categoryId": 0,
+ "url": "https://www.microsoft.com/",
+ "icon": "https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/Link-List-Icons-Microsoft-365?wid=40&hei=40"
+ },
+ "微软Edge": {
+ "name": "微软Edge",
+ "categoryId": 0,
+ "url": "https://www.microsoftedgeinsider.com/",
+ "icon": "https://www.microsoftedgeinsider.com/favicon.ico"
+ },
+ "微软Office": {
+ "name": "微软Office",
+ "categoryId": 0,
+ "url": "https://www.office.com/",
+ "icon": "https://www.office.com/favicon.ico"
+ },
+ "Azure": {
+ "name": "Azure",
+ "categoryId": 0,
+ "url": "https://www.azure.com/",
+ "icon": "https://portal.azure.com/Content/favicon.ico"
+ },
+ "网络连接状态指示器(NCSI)": {
+ "name": "网络连接状态指示器(NCSI)",
+ "categoryId": 0,
+ "url": "msftncsi.com",
+ "icon": "https://www.microsoft.com/favicon.ico"
+ },
+ "company": "微软公司"
+ },
+ "字节跳动": {
+ "抖音": {
+ "name": "抖音",
+ "categoryId": 0,
+ "url": "https://www.douyin.com/",
+ "icon": "https://www.douyin.com/favicon.ico"
+ },
+ "今日头条": {
+ "name": "今日头条",
+ "categoryId": 0,
+ "url": "https://www.toutiao.com/",
+ "icon": "https://www.toutiao.com/favicon.ico"
+ },
+ "抖音视频": {
+ "name": "抖音视频",
+ "categoryId": 8,
+ "url": "https://v.douyin.com/",
+ "icon": "https://v.douyin.com/favicon.ico"
+ },
+ "字节跳动API服务": {
+ "name": "字节API服务",
+ "categoryId": 0,
+ "url": "zijieapi.com",
+ "icon": "data:image/vnd.microsoft.icon;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAMAAABOo35HAAACFlBMVEUAAACp3f8yW7U8jf8zW7U/3vJA5P8AydMzW7VPlP955908jP8AydM8jf8yWrV5590yWrV45908jf8yW7UyW7UyW7V55909jf88jf8yW7UzW7V56N49jf80XLY+j/80XbY/lf8zZr5Ilf9GXbkA2+RCY70zZsx459x5590AydI8jP8AydN4590AydM8jf8AydM8jf88jf94590AyNM8jf8AydN5590AydM8jf8AyNIAytR5594zW7V56N09jf955948jf8AydMAytN65948jf956N56594AytMAy9Q9jv976d8AytYAy9Z66N566uE/jv8AztUAy9cAytV56OSD798A0NYAydM8jP95590yW7R45twAydN45909jP8yWrU8jf945t0AydIyWrV5590AydIyW7UzWrU8jf8AydIzW7UzWrV459145908jf8yW7UAydM8jP8AydM8jf9459155909jf8zW7UAydQAytMAydN56N0AydMzXLYAydM0W7UAydQ8jv8+jv8Ay9QzW7Y9jf965t176N80W7YAydN56N156d4yW7U0XLc+jv8+kP8Ay9VAj/81XbgAzNQ1XbY5XbZAkf9+7eQ7Yrp96+FDlv+F6emI/+4AydN55t15594AydM+jf8+jf8+jv8AydQ1W7QzW7UAydR75942XbUyWrR86OCA8uYAztqA8eN45twyWrQAyNI8jP8bed+KAAAArnRSTlMAAfb9+wUD8HMJ/fr59+jb1dTLt6eamY+Jg3xXTkhHOhIRDQsJBwX59vbr4+Dc1tXRxcC7ubSqoJuak5CKiIN+enlyb21lXVFEQj09NzAnJiQdGBUPDvzx8O/s6Obl397OzsvIyMXEwcG/vbiysbGuqqeknZSTkI2Gf3ZraGViX15YWFVTUk9OS0pEQUA8MzAtLSomHx4bGhkXCwfApKCAdGdjXlxaWTY0MyEUFBKNTPVmAAAFHElEQVR42uzX105UYRSG4YUyiCgqKvbeK3ZFsaCCXUHE3kvU2FvU2EussfcSY2KiiSUDc4fuTcl/xr8/ZuZk7/e9g/UcfcuIiIiIiIiIiIiIiMhf7wFDPxlFKx1UdunBX6NoWGEHqp40GnmwXCWHlzz9YuTBck2cvWzdVyMPlmtSAJYy8mE5sJPXNhYYebBcO06tBMyP5do1v3aTkcPytedb7R8jh+Vr2sVVHyzxpaMXfEZbLNGltcqqHjba8LGWzNJyJdZUeHTws/GWvNJ61hTW5cSQkRMsWXUWqxWsX/HvJC2xTmK5dp4pfp0UsCywXL3633hrCShrLAd2653FvBxgufaV//xoMS5HWK4+5fdHW0zLJZYDu/wolmC5xXIVHlocv6GfcyxX/IZ+HrHiN/TziuWGvsWiLLCULBaBBVZLYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYOW1erCitfn2gqnNYPlruLdwenMQWJ7+rV40I3QCy9PWx1cOhkZgeRq35uqRbYEPWD6o9d+P9wxxwOq41IblcyaHMGB1XNHLFfO6hShgeXpz/WwLFFie6m+e3x1igBVlmgeB5anhV+s0B8tX2zQHK0rB8WCBZQYWWGCBBRZYYIEFFlhggQUWWGCBBRZYYIGVZKyKgcNGmYEVCSuTyXTtO2jEGLCiYYX1mLV0bXewfFiu0mPVz1NgebEc2NzqF0Vg+bBc20/XvCoAy4flmnKupg4sL5Zr74UfdWB5sVz7K++8B8theauovPsZLIflbWYw9MGKiNU+9MGKlBv6YEWvFCwhsMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMD6325d7cQVhWEY/ocWn9JSoO5GhTqlSo2Wurt72qbu3lRwgruEQCCBE+6RHQ7YR7DWP8OeWSHvewnPwZcPLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLCmGtbhHclg+Vimkk4f2r4OLLEu8dS3Z2Gw7Ft1/OvjMFj2Xan48uAqWAqwY3s2g6Xo4r/dG8FSdKF/5wawFJ3/9e4WWIoaf7xJBsu+UJ139MHyszr6YKmOfncYLM3RB0sRWGDZBBZYYIEFFlhggQUWWGBFgpWQBZYd1PMFS9cIWMamP5lfvVq8wDJAPdy3eKV4gWVo1ufy5eIFlhigcv6PQoFlwLqbM9AmXmAZsDKyfzeLX6BY6U/FJjexMrJ/NolfoFjTZs9bkipWuYd143VKQ0iiyh5qy9xFK8Q6t7ASslKGfKiAsTZ9KlkmqtzB8q95DLDu7frbIXEvIiz/mscC6877Py3iRJFg+dc8cKz1b/vOiTPprdJk0hsH6tWRenEqpVTmx9JhkeCxruX31obEtRRQM+csvCTq9Fgz8g/WJImLWULl9RS3ijo9VvrW/SdSxdUsoG4XHD0rgRb3az45WDcLitRQ+uJ+zaPHuv6y6ExsRjbu1zw6rLUvvg+6ObKqgsfK3XbgZKKQESv3UWFVl5ARK+1+YWWnkBkrc2/ZZaGJG7vmZC7vQ3G7EBERERERERERERER0dRtBK5Q857p1uutAAAAAElFTkSuQmCC"
+ },
+ "今日头条API服务":{
+ "name": "今日头条API 服务",
+ "categoryId": 0,
+ "url": "toutiaoapi.com",
+ "icon": "https://www.toutiao.com/favicon.ico"
+ },
+ "豆包": {
+ "name": "豆包",
+ "categoryId": 0,
+ "url": "doubao.com",
+ "icon": "https://lf-flow-web-cdn.doubao.com/obj/flow-doubao/doubao/chat/favicon.png"
+ },
+ "company": "字节跳动有限公司"
+ },
+ "金山办公": {
+ "金山文档": {
+ "name": "金山文档",
+ "categoryId": 0,
+ "url": {
+ "1":"kdocs.cn",
+ "2":"www.kdocs.cn",
+ "3":"365.kdocs.cn",
+ "4":"account.kdocs.cn"
+ },
+ "icon": "https://qn.cache.wpscdn.cn/kdocs/mobile/touch/apple-180.png"
+ },
+ "WPS Office": {
+ "name": "WPS Office",
+ "categoryId": 6,
+ "url": {
+ "1":"wps.cn",
+ "2":"www.wps.cn"
+ },
+ "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ2SURBVHgB7Va9biRFEK7qWa9XAuSByMEhr0FIzvARkEBgEUHEPQG79wKcTyL3Li/gnxdgl5TgTAQSQmeJxEJCIoIjOc/JyemSW4tbe70z28XX1T0z+zO2U6RzWe3unq6un6+/rl6iW7mV111Y7tzZImMekVAcvkm+NqUnxZy1S0jsQz49PdTF3Q82ych3WNzM1dM/Msp+S4UviQ32RHDlBm5MIgJrz9Bvs6y9e4Ida3MOvRXGnxRTyb2HgM6I/13nZDCQb98/IcNNtQC19J8JXf46InWM5npjfM/qnJ1dtVGjSOLgKkQWnMz4y+clcmgx2TiWb955QENpFsBhT/r7SDhymZMwEnfKOjbiFcSSRuO+k7F7FFk4xsdIECZ6xtxg7HqeuHFYQ583lh59Dgvn0qZXmL/CviGy/3tM9gJOoYPmehcMcaR7vE03Vj9yyNJsxlQf4xgkLrNFUCnvEzUwGZUoRDjjiB7peCzr9Gm9hflOgRokfZHdnfw1HPi9+X/IMu8CpHsznIIN3SgbqzvoOiXAMgBgd/nJ84TmibGx+pgcCTeoS9HSY5hpFnwh6vEPp/cr9jidE3/M+Vfb4ycv7hsf5mifzOQlYPFwM87X2B2qlq62kWnRhW3SOaC8sExDHFUadSt3OFsecg+9csGorgbAfw4GVOMDPef8fCJpy0bcnLcFVI5oFYORbcMpaQBD6/o+HybJYvawAVs4Kgq2Hd96ObqmjHK8h8gGgYw+yuWoGoXzrEXnE2SfCQ0zN3dUqc7e2VAyB0LjdtBSWugWASgK7G7EFNONtGRzFgWdp7JNKYxlCBYd+h4fP0+wFi/oGmp7ZK1WI/jowleyEIAXCy7Yl8UxGGyIzCwKjvXGxj5AZxAR2ElXPorbVDPbs7qmExKRcLUTR75plZkAFIVIDvQY3CYlpW3nKBQZ6VqoGUb6oOwgBPa1bHkUVJcnXwUd9hwAUlPZVyAAGZPnQl6UXBDLsqtrDdvReV6UHFKRuxH2AeZwCGTc2MkymO9JnSfyDN768+4WAggo7IWKxeH8vpRP3mo5TpQVUYPrBSttrabujI1sy8dvfIixZ76x3gajRhzPZq/+qEIUxjR9igr3NlVKqChZtk6NxgC9e9A8AUWL0hn+r+QvDPQTytLP+HiU3IiAmj8KXCh5IEWR8mN9C5xB1a3RfnFz/NGtTL0d7v39vsr5lQH4lTq4YM+U6aVxCuQD3JOpe19zuoNQwALp8qtsE6plvSvdXLWgmRnZL1isJXoSXjLu81GZUaGrL14otVrQ0Eg607oLfugakS2c61L9qf5a8i+e6O+CzLw3b1R1a3XHhZWp1zHhXy7Xr/NhrlvkI73fB2Vh0vvcr8pIdR0Xpisp49reILWbFPjncUe+qK0g83vK5tGbD12xqJQR3pPG0hrq8xZQ+JF/yvp0K7fyf5f/AKzIO6StcaNfAAAAAElFTkSuQmCC"
+ },
+ "WPS CDN": {
+ "name": "WPS CDN",
+ "categoryId": 23,
+ "url": {
+ "1":"wpsdns.com",
+ "2":"kdocs-om.wpscdn.cn",
+ "3":"qn.cache.wpscdn.cn",
+ "4":"fe-static.wpscdn.cn",
+ "5":"docer-ks3.wpscdn.cn",
+ "6":"cloudcdn.wpscdn.cn",
+ "7":"vasvip-pub.wpscdn.cn",
+ "8":"ks3.wpsplus.wpscdn.cn",
+ "9":"op-kdocs.wpscdn.cn",
+ "10":"volcengine-cache-weboffice.wpscdn.cn",
+ "11":"ac.wpscdn.cn",
+ "12":"honeycomb-emergency.wpscdn.cn",
+ "13":"res-honeycomb.wpscdn.cn",
+ "14":"kflow.wpscdn.cn",
+ "15":"personal-act.wpscdn.cn",
+ "16":"official-package.wpscdn.cn"
+ },
+ "icon": "https://wps.cn/favicon.ico"
+ },
+ "company": "珠海金山办公科技有限公司"
+ },
+ "京东": {
+ "京东": {
+ "name": "京东",
+ "categoryId": 4,
+ "url": "https://www.jd.com/",
+ "icon": "https://www.jd.com/favicon.ico"
+ },
+ "company": "京东"
+ },
+ "360": {
+ "360官网": {
+ "name": "360",
+ "categoryId": 0,
+ "url": "https://www.360.cn/",
+ "icon": "https://www.360.cn/favicon.ico"
+ },
+ "360搜索": {
+ "name": "360搜索",
+ "categoryId": 0,
+ "url": {
+ "1":"https://www.so.com/",
+ "2":"https://so.com/"
+ },
+ "icon": "https://www.so.com/favicon.ico"
+ },
+ "company": "奇虎360"
+ },
+ "绮梦之家": {
+ "绮梦之家": {
+ "name": "绮梦之家",
+ "categoryId": 0,
+ "url": {
+ "1": "https://www.amazehome.xyz/",
+ "2": "amazehome.xyz",
+ "3": "https://www.amazehome.cn/",
+ "4": "amazehome.cn"
+ },
+ "icon": "https://www.amazehome.cn/upload/cf3f6d7f-65b5-4df2-a7af-8289fb5aad81-yagB.png"
+ },
+ "company": "绮梦之家"
+ },
+ "南京市中医院": {
+ "南京市中医院": {
+ "name": "南京市中医院",
+ "categoryId": 0,
+ "url": {
+ "1":"https://www.njszyy.cn/",
+ "2":"https://njszyy.cn/"
+ },
+ "icon": "#"
+ },
+ "company": "南京市中医院"
+ },
+ "软件源相关": {
+ "腾讯镜像源":{
+ "name": "腾讯软件源",
+ "categoryId": 0,
+ "url": {
+ "1": "https://mirrors.cloud.tencent.com/"
+ },
+ "icon": "https://www.tencent.com/favicon.ico",
+ "company": "腾讯计算机系统有限公司"
+ }
+
+ }
+ }
+}
diff --git a/staticbak/static/domain-info/tracker/trackers.json b/staticbak/static/domain-info/tracker/trackers.json
new file mode 100644
index 0000000..4af4065
--- /dev/null
+++ b/staticbak/static/domain-info/tracker/trackers.json
@@ -0,0 +1,25333 @@
+{
+ "timeUpdated": "2025-03-17T10:05:02.622Z",
+ "categories": {
+ "0": "音视频播放",
+ "1": "comments",
+ "2": "客户互动",
+ "3": "色情广告",
+ "4": "广告",
+ "5": "基本需求广告",
+ "6": "网站分析",
+ "7": "社交媒体",
+ "8": "混合内容",
+ "9": "CDN",
+ "10": "hosting",
+ "11": "未知的",
+ "12": "扩展广告",
+ "13": "邮件",
+ "14": "consent",
+ "15": "遥测",
+ "101": "移动分析"
+ },
+
+ "trackers": {
+ "163": {
+ "name": "163",
+ "categoryId": 4,
+ "url": "http://www.163.com/",
+ "companyId": "163"
+ },
+ "miui.com":{
+ "name": "MIUI",
+ "categoryId": 101,
+ "url": "http://tracking.miui.com",
+ "companyId": "miui"
+ },
+ "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": "1822direkt",
+ "source": "AdGuard"
+ },
+ "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 IONOS",
+ "categoryId": 8,
+ "url": "http://www.ionos.com/",
+ "companyId": "1und1",
+ "source": "AdGuard"
+ },
+ "24-ads.com": {
+ "name": "24-ADS",
+ "categoryId": 4,
+ "url": "http://www.24-ads.com/",
+ "companyId": "24-ads.com",
+ "source": "AdGuard"
+ },
+ "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": "24SMI",
+ "categoryId": 8,
+ "url": "https://24smi.org/",
+ "companyId": "24smi",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "3gpp": {
+ "name": "3GPP Network",
+ "categoryId": 5,
+ "url": "https://www.3gpp.org/",
+ "companyId": "3gpp",
+ "source": "AdGuard"
+ },
+ "4chan": {
+ "name": "4Chan",
+ "categoryId": 8,
+ "url": "https://www.4chan.org/",
+ "companyId": "4chan",
+ "source": "AdGuard"
+ },
+ "4finance_com": {
+ "name": "4finance",
+ "categoryId": 2,
+ "url": "https://4finance.com/",
+ "companyId": "4finance",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "7plus": {
+ "name": "7plus",
+ "categoryId": 0,
+ "url": "https://7plus.com.au/",
+ "companyId": "seven_group_holdings",
+ "source": "AdGuard"
+ },
+ "7tv.de": {
+ "name": "7tv.app",
+ "categoryId": 0,
+ "url": "https://www.7tv.app/",
+ "companyId": "7tv",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "abc": {
+ "name": "Australian Broadcasting Corporation",
+ "categoryId": 8,
+ "url": "https://www.abc.net.au/",
+ "companyId": "australian_government",
+ "source": "AdGuard"
+ },
+ "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": null,
+ "source": "AdGuard"
+ },
+ "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": "https://www.adcolony.com/history-of-adcolony/",
+ "companyId": "digital_turbine",
+ "source": "AdGuard"
+ },
+ "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": 8,
+ "url": "https://adguard.com/",
+ "companyId": "adguard",
+ "source": "AdGuard"
+ },
+ "adguard_dns": {
+ "name": "AdGuard DNS",
+ "categoryId": 8,
+ "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"
+ },
+ "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 GmbH",
+ "categoryId": 101,
+ "url": "https://www.adjust.com/",
+ "companyId": "applovin",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Admixer",
+ "categoryId": 4,
+ "url": "https://admixer.com/",
+ "companyId": "admixer",
+ "source": "AdGuard"
+ },
+ "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_developer": {
+ "name": "Adobe Developer",
+ "categoryId": 8,
+ "url": "https://developer.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "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://business.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "adobe_experience_league": {
+ "name": "Adobe Experience League",
+ "categoryId": 6,
+ "url": "https://experienceleague.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "adprofex": {
+ "name": "AdProfex",
+ "categoryId": 4,
+ "url": "https://adprofex.com/",
+ "companyId": "adprofex",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "affilbox": {
+ "name": "Affilbox",
+ "categoryId": 4,
+ "url": "https://affilbox.com/",
+ "companyId": "affilbox",
+ "source": "AdGuard"
+ },
+ "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",
+ "source": "AdGuard"
+ },
+ "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": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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": "softbank",
+ "source": "AdGuard"
+ },
+ "alibaba_cloud": {
+ "name": "Alibaba Cloud",
+ "categoryId": 10,
+ "url": "https://www.alibabacloud.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "alibaba_ucbrowser": {
+ "name": "UC Browser",
+ "categoryId": 8,
+ "url": "https://ucweb.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "alipay.com": {
+ "name": "Alipay",
+ "categoryId": 2,
+ "url": "https://global.alipay.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "amap": {
+ "name": "Amap",
+ "categoryId": 2,
+ "url": "https://www.amap.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "android": {
+ "name": "Android",
+ "categoryId": 101,
+ "url": "https://www.android.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "appcenter": {
+ "name": "Microsoft App Center",
+ "categoryId": 5,
+ "url": "https://appcenter.ms/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "apple": {
+ "name": "Apple",
+ "categoryId": 8,
+ "url": "https://www.apple.com/",
+ "companyId": "apple",
+ "source": "AdGuard"
+ },
+ "apple_ads": {
+ "name": "Apple Search Ads",
+ "categoryId": 4,
+ "url": "https://searchads.apple.com/",
+ "companyId": "apple",
+ "source": "AdGuard"
+ },
+ "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": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "appsflyer": {
+ "name": "AppsFlyer",
+ "categoryId": 101,
+ "url": "https://www.appsflyer.com/",
+ "companyId": "appsflyer",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "assemblyexchange": {
+ "name": "Assembly Exchange",
+ "categoryId": 4,
+ "url": "https://www.medialab.la/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "azure": {
+ "name": "Microsoft Azure",
+ "categoryId": 10,
+ "url": "https://azure.microsoft.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "azure_blob_storage": {
+ "name": "Azure Blob Storage",
+ "categoryId": 8,
+ "url": "https://azure.microsoft.com/en-us/products/storage/blobs",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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": "百度",
+ "categoryId": 4,
+ "url": "http://www.baidu.com/",
+ "companyId": "baidu"
+ },
+ "baidu_static": {
+ "name": "百度统计",
+ "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"
+ },
+ "binge": {
+ "name": "Binge",
+ "categoryId": 0,
+ "url": "https://binge.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "bitwarden": {
+ "name": "Bitwarden",
+ "categoryId": 8,
+ "url": "https://bitwarden.com/",
+ "companyId": "bitwarden",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "bom": {
+ "name": "Bureau of Meteorology",
+ "categoryId": 9,
+ "url": "http://bom.gov.au/",
+ "companyId": "australian_government",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Branch.io",
+ "categoryId": 101,
+ "url": "https://branch.io/",
+ "companyId": "branch_metrics_inc",
+ "source": "AdGuard"
+ },
+ "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, Inc.",
+ "categoryId": 6,
+ "url": "https://www.braze.com/",
+ "companyId": "braze",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "button": {
+ "name": "Button",
+ "categoryId": 4,
+ "url": "https://www.usebutton.com/",
+ "companyId": "button",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "canonical": {
+ "name": "Canonical",
+ "categoryId": 8,
+ "url": "https://canonical.com/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "chartboost": {
+ "name": "Chartboost",
+ "categoryId": 4,
+ "url": "http://chartboost.com/",
+ "companyId": "take-two",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "clickaine": {
+ "name": "Clickaine",
+ "categoryId": 4,
+ "url": "https://clickaine.com/",
+ "companyId": "clickaine",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "crashlytics": {
+ "name": "Crashlytics",
+ "categoryId": 101,
+ "url": "https://crashlytics.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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": "digioh",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "disneyplus": {
+ "name": "Disney+",
+ "categoryId": 0,
+ "url": "https://www.disneyplus.com/",
+ "companyId": "disney",
+ "source": "AdGuard"
+ },
+ "disneystreaming": {
+ "name": "Disney Streaming",
+ "categoryId": 0,
+ "url": "https://press.disneyplus.com",
+ "companyId": "disney",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "domainglass": {
+ "name": "Domain Glass",
+ "categoryId": 8,
+ "url": "https://domain.glass/",
+ "companyId": "domainglass",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "dreame_tech": {
+ "name": "Dreame Technology",
+ "categoryId": 8,
+ "url": "https://www.dreame.tech/",
+ "companyId": "xiaomi",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "edgio": {
+ "name": "Edgio",
+ "categoryId": 9,
+ "url": "https://edg.io/",
+ "companyId": "edgio",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "electronic_arts": {
+ "name": "Electronic Arts",
+ "categoryId": 2,
+ "url": "https://www.ea.com/",
+ "companyId": "electronic_arts",
+ "source": "AdGuard"
+ },
+ "element": {
+ "name": "Element",
+ "categoryId": 7,
+ "url": "https://element.io/",
+ "companyId": "element",
+ "source": "AdGuard"
+ },
+ "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": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_audience": {
+ "name": "Facebook Audience Network",
+ "categoryId": 4,
+ "url": "https://www.facebook.com/business/products/audience-network",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_beacon": {
+ "name": "Facebook Beacon",
+ "categoryId": 7,
+ "url": "http://www.facebook.com/beacon/faq.php",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_cdn": {
+ "name": "Facebook CDN",
+ "categoryId": 9,
+ "url": "https://www.facebook.com",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_connect": {
+ "name": "Facebook Connect",
+ "categoryId": 6,
+ "url": "https://developers.facebook.com/connect.php",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_conversion_tracking": {
+ "name": "Facebook Conversion Tracking",
+ "categoryId": 4,
+ "url": "http://www.facebook.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_custom_audience": {
+ "name": "Facebook Custom Audience",
+ "categoryId": 4,
+ "url": "https://www.facebook.com",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_graph": {
+ "name": "Facebook Social Graph",
+ "categoryId": 7,
+ "url": "https://developers.facebook.com/docs/reference/api/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_impressions": {
+ "name": "Facebook Impressions",
+ "categoryId": 4,
+ "url": "https://www.facebook.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_social_plugins": {
+ "name": "Facebook Social Plugins",
+ "categoryId": 7,
+ "url": "https://developers.facebook.com/plugins",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "farlight_pte_ltd": {
+ "name": "Farlight Pte Ltd.",
+ "categoryId": 8,
+ "url": "https://farlightgames.com/",
+ "companyId": "farlight",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "firebase": {
+ "name": "Firebase",
+ "categoryId": 101,
+ "url": "https://firebase.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "flash": {
+ "name": "Flash",
+ "categoryId": 0,
+ "url": "https://flashnews.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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": 101,
+ "url": "http://www.flurry.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "fox_sports": {
+ "name": "Fox Sports",
+ "categoryId": 0,
+ "url": "https://foxsports.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "foxtel": {
+ "name": "Foxtel",
+ "categoryId": 0,
+ "url": "https://foxtel.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "freeview": {
+ "name": "Freeview",
+ "categoryId": 0,
+ "url": "https://freeview.com.au/",
+ "companyId": "freeview",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "gameanalytics": {
+ "name": "GameAnalytics",
+ "categoryId": 101,
+ "url": "https://gameanalytics.com/",
+ "companyId": "mobvista",
+ "source": "AdGuard"
+ },
+ "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, Inc.",
+ "categoryId": 2,
+ "url": "https://github.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "gmail": {
+ "name": "Gmail",
+ "categoryId": 13,
+ "url": "https://mail.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_auth": {
+ "name": "Google Auth",
+ "categoryId": 2,
+ "url": "https://myaccount.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_beacons": {
+ "name": "Google Beacons",
+ "categoryId": 6,
+ "url": "https://google.xyz",
+ "companyId": "google"
+ },
+ "google_chat": {
+ "name": "Google Chat",
+ "categoryId": 7,
+ "url": "https://mail.google.com/chat/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_cloud_platform": {
+ "name": "Google Cloud Platform",
+ "categoryId": 10,
+ "url": "https://cloud.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_cloud_storage": {
+ "name": "Google Cloud Storage",
+ "categoryId": 10,
+ "url": "https://cloud.google.com/storage/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_dns": {
+ "name": "Google DNS",
+ "categoryId": 10,
+ "url": "https://dns.google/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_domains": {
+ "name": "Google Domains",
+ "categoryId": 10,
+ "url": "https://domains.google/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_edge": {
+ "name": "Google Edge CDN",
+ "categoryId": 9,
+ "url": "https://peering.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_hosted": {
+ "name": "Google Hosted",
+ "categoryId": 10,
+ "url": "https://workspace.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_ima": {
+ "name": "Google IMA",
+ "categoryId": 4,
+ "url": "http://www.google.com",
+ "companyId": "google"
+ },
+ "google_location": {
+ "name": "Google Location",
+ "categoryId": 8,
+ "url": "https://patents.google.com/patent/WO2007025143A1/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_maps": {
+ "name": "Google Maps",
+ "categoryId": 2,
+ "url": "https://www.google.com/maps/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_marketing": {
+ "name": "Google Marketing",
+ "categoryId": 4,
+ "url": "https://marketingplatform.google.com/about/enterprise",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_meet": {
+ "name": "Google Meet",
+ "categoryId": 2,
+ "url": "https://meet.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_play": {
+ "name": "Google Play",
+ "categoryId": 8,
+ "url": "https://play.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_trust_services": {
+ "name": "Google Trust Services",
+ "categoryId": 5,
+ "url": "https://pki.goog/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_voice": {
+ "name": "Google Voice",
+ "categoryId": 2,
+ "url": "https://voice.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "google_workspace": {
+ "name": "Google Workspace",
+ "categoryId": 2,
+ "url": "https://workspace.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "hockeyapp": {
+ "name": "HockeyApp",
+ "categoryId": 101,
+ "url": "https://hockeyapp.net/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "id5-sync": {
+ "name": "ID5 Sync",
+ "categoryId": 4,
+ "url": "https://id5.io/",
+ "companyId": "id5-sync",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "identrust": {
+ "name": "IdenTrust, Inc.",
+ "categoryId": 5,
+ "url": "https://identrust.com/",
+ "companyId": "identrust",
+ "source": "AdGuard"
+ },
+ "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": "medialab",
+ "source": "AdGuard"
+ },
+ "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": "meta",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "iqiyi": {
+ "name": "iQiyi",
+ "categoryId": 0,
+ "url": "https://www.iqiyi.com/",
+ "companyId": "iqiyi",
+ "source": "AdGuard"
+ },
+ "ironsource": {
+ "name": "ironSource Ltd.",
+ "categoryId": 4,
+ "url": "https://www.is.com",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "isocket": {
+ "name": "isocket",
+ "categoryId": 4,
+ "url": "http://www.isocket.com/",
+ "companyId": "rubicon_project"
+ },
+ "isolarcloud": {
+ "name": "iSolarCloud",
+ "categoryId": 6,
+ "url": "https://isolarcloud.com/",
+ "companyId": "sungrow",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "jetbrains": {
+ "name": "JetBrains",
+ "categoryId": 8,
+ "url": "https://www.jetbrains.com/",
+ "companyId": "jetbrains",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "karambasecurity": {
+ "name": "Karamba Security",
+ "categoryId": 8,
+ "url": "https://karambasecurity.com/",
+ "companyId": "karambasecurity",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "kayo_sports": {
+ "name": "Kayo Sports",
+ "categoryId": 0,
+ "url": "https://kayosports.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "kik": {
+ "name": "Kik",
+ "categoryId": 7,
+ "url": "https://kik.com/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "launchpad": {
+ "name": "Launchpad",
+ "categoryId": 8,
+ "url": "https://launchpad.net/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "lets_encrypt": {
+ "name": "Let's Encrypt",
+ "categoryId": 5,
+ "url": "https://letsencrypt.org/",
+ "companyId": "isrg",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "lgads": {
+ "name": "LG Ad Solutions",
+ "categoryId": 4,
+ "url": "https://lgads.tv/",
+ "companyId": "lgcorp",
+ "source": "AdGuard"
+ },
+ "lgtv": {
+ "name": "LG TV",
+ "categoryId": 8,
+ "url": "https://www.lg.com/",
+ "companyId": "lgcorp",
+ "source": "AdGuard"
+ },
+ "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": 101,
+ "url": "https://uplandsoftware.com/localytics/",
+ "companyId": "upland",
+ "source": "AdGuard"
+ },
+ "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": "vk",
+ "source": "AdGuard"
+ },
+ "mail.ru_counter": {
+ "name": "Mail.Ru Counter",
+ "categoryId": 2,
+ "url": "http://mail.ru/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "mail.ru_group": {
+ "name": "Mail.Ru Group",
+ "categoryId": 7,
+ "url": "http://mail.ru/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "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",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "matrix": {
+ "name": "Matrix",
+ "categoryId": 5,
+ "url": "https://matrix.org/",
+ "companyId": "matrix",
+ "source": "AdGuard"
+ },
+ "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": "https://www.mediaglu.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "mediahub": {
+ "name": "MediaHub",
+ "categoryId": 4,
+ "url": "http://www.mediahub.com/",
+ "companyId": "mediahub"
+ },
+ "medialab": {
+ "name": "MediaLab.AI Inc.",
+ "categoryId": 8,
+ "url": "https://medialab.la/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "meganz": {
+ "name": "Mega Ltd.",
+ "categoryId": 8,
+ "url": "https://mega.io/",
+ "companyId": "meganz",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "mozilla": {
+ "name": "Mozilla Foundation",
+ "categoryId": 8,
+ "url": "https://www.mozilla.org/",
+ "companyId": "mozilla",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "msedge": {
+ "name": "Microsoft Edge",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/en-us/edge",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nab": {
+ "name": "National Australia Bank",
+ "categoryId": 8,
+ "url": "https://www.nab.com.au/",
+ "companyId": "nab",
+ "source": "AdGuard"
+ },
+ "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": 0,
+ "url": "https://www.netflix.com/",
+ "companyId": "netflix",
+ "source": "AdGuard"
+ },
+ "netify": {
+ "name": "Netify",
+ "categoryId": 8,
+ "url": "https://www.netify.ai/",
+ "companyId": "netify",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nine_direct_digital": {
+ "name": "Nine Digital Direct",
+ "categoryId": 4,
+ "url": "https://ninedigitaldirect.com.au/",
+ "companyId": "nine_entertainment",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nonli": {
+ "name": "Nonli",
+ "categoryId": 4,
+ "url": "https://www.nonli.com/",
+ "companyId": "nonli",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "notion": {
+ "name": "Notion",
+ "categoryId": 8,
+ "url": "https://www.notion.so/",
+ "companyId": "notion",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "ntppool": {
+ "name": "Network Time Protocol",
+ "categoryId": 5,
+ "url": "https://ntp.org/",
+ "companyId": "network_time_foundation",
+ "source": "AdGuard"
+ },
+ "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://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "open_share_count": {
+ "name": "Open Share Count",
+ "categoryId": 4,
+ "url": "http://opensharecount.com/",
+ "companyId": "open_share_count"
+ },
+ "openai": {
+ "name": "OpenAI",
+ "categoryId": 8,
+ "url": "https://openai.com/",
+ "companyId": "openai",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "oppo": {
+ "name": "OPPO",
+ "categoryId": 101,
+ "url": "https://www.oppo.com/",
+ "companyId": "bbk",
+ "source": "AdGuard"
+ },
+ "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_infinity": {
+ "name": "Oracle Infinity Behavioral Intelligence",
+ "categoryId": 6,
+ "url": "https://www.oracle.com/au/cx/marketing/digital-intelligence/",
+ "companyId": "oracle",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "outlook": {
+ "name": "Microsoft Outlook",
+ "categoryId": 13,
+ "url": "https://outlook.live.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "oztam": {
+ "name": "OzTAM",
+ "categoryId": 8,
+ "url": "https://oztam.com.au/",
+ "companyId": "oztam",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "perfops": {
+ "name": "PerfOps",
+ "categoryId": 6,
+ "url": "https://perfops.net/",
+ "companyId": "perfops",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Plex",
+ "categoryId": 0,
+ "url": "https://www.plex.tv/",
+ "companyId": "plex",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "proton_ag": {
+ "name": "Proton AG",
+ "categoryId": 2,
+ "url": "https://proton.me/",
+ "companyId": "proton_foundation",
+ "source": "AdGuard"
+ },
+ "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 International",
+ "categoryId": 2,
+ "url": "https://www.qq.com/",
+ "companyId": "tencent",
+ "source": "AdGuard"
+ },
+ "qrius": {
+ "name": "Qrius",
+ "categoryId": 7,
+ "url": "http://www.qrius.me/",
+ "companyId": "mediafed"
+ },
+ "qualaroo": {
+ "name": "Qualaroo",
+ "categoryId": 6,
+ "url": null,
+ "companyId": null
+ },
+ "qualcomm": {
+ "name": "Qualcomm",
+ "categoryId": 8,
+ "url": "https://www.qualcomm.com/",
+ "companyId": "qualcomm",
+ "source": "AdGuard"
+ },
+ "qualcomm_location_service": {
+ "name": "Qualcomm Location Service",
+ "categoryId": 15,
+ "url": "https://www.qualcomm.com/site/privacy/services",
+ "companyId": "qualcomm",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "rea_group": {
+ "name": "REA Group Ltd.",
+ "categoryId": 4,
+ "url": "https://www.rea-group.com/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "realestate.com.au": {
+ "name": "realestate.com.au Pty Limited",
+ "categoryId": 4,
+ "url": "https://www.realestate.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "recaptcha": {
+ "name": "reCAPTCHA",
+ "categoryId": 8,
+ "url": "https://www.google.com/recaptcha/about/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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": "https://www.reddit.com",
+ "companyId": "advance",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "samsung": {
+ "name": "Samsung",
+ "categoryId": 8,
+ "url": "https://www.samsung.com/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungads": {
+ "name": "Samsung Ads",
+ "categoryId": 4,
+ "url": "https://www.samsung.com/business/samsungads/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungapps": {
+ "name": "Samsung Apps",
+ "categoryId": 101,
+ "url": "https://www.samsung.com/au/apps/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungmobile": {
+ "name": "Samsung Mobile",
+ "categoryId": 101,
+ "url": "https://www.samsung.com/mobile/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungpush": {
+ "name": "Samsung Push",
+ "categoryId": 8,
+ "url": null,
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungsds": {
+ "name": "Samsung SDS",
+ "categoryId": 10,
+ "url": "https://www.samsungsds.com/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungtv": {
+ "name": "Samsung TV",
+ "categoryId": 15,
+ "url": "https://www.samsung.com/au/tvs/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "sectigo": {
+ "name": "Sectigo Limited",
+ "categoryId": 5,
+ "url": "https://www.sectigo.com",
+ "companyId": "sectigo",
+ "source": "AdGuard"
+ },
+ "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": "https://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": "SharePoint",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/microsoft-365/sharepoint/collaboration",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Shopify Inc.",
+ "categoryId": 2,
+ "url": "https://www.shopify.com/",
+ "companyId": "shopify",
+ "source": "AdGuard"
+ },
+ "shopify_stats": {
+ "name": "Shopify Stats",
+ "categoryId": 6,
+ "url": "http://www.shopify.com/",
+ "companyId": "shopify",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "showrss": {
+ "name": "showRSS",
+ "categoryId": 8,
+ "url": "https://showrss.info/",
+ "companyId": "showrss",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "similarweb": {
+ "name": "SimilarWeb",
+ "categoryId": 6,
+ "url": "https://www.similarweb.com/",
+ "companyId": "similarweb",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "slack": {
+ "name": "Slack",
+ "categoryId": 8,
+ "url": "https://www.slack.com/",
+ "companyId": "salesforce",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "snapcraft": {
+ "name": "Snapcraft",
+ "categoryId": 8,
+ "url": "https://snapcraft.io",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "solaredge": {
+ "name": "SolarEdge Technologies, Inc.",
+ "categoryId": 8,
+ "url": "https://www.solaredge.com/",
+ "companyId": "solaredge",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "sonos": {
+ "name": "Sonos",
+ "categoryId": 8,
+ "url": "https://www.sonos.com/",
+ "companyId": "sonos",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "streamotion": {
+ "name": "Streamotion",
+ "categoryId": 0,
+ "url": "https://streamotion.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "supercell": {
+ "name": "Supercell",
+ "categoryId": 2,
+ "url": "https://supercell.com/",
+ "companyId": "supercell",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "switchtv": {
+ "name": "Switch Media",
+ "categoryId": 8,
+ "url": "https://www.switch.tv/",
+ "companyId": "switchtv",
+ "source": "AdGuard"
+ },
+ "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": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "telstra": {
+ "name": "Telstra",
+ "categoryId": 8,
+ "url": "https://www.telstra.com.au/",
+ "companyId": "telstra",
+ "source": "AdGuard"
+ },
+ "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": "X (formerly Twitter)",
+ "categoryId": 7,
+ "url": "https://twitter.com",
+ "companyId": "twitter",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "ubuntu": {
+ "name": "Ubuntu",
+ "categoryId": 8,
+ "url": "https://ubuntu.com/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "unity": {
+ "name": "Unity",
+ "categoryId": 8,
+ "url": "https://unity.com/",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "unity_ads": {
+ "name": "Unity Ads",
+ "categoryId": 4,
+ "url": "https://unity.com/products/unity-ads",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "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": "vk",
+ "source": "AdGuard"
+ },
+ "vkontakte": {
+ "name": "VKontakte",
+ "categoryId": 7,
+ "url": "https://vk.com/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "vkontakte_widgets": {
+ "name": "VKontakte Widgets",
+ "categoryId": 7,
+ "url": "https://dev.vk.com/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "vs": {
+ "name": "Visual Studio",
+ "categoryId": 8,
+ "url": "https://visualstudio.microsoft.com",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "vscode": {
+ "name": "Visual Studio Code",
+ "categoryId": 8,
+ "url": "https://code.visualstudio.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "vtracy.de": {
+ "name": "vtracy.de",
+ "categoryId": 11,
+ "url": null,
+ "companyId": null
+ },
+ "vungle": {
+ "name": "Vungle",
+ "categoryId": 4,
+ "url": "https://vungle.com/",
+ "companyId": "blackstone",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "whatsapp": {
+ "name": "WhatsApp",
+ "categoryId": 8,
+ "url": "https://www.whatsapp.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "whisper": {
+ "name": "Whisper",
+ "categoryId": 7,
+ "url": "https://whisper.sh/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "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"
+ },
+ "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",
+ "categoryId": 11,
+ "url": "https://www.xenmedia.net/",
+ "companyId": "xenmedia",
+ "source": "AdGuard"
+ },
+ "xfreeservice.com": {
+ "name": "xfreeservice.com",
+ "categoryId": 11,
+ "url": null,
+ "companyId": null
+ },
+ "xhamster": {
+ "name": "xHamster",
+ "categoryId": 3,
+ "url": "https://xhamster.com/",
+ "companyId": "xhamster",
+ "source": "AdGuard"
+ },
+ "xiaomi": {
+ "name": "Xiaomi",
+ "categoryId": 8,
+ "url": "https://www.mi.com/",
+ "companyId": "xiaomi",
+ "source": "AdGuard"
+ },
+ "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",
+ "categoryId": 9,
+ "url": "https://www.xnxx.com",
+ "companyId": "xnxx",
+ "source": "AdGuard"
+ },
+ "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",
+ "categoryId": 8,
+ "url": "https://www.xvideos.com",
+ "companyId": "xvideos",
+ "source": "AdGuard"
+ },
+ "xxxlshop.de": {
+ "name": "XXXLutz",
+ "categoryId": 8,
+ "url": "https://www.xxxlutz.de/",
+ "companyId": "xxxlutz",
+ "source": "AdGuard"
+ },
+ "xxxlutz": {
+ "name": "XXXLutz",
+ "categoryId": 8,
+ "url": "https://www.xxxlutz.de/",
+ "companyId": "xxxlutz"
+ },
+ "yabbi": {
+ "name": "Yabbi",
+ "categoryId": 4,
+ "url": "https://yabbi.me/",
+ "companyId": "yabbi",
+ "source": "AdGuard"
+ },
+ "yabuka": {
+ "name": "Yabuka",
+ "categoryId": 4,
+ "url": "http://www.yabuka.com/",
+ "companyId": "yabuka"
+ },
+ "yahoo": {
+ "name": "Yahoo!",
+ "categoryId": 6,
+ "url": "https://yahoo.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_advertising": {
+ "name": "Yahoo! Advertising",
+ "categoryId": 4,
+ "url": "https://www.advertising.yahooinc.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_search": {
+ "name": "Yahoo! Search",
+ "categoryId": 4,
+ "url": "https://search.yahooinc.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_appmetrica": {
+ "name": "Yandex AppMetrica",
+ "categoryId": 101,
+ "url": "https://appmetrica.yandex.com/",
+ "companyId": "yandex",
+ "source": "AdGuard"
+ },
+ "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": "Ibexa Personalizaton Software",
+ "categoryId": 4,
+ "url": "https://yoochoose.net/",
+ "companyId": "ibexa",
+ "source": "AdGuard"
+ },
+ "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": "https://www.youporn.com/",
+ "companyId": "youporn",
+ "source": "AdGuard"
+ },
+ "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": "zeusclicks",
+ "source": "AdGuard"
+ },
+ "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": "livinglymedia",
+ "source": "AdGuard"
+ },
+ "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",
+ "3gpp.org": "3gpp",
+ "3gppnetwork.org": "3gpp",
+ "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",
+ "swm.digital": "7plus",
+ "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",
+ "ab.co": "abc",
+ "abc-cdn.net.au": "abc",
+ "abc-host.net": "abc",
+ "abc-host.net.au": "abc",
+ "abc-prod.net.au": "abc",
+ "abc-stage.net.au": "abc",
+ "abc-test.net.au": "abc",
+ "abc.net.au": "abc",
+ "abcaustralia.net.au": "abc",
+ "abcradio.net.au": "abc",
+ "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",
+ "adcolony.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",
+ "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",
+ "adguard.app": "adguard",
+ "adguard.info": "adguard",
+ "adguard.io": "adguard",
+ "adguard.org": "adguard",
+ "adtidy.org": "adguard",
+ "agrd.io": "adguard",
+ "agrd.eu": "adguard",
+ "adguard-dns.com": "adguard_dns",
+ "adguard-dns.io": "adguard_dns",
+ "adguard-vpn.com": "adguard_vpn",
+ "adguard-vpn.online": "adguard_vpn",
+ "adguardvpn.com": "adguard_vpn",
+ "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",
+ "adj.st": "adjust",
+ "adjust.io": "adjust",
+ "adjust.net.in": "adjust",
+ "adjust.world": "adjust",
+ "apptrace.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",
+ "admixer.com": "admixer",
+ "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",
+ "adobe.io": "adobe_developer",
+ "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",
+ "adobedc.net": "adobe_experience_league",
+ "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",
+ "adprofex.com": "adprofex",
+ "ads2.bid": "adprofex",
+ "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",
+ "affilbox.com": "affilbox",
+ "affilbox.cz": "affilbox",
+ "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",
+ "akadns.net": "akamai_technologies",
+ "akamaiedge.net": "akamai_technologies",
+ "akaquill.net": "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",
+ "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",
+ "alipay.com": "alipay.com",
+ "alipayobjects.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",
+ "amap.com": "amap",
+ "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",
+ "a2z.com": "amazon",
+ "aamazoncognito.com": "amazon",
+ "amazon-corp.com": "amazon",
+ "amazon-dss.com": "amazon",
+ "amazon.com.au": "amazon",
+ "amazon.com.mx": "amazon",
+ "amazon.dev": "amazon",
+ "amazon.in": "amazon",
+ "amazon.nl": "amazon",
+ "amazon.sa": "amazon",
+ "amazonbrowserapp.co.uk": "amazon",
+ "amazonbrowserapp.es": "amazon",
+ "amazoncrl.com": "amazon",
+ "firetvcaptiveportal.com": "amazon",
+ "ntp-fireos.com": "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",
+ "amazontrust.com": "amazon_cdn",
+ "associates-amazon.com": "amazon_cdn",
+ "cloudfront.net": "amazon_cloudfront",
+ "ota-cloudfront.net": "amazon_cloudfront",
+ "axx-eu.amazon-adsystem.com": "amazon_mobile_ads",
+ "amazonpay.com": "amazon_payments",
+ "payments-amazon.com": "amazon_payments",
+ "amazonpay.in": "amazon_payments",
+ "aiv-cdn.net": "amazon_video",
+ "aiv-delivery.net": "amazon_video",
+ "amazonvideo.com": "amazon_video",
+ "pv-cdn.net": "amazon_video",
+ "primevideo.com": "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",
+ "android.com": "android",
+ "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",
+ "appcenter.ms": "appcenter",
+ "appcues.com": "appcues",
+ "appdynamics.com": "appdynamics",
+ "de8of677fyt0b.cloudfront.net": "appdynamics",
+ "eum-appdynamics.com": "appdynamics",
+ "jscdn.appier.net": "appier",
+ "apple.com": "apple",
+ "aaplimg.com": "apple",
+ "apple-cloudkit.com": "apple",
+ "apple-dns.net": "apple",
+ "apple-livephotoskit.com": "apple",
+ "apple-mapkit.com": "apple",
+ "apple.news": "apple",
+ "apzones.com": "apple",
+ "cdn-apple.com": "apple",
+ "icloud-content.com": "apple",
+ "icloud.com": "apple",
+ "icons.axm-usercontent-apple.com": "apple",
+ "itunes.com": "apple",
+ "me.com": "apple",
+ "mzstatic.com": "apple",
+ "safebrowsing.apple": "apple",
+ "safebrowsing.g.applimg.com": "apple",
+ "iadsdk.apple.com": "apple_ads",
+ "applifier.com": "applifier",
+ "assets.applovin.com": "applovin",
+ "applovin.com": "applovin",
+ "applvn.com": "applovin",
+ "appmetrx.com": "appmetrx",
+ "adnxs.com": "appnexus",
+ "adnxs.net": "appnexus",
+ "appsflyer.com": "appsflyer",
+ "appsflyersdk.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",
+ "ads.assemblyexchange.com": "assemblyexchange",
+ "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",
+ "bitbucket.org": "atlassian.net",
+ "jira.com": "atlassian.net",
+ "ss-inf.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",
+ "ad.gt": "audiencesquare.com",
+ "audigent.com": "audiencesquare.com",
+ "hadronid.net": "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",
+ "azure.com": "azure",
+ "azure.net": "azure",
+ "azurefd.net": "azure",
+ "trafficmanager.net": "azure",
+ "blob.core.windows.net": "azure_blob_storage",
+ "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",
+ "binge.com.au": "binge",
+ "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",
+ "bitwarden.com": "bitwarden",
+ "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",
+ "bom.gov.au": "bom",
+ "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",
+ "mobileapptracking.com": "branch",
+ "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",
+ "braze.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",
+ "bttn.io": "button",
+ "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",
+ "canonical.com": "canonical",
+ "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",
+ "chartboost.com": "chartboost",
+ "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",
+ "clickaine.com": "clickaine",
+ "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",
+ "cloudflare-dm-cmpimg.com": "cloudflare",
+ "cloudflare-dns.com": "cloudflare",
+ "cloudflare-ipfs.com": "cloudflare",
+ "cloudflare-quic.com": "cloudflare",
+ "cloudflare-terms-of-service-abuse.com": "cloudflare",
+ "cloudflare.tv": "cloudflare",
+ "cloudflareaccess.com": "cloudflare",
+ "cloudflareclient.com": "cloudflare",
+ "cloudflareinsights.com": "cloudflare",
+ "cloudflareok.com": "cloudflare",
+ "cloudflareportal.com": "cloudflare",
+ "cloudflareresolve.com": "cloudflare",
+ "cloudflaressl.com": "cloudflare",
+ "cloudflarestatus.com": "cloudflare",
+ "cloudflarestream.com": "cloudflare",
+ "pacloudflare.com": "cloudflare",
+ "sn-cloudflare.com": "cloudflare",
+ "videodelivery.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",
+ "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",
+ "crashlytics.com": "crashlytics",
+ "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",
+ "phicdn.net": "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",
+ "disneyplus.com": "disneyplus",
+ "bamgrid.com": "disneystreaming",
+ "dssedge.com": "disneystreaming",
+ "dssott.com": "disneystreaming",
+ "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",
+ "domain.glass": "domainglass",
+ "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",
+ "doublepimp.com": "doublepimp",
+ "doublepimpssl.com": "doublepimp",
+ "redcourtside.com": "doublepimp",
+ "xeontopa.com": "doublepimp",
+ "zerezas.com": "doublepimp",
+ "doubleverify.com": "doubleverify",
+ "wrating.com": "dratio",
+ "adsymptotic.com": "drawbridge",
+ "dreame.tech": "dreame_tech",
+ "dreametech.com": "dreame_tech",
+ "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",
+ "alphacdn.net": "edgio",
+ "edg.io": "edgio",
+ "edgecast.com": "edgio",
+ "edgecastcdn.net": "edgio",
+ "edgecastdns.net": "edgio",
+ "sigmacdn.net": "edgio",
+ "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",
+ "cloudcell.com": "electronic_arts",
+ "ea.com": "electronic_arts",
+ "eamobile.com": "electronic_arts",
+ "element.io": "element",
+ "riot.im": "element",
+ "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",
+ "graph.facebook.com": "facebook_audience",
+ "fbcdn.net": "facebook_cdn",
+ "fbsbx.com": "facebook_cdn",
+ "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",
+ "farlightgames.com": "farlight_pte_ltd",
+ "fastly-insights.com": "fastly_insights",
+ "fastly.net": "fastlylb.net",
+ "fastlylb.net": "fastlylb.net",
+ "fastly-edge.com": "fastlylb.net",
+ "fastly-masque.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",
+ "app-measurement.com": "firebase",
+ "fcm.googleapis.com": "firebase",
+ "firebase.com": "firebase",
+ "firebase.google.com": "firebase",
+ "firebase.googleapis.com": "firebase",
+ "firebaseapp.com": "firebase",
+ "firebaseappcheck.googleapis.com": "firebase",
+ "firebasedynamiclinks-ipv4.googleapis.com": "firebase",
+ "firebasedynamiclinks-ipv6.googleapis.com": "firebase",
+ "firebasedynamiclinks.googleapis.com": "firebase",
+ "firebaseinappmessaging.googleapis.com": "firebase",
+ "firebaseinstallations.googleapis.com": "firebase",
+ "firebaselogging-pa.googleapis.com": "firebase",
+ "firebaselogging.googleapis.com": "firebase",
+ "firebaseperusertopics-pa.googleapis.com": "firebase",
+ "firebaseremoteconfig.googleapis.com": "firebase",
+ "firebaseio.com": "firebaseio.com",
+ "firstimpression.io": "first_impression",
+ "fitanalytics.com": "fit_analytics",
+ "fivetran.com": "fivetran",
+ "flagads.net": "flag_ads",
+ "flagcounter.com": "flag_counter",
+ "flashnews.com.au": "flash",
+ "flashtalking.com": "flashtalking",
+ "flattr.com": "flattr_button",
+ "flexlinks.com": "flexoffers",
+ "linkoffers.net": "flexoffers",
+ "flickr.com": "flickr_badge",
+ "staticflickr.com": "flickr_badge",
+ "lflipboard.com": "flipboard",
+ "flipboard.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",
+ "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",
+ "foxsports.com.au": "fox_sports",
+ "fncstatic.com": "foxnews_static",
+ "cdn.foxpush.net": "foxpush",
+ "foxpush.com": "foxpush",
+ "foxtel.com.au": "foxtel",
+ "foxtelgroupcdn.net.au": "foxtel",
+ "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",
+ "freeview.com": "freeview",
+ "freeview.com.au": "freeview",
+ "freeviewaustralia.tv": "freeview",
+ "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",
+ "gameanalytics.com": "gameanalytics",
+ "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",
+ "ghcr.io": "github",
+ "github.blog": "github",
+ "github.dev": "github",
+ "octocaptcha.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",
+ "gmail.com": "gmail",
+ "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",
+ "1e100.net": "google",
+ "agnss.goog": "google",
+ "channel.status.request.url": "google",
+ "g.cn": "google",
+ "g.co": "google",
+ "google.ad": "google",
+ "google.ae": "google",
+ "google.al": "google",
+ "google.am": "google",
+ "google.as": "google",
+ "google.az": "google",
+ "google.ba": "google",
+ "google.bf": "google",
+ "google.bg": "google",
+ "google.bi": "google",
+ "google.bj": "google",
+ "google.bs": "google",
+ "google.bt": "google",
+ "google.by": "google",
+ "google.cat": "google",
+ "google.cd": "google",
+ "google.cf": "google",
+ "google.cg": "google",
+ "google.ci": "google",
+ "google.cl": "google",
+ "google.cm": "google",
+ "google.cn": "google",
+ "google.co.ao": "google",
+ "google.co.bw": "google",
+ "google.co.ck": "google",
+ "google.co.cr": "google",
+ "google.co.il": "google",
+ "google.co.ke": "google",
+ "google.co.kr": "google",
+ "google.co.ls": "google",
+ "google.co.mz": "google",
+ "google.co.nz": "google",
+ "google.co.tz": "google",
+ "google.co.ug": "google",
+ "google.co.uz": "google",
+ "google.co.ve": "google",
+ "google.co.vi": "google",
+ "google.co.za": "google",
+ "google.co.zm": "google",
+ "google.co.zw": "google",
+ "google.com.af": "google",
+ "google.com.ag": "google",
+ "google.com.ai": "google",
+ "google.com.bd": "google",
+ "google.com.bh": "google",
+ "google.com.bn": "google",
+ "google.com.bo": "google",
+ "google.com.bz": "google",
+ "google.com.co": "google",
+ "google.com.cu": "google",
+ "google.com.cy": "google",
+ "google.com.ec": "google",
+ "google.com.eg": "google",
+ "google.com.et": "google",
+ "google.com.fj": "google",
+ "google.com.gh": "google",
+ "google.com.gi": "google",
+ "google.com.gt": "google",
+ "google.com.hk": "google",
+ "google.com.jm": "google",
+ "google.com.kh": "google",
+ "google.com.kw": "google",
+ "google.com.lb": "google",
+ "google.com.my": "google",
+ "google.com.na": "google",
+ "google.com.nf": "google",
+ "google.com.ng": "google",
+ "google.com.ni": "google",
+ "google.com.np": "google",
+ "google.com.om": "google",
+ "google.com.pa": "google",
+ "google.com.pe": "google",
+ "google.com.pg": "google",
+ "google.com.ph": "google",
+ "google.com.pk": "google",
+ "google.com.pr": "google",
+ "google.com.py": "google",
+ "google.com.qa": "google",
+ "google.com.sa": "google",
+ "google.com.sb": "google",
+ "google.com.sg": "google",
+ "google.com.sl": "google",
+ "google.com.sv": "google",
+ "google.com.tj": "google",
+ "google.com.uy": "google",
+ "google.com.vc": "google",
+ "google.com.vn": "google",
+ "google.cv": "google",
+ "google.dj": "google",
+ "google.dm": "google",
+ "google.ee": "google",
+ "google.fm": "google",
+ "google.ga": "google",
+ "google.ge": "google",
+ "google.gg": "google",
+ "google.gl": "google",
+ "google.gm": "google",
+ "google.gp": "google",
+ "google.gy": "google",
+ "google.hn": "google",
+ "google.hr": "google",
+ "google.ht": "google",
+ "google.im": "google",
+ "google.in": "google",
+ "google.iq": "google",
+ "google.is": "google",
+ "google.je": "google",
+ "google.jo": "google",
+ "google.kg": "google",
+ "google.ki": "google",
+ "google.kz": "google",
+ "google.la": "google",
+ "google.li": "google",
+ "google.lk": "google",
+ "google.lt": "google",
+ "google.lu": "google",
+ "google.lv": "google",
+ "google.md": "google",
+ "google.me": "google",
+ "google.mg": "google",
+ "google.mk": "google",
+ "google.ml": "google",
+ "google.mn": "google",
+ "google.ms": "google",
+ "google.mu": "google",
+ "google.mv": "google",
+ "google.mw": "google",
+ "google.ne": "google",
+ "google.net": "google",
+ "google.nr": "google",
+ "google.nu": "google",
+ "google.org": "google",
+ "google.pn": "google",
+ "google.ps": "google",
+ "google.rw": "google",
+ "google.sc": "google",
+ "google.sh": "google",
+ "google.si": "google",
+ "google.sk": "google",
+ "google.sm": "google",
+ "google.sn": "google",
+ "google.so": "google",
+ "google.sr": "google",
+ "google.st": "google",
+ "google.td": "google",
+ "google.tg": "google",
+ "google.tk": "google",
+ "google.tl": "google",
+ "google.tm": "google",
+ "google.to": "google",
+ "google.tt": "google",
+ "google.us": "google",
+ "google.vg": "google",
+ "google.vu": "google",
+ "google.ws": "google",
+ "googleapis.cn": "google",
+ "googlecode.com": "google",
+ "googledownloads.cn": "google",
+ "googleoptimize.com": "google",
+ "googleweblight.in": "google",
+ "googlezip.net": "google",
+ "gstatic.cn": "google",
+ "news.google.com": "google",
+ "oo.gl": "google",
+ "withgoogle.com": "google",
+ "googleadservices.com": "google_adservices",
+ "google-analytics.com": "google_analytics",
+ "app-analytics-services.com": "google_analytics",
+ "ssl-google-analytics.l.google.com": "google_analytics",
+ "www-googletagmanager.l.google.com": "google_analytics",
+ "appspot.com": "google_appspot",
+ "googlehosted.com": "google_appspot",
+ "accounts.google.com": "google_auth",
+ "myaccount.google.com": "google_auth",
+ "oauth2.googleapis.com": "google_auth",
+ "ogs.google.com": "google_auth",
+ "securetoken.googleapis.com": "google_auth",
+ "beacons-google.com": "google_beacons",
+ "alt1-mtalk.google.com": "google_chat",
+ "alt2-mtalk.google.com": "google_chat",
+ "alt3-mtalk.google.com": "google_chat",
+ "alt4-mtalk.google.com": "google_chat",
+ "alt5-mtalk.google.com": "google_chat",
+ "alt6-mtalk.google.com": "google_chat",
+ "alt7-mtalk.google.com": "google_chat",
+ "alt8-mtalk.google.com": "google_chat",
+ "chat.google.com": "google_chat",
+ "mobile-gtalk.l.google.com": "google_chat",
+ "mobile-gtalk4.l.google.com": "google_chat",
+ "mtalk.google.com": "google_chat",
+ "mtalk4.google.com": "google_chat",
+ "talk.google.com": "google_chat",
+ "talk.l.google.com": "google_chat",
+ "talkx.l.google.com": "google_chat",
+ "cloud.google.com": "google_cloud_platform",
+ "gcp.gvt2.com": "google_cloud_platform",
+ "storage.googleapis.com": "google_cloud_storage",
+ "adsensecustomsearchads.com": "google_custom_search",
+ "dns.google": "google_dns",
+ "dns.google.com": "google_dns",
+ "google-public-dns-a.google.com": "google_dns",
+ "google-public-dns-b.google.com": "google_dns",
+ "domains.google": "google_domains",
+ "googledomains.com": "google_domains",
+ "nic.google": "google_domains",
+ "registry.google": "google_domains",
+ "edge.google.com": "google_edge",
+ "mail-ads.google.com": "google_email",
+ "fonts.googleapis.com": "google_fonts",
+ "cloudfunctions.net": "google_hosted",
+ "ghs.googlehosted.com": "google_hosted",
+ "ghs4.googlehosted.com": "google_hosted",
+ "ghs46.googlehosted.com": "google_hosted",
+ "ghs6.googlehosted.com": "google_hosted",
+ "googlehosted.l.googleusercontent.com": "google_hosted",
+ "run.app": "google_hosted",
+ "supl.google.com": "google_location",
+ "earth.app.goo.gl": "google_maps",
+ "geo0.ggpht.com": "google_maps",
+ "geo1.ggpht.com": "google_maps",
+ "geo2.ggpht.com": "google_maps",
+ "geo3.ggpht.com": "google_maps",
+ "kh.google.com": "google_maps",
+ "maps.app.goo.gl": "google_maps",
+ "maps.google.ca": "google_maps",
+ "maps.google.ch": "google_maps",
+ "maps.google.co.jp": "google_maps",
+ "maps.google.co.uk": "google_maps",
+ "maps.google.com": "google_maps",
+ "maps.google.com.mx": "google_maps",
+ "maps.google.es": "google_maps",
+ "maps.google.se": "google_maps",
+ "maps.gstatic.com": "google_maps",
+ "doubleclick.net": "google_marketing",
+ "invitemedia.com": "google_marketing",
+ "adsense.google.com": "google_marketing",
+ "adservice.google.ca": "google_marketing",
+ "adservice.google.co.in": "google_marketing",
+ "adservice.google.co.kr": "google_marketing",
+ "adservice.google.co.uk": "google_marketing",
+ "adservice.google.co.za": "google_marketing",
+ "adservice.google.com": "google_marketing",
+ "adservice.google.com.ar": "google_marketing",
+ "adservice.google.com.au": "google_marketing",
+ "adservice.google.com.br": "google_marketing",
+ "adservice.google.com.co": "google_marketing",
+ "adservice.google.com.gt": "google_marketing",
+ "adservice.google.com.mx": "google_marketing",
+ "adservice.google.com.pe": "google_marketing",
+ "adservice.google.com.ph": "google_marketing",
+ "adservice.google.com.pk": "google_marketing",
+ "adservice.google.com.tr": "google_marketing",
+ "adservice.google.com.tw": "google_marketing",
+ "adservice.google.com.vn": "google_marketing",
+ "adservice.google.de": "google_marketing",
+ "adservice.google.dk": "google_marketing",
+ "adservice.google.es": "google_marketing",
+ "adservice.google.fr": "google_marketing",
+ "adservice.google.nl": "google_marketing",
+ "adservice.google.no": "google_marketing",
+ "adservice.google.pl": "google_marketing",
+ "adservice.google.ru": "google_marketing",
+ "adservice.google.vg": "google_marketing",
+ "adtrafficquality.google": "google_marketing",
+ "dai.google.com": "google_marketing",
+ "doubleclick.com": "google_marketing",
+ "doubleclickbygoogle.com": "google_marketing",
+ "googlesyndication-cn.com": "google_marketing",
+ "duo.google.com": "google_meet",
+ "hangouts.clients6.google.com": "google_meet",
+ "hangouts.google.com": "google_meet",
+ "hangouts.googleapis.com": "google_meet",
+ "meet.google.com": "google_meet",
+ "meetings.googleapis.com": "google_meet",
+ "stun.l.google.com": "google_meet",
+ "stun1.l.google.com": "google_meet",
+ "ggpht.com": "google_photos",
+ "play-fe.googleapis.com": "google_play",
+ "play-lh.googleusercontent.com": "google_play",
+ "play.google.com": "google_play",
+ "play.googleapis.com": "google_play",
+ "1e100cdn.net": "google_servers",
+ "gvt1.com": "google_servers",
+ "gvt2.com": "google_servers",
+ "gvt3.com": "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",
+ "pki.goog": "google_trust_services",
+ "googlecommerce.com": "google_trusted_stores",
+ "googleusercontent.com": "google_users",
+ "telephony.goog": "google_voice",
+ "voice.google.com": "google_voice",
+ "gmodules.com": "google_widgets",
+ "calendar.google.com": "google_workspace",
+ "contacts.google.com": "google_workspace",
+ "currents.google.com": "google_workspace",
+ "docs.google.com": "google_workspace",
+ "drive.google.com": "google_workspace",
+ "forms.google.com": "google_workspace",
+ "gsuite.google.com": "google_workspace",
+ "jamboard.google.com": "google_workspace",
+ "keep.google.com": "google_workspace",
+ "plus.google.com": "google_workspace",
+ "sheets.google.com": "google_workspace",
+ "slides.google.com": "google_workspace",
+ "spreadsheets.google.com": "google_workspace",
+ "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",
+ "hockeyapp.net": "hockeyapp",
+ "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",
+ "eu-1-id5-sync.com": "id5-sync",
+ "id5-sync.com": "id5-sync",
+ "id5.io": "id5-sync",
+ "cdn.id.services": "id_services",
+ "e-generator.com": "ideal_media",
+ "idealo.com": "idealo_com",
+ "identrust.com": "identrust",
+ "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",
+ "iq.com": "iqiyi",
+ "iqiyi.com": "iqiyi",
+ "qy.net": "iqiyi",
+ "addelive.com": "ironsource",
+ "afdads.com": "ironsource",
+ "delivery47.com": "ironsource",
+ "ironsrc.com": "ironsource",
+ "ironsrc.net": "ironsource",
+ "is.com": "ironsource",
+ "soom.la": "ironsource",
+ "supersonicads.com": "ironsource",
+ "tapjoy.com": "ironsource",
+ "adsbyisocket.com": "isocket",
+ "isocket.com": "isocket",
+ "isolarcloud.com": "isolarcloud",
+ "isolarcloud.com.a.lahuashanbx.com": "isolarcloud",
+ "isolarcloud.com.w.cdngslb.com": "isolarcloud",
+ "isolarcloud.com.w.kunlunsl.com": "isolarcloud",
+ "ispot.tv": "ispot.tv",
+ "itineraire.info": "itineraire.info",
+ "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",
+ "grazie.ai": "jetbrains",
+ "intellij.net": "jetbrains",
+ "jb.gg": "jetbrains",
+ "jetbrains.ai": "jetbrains",
+ "jetbrains.com": "jetbrains",
+ "jetbrains.com.cn": "jetbrains",
+ "jetbrains.dev": "jetbrains",
+ "jetbrains.net": "jetbrains",
+ "jetbrains.org": "jetbrains",
+ "jetbrains.ru": "jetbrains",
+ "jetbrains.space": "jetbrains",
+ "kotl.in": "jetbrains",
+ "kotlinconf.com": "jetbrains",
+ "kotlinlang.org": "jetbrains",
+ "myjetbrains.com": "jetbrains",
+ "talkingkotlin.com": "jetbrains",
+ "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",
+ "karambasecurity.com": "karambasecurity",
+ "kargo.com": "kargo",
+ "kaspersky-labs.com": "kaspersky-labs.com",
+ "kataweb.it": "kataweb.it",
+ "cen.katchup.fr": "katchup",
+ "kau.li": "kauli",
+ "kavanga.ru": "kavanga",
+ "kayosports.com.au": "kayo_sports",
+ "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",
+ "apikik.com": "kik",
+ "kik-gateway-use1.meetme.com": "kik",
+ "kik-live.com": "kik",
+ "kik-stream.meetme.com": "kik",
+ "kik.com": "kik",
+ "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",
+ "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",
+ "launchdarkly.com": "launch_darkly",
+ "launchbit.com": "launchbit",
+ "launchpad.net": "launchpad",
+ "launchpadcontent.net": "launchpad",
+ "layer-ad.org": "layer-ad.org",
+ "ph-live.slatic.net": "lazada",
+ "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",
+ "lencr.org": "lets_encrypt",
+ "letsencrypt.org": "lets_encrypt",
+ "js.letvcdn.com": "letv",
+ "footprint.net": "level3_communications",
+ "alphonso.tv": "lgads",
+ "lgads.tv": "lgads",
+ "lg.com": "lgtv",
+ "lge.com": "lgtv",
+ "lgsmartad.com": "lgtv",
+ "lgtvcommon.com": "lgtv",
+ "lgtvsdp.com": "lgtv",
+ "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",
+ "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",
+ "markmonitor.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",
+ "matrix.org": "matrix",
+ "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",
+ "media-lab.ai": "medialab",
+ "medialab.la": "medialab",
+ "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",
+ "mega.co.nz": "meganz",
+ "mega.io": "meganz",
+ "mega.nz": "meganz",
+ "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",
+ "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",
+ "aka.ms": "microsoft",
+ "microsoftazuread-sso.com": "microsoft",
+ "bingapis.com": "microsoft",
+ "msauth.net": "microsoft",
+ "msauthimages.net": "microsoft",
+ "msftauth.net": "microsoft",
+ "msftstatic.com": "microsoft",
+ "msidentity.com": "microsoft",
+ "nelreports.net": "microsoft",
+ "windowscentral.com": "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",
+ "firefox.com": "mozilla",
+ "mozaws.net": "mozilla",
+ "mozgcp.net": "mozilla",
+ "mozilla.com": "mozilla",
+ "mozilla.net": "mozilla",
+ "mozilla.org": "mozilla",
+ "storage.mozoo.com": "mozoo",
+ "tracker.mrpfd.com": "mrp",
+ "mrpdata.com": "mrpdata",
+ "mrpdata.net": "mrpdata",
+ "mrskincash.com": "mrskincash",
+ "a-msedge.net": "msedge",
+ "b-msedge.net": "msedge",
+ "dual-s-msedge.net": "msedge",
+ "e-msedge.net": "msedge",
+ "k-msedge.net": "msedge",
+ "l-msedge.net": "msedge",
+ "s-msedge.net": "msedge",
+ "spo-msedge.net": "msedge",
+ "t-msedge.net": "msedge",
+ "wac-msedge.net": "msedge",
+ "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",
+ "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",
+ "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",
+ "flxvpn.net": "netflix",
+ "netflix.ca": "netflix",
+ "netflix.com.au": "netflix",
+ "netflix.net": "netflix",
+ "netflixdnstest1.com": "netflix",
+ "netflixdnstest10.com": "netflix",
+ "netflixdnstest2.com": "netflix",
+ "netflixdnstest3.com": "netflix",
+ "netflixdnstest4.com": "netflix",
+ "netflixdnstest5.com": "netflix",
+ "netflixdnstest6.com": "netflix",
+ "netflixdnstest7.com": "netflix",
+ "netflixdnstest8.com": "netflix",
+ "netflixdnstest9.com": "netflix",
+ "netflixinvestor.com": "netflix",
+ "netflixstudios.com": "netflix",
+ "netflixtechblog.com": "netflix",
+ "nflximg.com": "netflix",
+ "netify.ai": "netify",
+ "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",
+ "codestream.com": "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",
+ "nineanalytics.io": "nine_direct_digital",
+ "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",
+ "nonli.com": "nonli",
+ "non.li": "nonli",
+ "trkme.net": "nonstop_consulting",
+ "noop.style": "noop.style",
+ "nosto.com": "nosto.com",
+ "adleadevent.com": "notify",
+ "notifyfox.com": "notifyfox",
+ "notion.so": "notion",
+ "nowinteract.com": "now_interact",
+ "npario-inc.net": "npario",
+ "nplexmedia.com": "nplexmedia",
+ "nrelate.com": "nrelate",
+ "ns8.com": "ns8",
+ "nt.vc": "nt.vc",
+ "featurelink.com": "ntent",
+ "ntp.org": "ntppool",
+ "ntppool.org": "ntppool",
+ "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",
+ "chatgpt.com": "openai",
+ "oaistatic.com": "openai",
+ "oaiusercontent.com": "openai",
+ "openai.com": "openai",
+ "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",
+ "allawnos.com": "oppo",
+ "allawntech.com": "oppo",
+ "heytapdl.com": "oppo",
+ "heytapmobi.com": "oppo",
+ "heytapmobile.com": "oppo",
+ "oppomobile.com": "oppo",
+ "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",
+ "episerver.net": "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",
+ "oracleinfinity.io": "oracle_infinity",
+ "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",
+ "live.com": "outlook",
+ "cloud.microsoft": "outlook",
+ "hotmail.com": "outlook",
+ "outlook.com": "outlook",
+ "svc.ms": "outlook",
+ "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",
+ "oztam.com.au": "oztam",
+ "pageanalytics.space": "pageanalytics.space",
+ "blockmetrics.com": "pagefair",
+ "pagefair.com": "pagefair",
+ "pagefair.net": "pagefair",
+ "btloader.com": "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",
+ "perfops.io": "perfops",
+ "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",
+ "plex.bz": "plex",
+ "plex.direct": "plex",
+ "plex.tv": "plex",
+ "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",
+ "popcashjs.b-cdn.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",
+ "reports.proton.me": "proton_ag",
+ "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",
+ "qualcomm.com": "qualcomm",
+ "gpsonextra.net": "qualcomm_location_service",
+ "izatcloud.net": "qualcomm_location_service",
+ "xtracloud.net": "qualcomm_location_service",
+ "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",
+ "rea-group.com": "rea_group",
+ "reagroupdata.com.au": "rea_group",
+ "reastatic.net": "rea_group",
+ "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",
+ "realestate.com.au": "realestate.com.au",
+ "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",
+ "recaptcha.net": "recaptcha",
+ "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",
+ "game-mode.net": "samsung",
+ "gos-gsp.io": "samsung",
+ "lldns.net": "samsung",
+ "pavv.co.kr": "samsung",
+ "remotesamsung.com": "samsung",
+ "samsung-gamelauncher.com": "samsung",
+ "samsung.co.kr": "samsung",
+ "samsung.com": "samsung",
+ "samsung.com.cn": "samsung",
+ "samsungcloud.com": "samsung",
+ "samsungcloudcdn.com": "samsung",
+ "samsungcloudprint.com": "samsung",
+ "samsungcloudsolution.com": "samsung",
+ "samsungcloudsolution.net": "samsung",
+ "samsungelectronics.com": "samsung",
+ "samsunghealth.com": "samsung",
+ "samsungiotcloud.com": "samsung",
+ "samsungknox.com": "samsung",
+ "samsungnyc.com": "samsung",
+ "samsungosp.com": "samsung",
+ "samsungotn.net": "samsung",
+ "samsungpositioning.com": "samsung",
+ "samsungqbe.com": "samsung",
+ "samsungrm.net": "samsung",
+ "samsungrs.com": "samsung",
+ "samsungsemi.com": "samsung",
+ "samsungsetup.com": "samsung",
+ "samsungusa.com": "samsung",
+ "secb2b.com": "samsung",
+ "smartthings.com": "samsung",
+ "adgear.com": "samsungads",
+ "adgrx.com": "samsungads",
+ "samsungacr.com": "samsungads",
+ "samsungadhub.com": "samsungads",
+ "samsungads.com": "samsungads",
+ "samsungtifa.com": "samsungads",
+ "aibixby.com": "samsungapps",
+ "findmymobile.samsung.com": "samsungapps",
+ "samsapps.cust.lldns.net": "samsungapps",
+ "samsung-omc.com": "samsungapps",
+ "samsungapps.com": "samsungapps",
+ "samsungdiroute.net": "samsungapps",
+ "samsungdive.com": "samsungapps",
+ "samsungdm.com": "samsungapps",
+ "samsungdmroute.com": "samsungapps",
+ "samsungmdec.com": "samsungapps",
+ "samsungvisioncloud.com": "samsungapps",
+ "sbixby.com": "samsungapps",
+ "ospserver.net": "samsungmobile",
+ "samsungdms.net": "samsungmobile",
+ "samsungmax.com": "samsungmobile",
+ "samsungmobile.com": "samsungmobile",
+ "secmobilesvc.com": "samsungmobile",
+ "push.samsungosp.com": "samsungpush",
+ "pushmessage.samsung.com": "samsungpush",
+ "scs.samsungqbe.com": "samsungpush",
+ "ssp.samsung.com": "samsungpush",
+ "samsungsds.com": "samsungsds",
+ "internetat.tv": "samsungtv",
+ "samsungcloud.tv": "samsungtv",
+ "tizenservice.com": "samsungtv",
+ "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",
+ "sectigo.com": "sectigo",
+ "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",
+ "onmicrosoft.com": "sharepoint",
+ "sharepoint.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",
+ "shopifycdn.com": "shopify",
+ "cdn.shopify.com": "shopify",
+ "myshopify.com": "shopify",
+ "shop.app": "shopify",
+ "shopify.co.za": "shopify",
+ "shopify.com.au": "shopify",
+ "shopify.com.mx": "shopify",
+ "shopify.dev": "shopify",
+ "shopifyapps.com": "shopify",
+ "shopifycdn.net": "shopify",
+ "shopifynetwork.com": "shopify",
+ "shopifypreview.com": "shopify",
+ "shopifysvc.com": "shopify_stats",
+ "stats.shopify.com": "shopify_stats",
+ "v.shopify.com": "shopify_stats",
+ "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",
+ "showrss.info": "showrss",
+ "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",
+ "similarweb.com": "similarweb",
+ "similarweb.io": "similarweb",
+ "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",
+ "slack-edge.com": "slack",
+ "slack-imgs.com": "slack",
+ "slack.com": "slack",
+ "slackb.com": "slack",
+ "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",
+ "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",
+ "snapengage.com": "snap_engage",
+ "sc-static.net": "snapchat",
+ "snapchat.com": "snapchat",
+ "snapcraft.io": "snapcraft",
+ "snapcraftcontent.com": "snapcraft",
+ "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",
+ "solaredge.com": "solaredge",
+ "solidopinion.com": "solidopinion",
+ "pixel.solvemedia.com": "solve_media",
+ "soma2.de": "soma_2",
+ "mobileadtrading.com": "somoaudience",
+ "sonobi.com": "sonobi",
+ "sonos.com": "sonos",
+ "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",
+ "pscdn.co": "spotify",
+ "spotifycdn.com": "spotify",
+ "spotifycdn.net": "spotify",
+ "spotilocal.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",
+ "stspg-customer.com": "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",
+ "streamotion.com.au": "streamotion",
+ "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",
+ "supercell.com": "supercell",
+ "supercellsupport.com": "supercell",
+ "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",
+ "switch.tv": "switchtv",
+ "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",
+ "taobao.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",
+ "telstra.com": "telstra",
+ "telstra.com.au": "telstra",
+ "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",
+ "sync-transcend-cdn.com": "transcend",
+ "transcend-cdn.com": "transcend",
+ "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",
+ "usertrust.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",
+ "twttr.com": "twitter",
+ "x.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",
+ "ubuntu.com": "ubuntu",
+ "ubuntucompanyservices.co.za": "ubuntu",
+ "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",
+ "unity.com": "unity",
+ "unity3d.com": "unity",
+ "unity3dusercontent.com": "unity",
+ "unityads.unity3d.com": "unity_ads",
+ "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",
+ "vsassets.io": "vs",
+ "exp-tas.com": "vscode",
+ "v0cdn.net": "vscode",
+ "vscode-cdn.net": "vscode",
+ "vscode-unpkg.net": "vscode",
+ "vtracy.de": "vtracy.de",
+ "liftoff.io": "vungle",
+ "vungle.com": "vungle",
+ "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",
+ "whatsapp.com": "whatsapp",
+ "whatsapp.net": "whatsapp",
+ "whisper.onelink.me": "whisper",
+ "whisper.sh": "whisper",
+ "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",
+ "maps.windows.com": "windows_maps",
+ "client.wns.windows.com": "windows_notifications",
+ "time.windows.com": "windows_time",
+ "windowsupdate.com": "windowsupdate",
+ "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",
+ "huami.com": "xiaomi",
+ "mi-img.com": "xiaomi",
+ "mi.com": "xiaomi",
+ "miui.com": "xiaomi",
+ "xiaomi.com": "xiaomi",
+ "xiaomi.net": "xiaomi",
+ "xiaomiyoupin.com": "xiaomi",
+ "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",
+ "oath.cloud": "yahoo",
+ "yahoo.net": "yahoo",
+ "yahooinc.com": "yahoo",
+ "yahoodns.net": "yahoo",
+ "yads.yahoo.com": "yahoo_ad_exchange",
+ "yieldmanager.com": "yahoo_ad_exchange",
+ "pr-bh.ybp.yahoo.com": "yahoo_ad_manager",
+ "ads.yahoo.com": "yahoo_advertising",
+ "adtech.yahooinc.com": "yahoo_advertising",
+ "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",
+ "search.yahooinc.com": "yahoo_search",
+ "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",
+ "ya.ru": "yandex",
+ "yandex.by": "yandex",
+ "yandex.com": "yandex",
+ "yandex.com.tr": "yandex",
+ "yandex.fr": "yandex",
+ "yandex.kz": "yandex",
+ "yandex.st": "yandex.api",
+ "yandexadexchange.net": "yandex_adexchange",
+ "metabar.ru": "yandex_advisor",
+ "appmetrica.yandex.com": "yandex_appmetrica",
+ "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"
+ }
+}
diff --git a/staticbak/static/domain-info/tracker/trackers.json.bak b/staticbak/static/domain-info/tracker/trackers.json.bak
new file mode 100644
index 0000000..ee042be
--- /dev/null
+++ b/staticbak/static/domain-info/tracker/trackers.json.bak
@@ -0,0 +1,25333 @@
+{
+ "timeUpdated": "2025-03-17T10:05:02.622Z",
+ "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": {
+ "163": {
+ "name": "163",
+ "categoryId": 4,
+ "url": "http://www.163.com/",
+ "companyId": "163"
+ },
+ "miui.com":{
+ "name": "MIUI",
+ "categoryId": 101,
+ "url": "http://tracking.miui.com",
+ "companyId": "miui"
+ },
+ "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": "1822direkt",
+ "source": "AdGuard"
+ },
+ "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 IONOS",
+ "categoryId": 8,
+ "url": "http://www.ionos.com/",
+ "companyId": "1und1",
+ "source": "AdGuard"
+ },
+ "24-ads.com": {
+ "name": "24-ADS",
+ "categoryId": 4,
+ "url": "http://www.24-ads.com/",
+ "companyId": "24-ads.com",
+ "source": "AdGuard"
+ },
+ "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": "24SMI",
+ "categoryId": 8,
+ "url": "https://24smi.org/",
+ "companyId": "24smi",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "3gpp": {
+ "name": "3GPP Network",
+ "categoryId": 5,
+ "url": "https://www.3gpp.org/",
+ "companyId": "3gpp",
+ "source": "AdGuard"
+ },
+ "4chan": {
+ "name": "4Chan",
+ "categoryId": 8,
+ "url": "https://www.4chan.org/",
+ "companyId": "4chan",
+ "source": "AdGuard"
+ },
+ "4finance_com": {
+ "name": "4finance",
+ "categoryId": 2,
+ "url": "https://4finance.com/",
+ "companyId": "4finance",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "7plus": {
+ "name": "7plus",
+ "categoryId": 0,
+ "url": "https://7plus.com.au/",
+ "companyId": "seven_group_holdings",
+ "source": "AdGuard"
+ },
+ "7tv.de": {
+ "name": "7tv.app",
+ "categoryId": 0,
+ "url": "https://www.7tv.app/",
+ "companyId": "7tv",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "abc": {
+ "name": "Australian Broadcasting Corporation",
+ "categoryId": 8,
+ "url": "https://www.abc.net.au/",
+ "companyId": "australian_government",
+ "source": "AdGuard"
+ },
+ "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": null,
+ "source": "AdGuard"
+ },
+ "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": "https://www.adcolony.com/history-of-adcolony/",
+ "companyId": "digital_turbine",
+ "source": "AdGuard"
+ },
+ "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": 8,
+ "url": "https://adguard.com/",
+ "companyId": "adguard",
+ "source": "AdGuard"
+ },
+ "adguard_dns": {
+ "name": "AdGuard DNS",
+ "categoryId": 8,
+ "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"
+ },
+ "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 GmbH",
+ "categoryId": 101,
+ "url": "https://www.adjust.com/",
+ "companyId": "applovin",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Admixer",
+ "categoryId": 4,
+ "url": "https://admixer.com/",
+ "companyId": "admixer",
+ "source": "AdGuard"
+ },
+ "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_developer": {
+ "name": "Adobe Developer",
+ "categoryId": 8,
+ "url": "https://developer.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "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://business.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "adobe_experience_league": {
+ "name": "Adobe Experience League",
+ "categoryId": 6,
+ "url": "https://experienceleague.adobe.com/",
+ "companyId": "adobe",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "adprofex": {
+ "name": "AdProfex",
+ "categoryId": 4,
+ "url": "https://adprofex.com/",
+ "companyId": "adprofex",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "affilbox": {
+ "name": "Affilbox",
+ "categoryId": 4,
+ "url": "https://affilbox.com/",
+ "companyId": "affilbox",
+ "source": "AdGuard"
+ },
+ "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",
+ "source": "AdGuard"
+ },
+ "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": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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": "softbank",
+ "source": "AdGuard"
+ },
+ "alibaba_cloud": {
+ "name": "Alibaba Cloud",
+ "categoryId": 10,
+ "url": "https://www.alibabacloud.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "alibaba_ucbrowser": {
+ "name": "UC Browser",
+ "categoryId": 8,
+ "url": "https://ucweb.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "alipay.com": {
+ "name": "Alipay",
+ "categoryId": 2,
+ "url": "https://global.alipay.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "amap": {
+ "name": "Amap",
+ "categoryId": 2,
+ "url": "https://www.amap.com/",
+ "companyId": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "android": {
+ "name": "Android",
+ "categoryId": 101,
+ "url": "https://www.android.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "appcenter": {
+ "name": "Microsoft App Center",
+ "categoryId": 5,
+ "url": "https://appcenter.ms/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "apple": {
+ "name": "Apple",
+ "categoryId": 8,
+ "url": "https://www.apple.com/",
+ "companyId": "apple",
+ "source": "AdGuard"
+ },
+ "apple_ads": {
+ "name": "Apple Search Ads",
+ "categoryId": 4,
+ "url": "https://searchads.apple.com/",
+ "companyId": "apple",
+ "source": "AdGuard"
+ },
+ "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": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "appsflyer": {
+ "name": "AppsFlyer",
+ "categoryId": 101,
+ "url": "https://www.appsflyer.com/",
+ "companyId": "appsflyer",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "assemblyexchange": {
+ "name": "Assembly Exchange",
+ "categoryId": 4,
+ "url": "https://www.medialab.la/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "azure": {
+ "name": "Microsoft Azure",
+ "categoryId": 10,
+ "url": "https://azure.microsoft.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "azure_blob_storage": {
+ "name": "Azure Blob Storage",
+ "categoryId": 8,
+ "url": "https://azure.microsoft.com/en-us/products/storage/blobs",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "binge": {
+ "name": "Binge",
+ "categoryId": 0,
+ "url": "https://binge.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "bitwarden": {
+ "name": "Bitwarden",
+ "categoryId": 8,
+ "url": "https://bitwarden.com/",
+ "companyId": "bitwarden",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "bom": {
+ "name": "Bureau of Meteorology",
+ "categoryId": 9,
+ "url": "http://bom.gov.au/",
+ "companyId": "australian_government",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Branch.io",
+ "categoryId": 101,
+ "url": "https://branch.io/",
+ "companyId": "branch_metrics_inc",
+ "source": "AdGuard"
+ },
+ "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, Inc.",
+ "categoryId": 6,
+ "url": "https://www.braze.com/",
+ "companyId": "braze",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "button": {
+ "name": "Button",
+ "categoryId": 4,
+ "url": "https://www.usebutton.com/",
+ "companyId": "button",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "canonical": {
+ "name": "Canonical",
+ "categoryId": 8,
+ "url": "https://canonical.com/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "chartboost": {
+ "name": "Chartboost",
+ "categoryId": 4,
+ "url": "http://chartboost.com/",
+ "companyId": "take-two",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "clickaine": {
+ "name": "Clickaine",
+ "categoryId": 4,
+ "url": "https://clickaine.com/",
+ "companyId": "clickaine",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "crashlytics": {
+ "name": "Crashlytics",
+ "categoryId": 101,
+ "url": "https://crashlytics.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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": "digioh",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "disneyplus": {
+ "name": "Disney+",
+ "categoryId": 0,
+ "url": "https://www.disneyplus.com/",
+ "companyId": "disney",
+ "source": "AdGuard"
+ },
+ "disneystreaming": {
+ "name": "Disney Streaming",
+ "categoryId": 0,
+ "url": "https://press.disneyplus.com",
+ "companyId": "disney",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "domainglass": {
+ "name": "Domain Glass",
+ "categoryId": 8,
+ "url": "https://domain.glass/",
+ "companyId": "domainglass",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "dreame_tech": {
+ "name": "Dreame Technology",
+ "categoryId": 8,
+ "url": "https://www.dreame.tech/",
+ "companyId": "xiaomi",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "edgio": {
+ "name": "Edgio",
+ "categoryId": 9,
+ "url": "https://edg.io/",
+ "companyId": "edgio",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "electronic_arts": {
+ "name": "Electronic Arts",
+ "categoryId": 2,
+ "url": "https://www.ea.com/",
+ "companyId": "electronic_arts",
+ "source": "AdGuard"
+ },
+ "element": {
+ "name": "Element",
+ "categoryId": 7,
+ "url": "https://element.io/",
+ "companyId": "element",
+ "source": "AdGuard"
+ },
+ "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": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_audience": {
+ "name": "Facebook Audience Network",
+ "categoryId": 4,
+ "url": "https://www.facebook.com/business/products/audience-network",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_beacon": {
+ "name": "Facebook Beacon",
+ "categoryId": 7,
+ "url": "http://www.facebook.com/beacon/faq.php",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_cdn": {
+ "name": "Facebook CDN",
+ "categoryId": 9,
+ "url": "https://www.facebook.com",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_connect": {
+ "name": "Facebook Connect",
+ "categoryId": 6,
+ "url": "https://developers.facebook.com/connect.php",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_conversion_tracking": {
+ "name": "Facebook Conversion Tracking",
+ "categoryId": 4,
+ "url": "http://www.facebook.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_custom_audience": {
+ "name": "Facebook Custom Audience",
+ "categoryId": 4,
+ "url": "https://www.facebook.com",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_graph": {
+ "name": "Facebook Social Graph",
+ "categoryId": 7,
+ "url": "https://developers.facebook.com/docs/reference/api/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_impressions": {
+ "name": "Facebook Impressions",
+ "categoryId": 4,
+ "url": "https://www.facebook.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "facebook_social_plugins": {
+ "name": "Facebook Social Plugins",
+ "categoryId": 7,
+ "url": "https://developers.facebook.com/plugins",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "farlight_pte_ltd": {
+ "name": "Farlight Pte Ltd.",
+ "categoryId": 8,
+ "url": "https://farlightgames.com/",
+ "companyId": "farlight",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "firebase": {
+ "name": "Firebase",
+ "categoryId": 101,
+ "url": "https://firebase.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "flash": {
+ "name": "Flash",
+ "categoryId": 0,
+ "url": "https://flashnews.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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": 101,
+ "url": "http://www.flurry.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "fox_sports": {
+ "name": "Fox Sports",
+ "categoryId": 0,
+ "url": "https://foxsports.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "foxtel": {
+ "name": "Foxtel",
+ "categoryId": 0,
+ "url": "https://foxtel.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "freeview": {
+ "name": "Freeview",
+ "categoryId": 0,
+ "url": "https://freeview.com.au/",
+ "companyId": "freeview",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "gameanalytics": {
+ "name": "GameAnalytics",
+ "categoryId": 101,
+ "url": "https://gameanalytics.com/",
+ "companyId": "mobvista",
+ "source": "AdGuard"
+ },
+ "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, Inc.",
+ "categoryId": 2,
+ "url": "https://github.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "gmail": {
+ "name": "Gmail",
+ "categoryId": 13,
+ "url": "https://mail.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_auth": {
+ "name": "Google Auth",
+ "categoryId": 2,
+ "url": "https://myaccount.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_beacons": {
+ "name": "Google Beacons",
+ "categoryId": 6,
+ "url": "https://google.xyz",
+ "companyId": "google"
+ },
+ "google_chat": {
+ "name": "Google Chat",
+ "categoryId": 7,
+ "url": "https://mail.google.com/chat/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_cloud_platform": {
+ "name": "Google Cloud Platform",
+ "categoryId": 10,
+ "url": "https://cloud.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_cloud_storage": {
+ "name": "Google Cloud Storage",
+ "categoryId": 10,
+ "url": "https://cloud.google.com/storage/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_dns": {
+ "name": "Google DNS",
+ "categoryId": 10,
+ "url": "https://dns.google/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_domains": {
+ "name": "Google Domains",
+ "categoryId": 10,
+ "url": "https://domains.google/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_edge": {
+ "name": "Google Edge CDN",
+ "categoryId": 9,
+ "url": "https://peering.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_hosted": {
+ "name": "Google Hosted",
+ "categoryId": 10,
+ "url": "https://workspace.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_ima": {
+ "name": "Google IMA",
+ "categoryId": 4,
+ "url": "http://www.google.com",
+ "companyId": "google"
+ },
+ "google_location": {
+ "name": "Google Location",
+ "categoryId": 8,
+ "url": "https://patents.google.com/patent/WO2007025143A1/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_maps": {
+ "name": "Google Maps",
+ "categoryId": 2,
+ "url": "https://www.google.com/maps/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_marketing": {
+ "name": "Google Marketing",
+ "categoryId": 4,
+ "url": "https://marketingplatform.google.com/about/enterprise",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "google_meet": {
+ "name": "Google Meet",
+ "categoryId": 2,
+ "url": "https://meet.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_play": {
+ "name": "Google Play",
+ "categoryId": 8,
+ "url": "https://play.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_trust_services": {
+ "name": "Google Trust Services",
+ "categoryId": 5,
+ "url": "https://pki.goog/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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_voice": {
+ "name": "Google Voice",
+ "categoryId": 2,
+ "url": "https://voice.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "google_workspace": {
+ "name": "Google Workspace",
+ "categoryId": 2,
+ "url": "https://workspace.google.com/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "hockeyapp": {
+ "name": "HockeyApp",
+ "categoryId": 101,
+ "url": "https://hockeyapp.net/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "id5-sync": {
+ "name": "ID5 Sync",
+ "categoryId": 4,
+ "url": "https://id5.io/",
+ "companyId": "id5-sync",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "identrust": {
+ "name": "IdenTrust, Inc.",
+ "categoryId": 5,
+ "url": "https://identrust.com/",
+ "companyId": "identrust",
+ "source": "AdGuard"
+ },
+ "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": "medialab",
+ "source": "AdGuard"
+ },
+ "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": "meta",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "iqiyi": {
+ "name": "iQiyi",
+ "categoryId": 0,
+ "url": "https://www.iqiyi.com/",
+ "companyId": "iqiyi",
+ "source": "AdGuard"
+ },
+ "ironsource": {
+ "name": "ironSource Ltd.",
+ "categoryId": 4,
+ "url": "https://www.is.com",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "isocket": {
+ "name": "isocket",
+ "categoryId": 4,
+ "url": "http://www.isocket.com/",
+ "companyId": "rubicon_project"
+ },
+ "isolarcloud": {
+ "name": "iSolarCloud",
+ "categoryId": 6,
+ "url": "https://isolarcloud.com/",
+ "companyId": "sungrow",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "jetbrains": {
+ "name": "JetBrains",
+ "categoryId": 8,
+ "url": "https://www.jetbrains.com/",
+ "companyId": "jetbrains",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "karambasecurity": {
+ "name": "Karamba Security",
+ "categoryId": 8,
+ "url": "https://karambasecurity.com/",
+ "companyId": "karambasecurity",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "kayo_sports": {
+ "name": "Kayo Sports",
+ "categoryId": 0,
+ "url": "https://kayosports.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "kik": {
+ "name": "Kik",
+ "categoryId": 7,
+ "url": "https://kik.com/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "launchpad": {
+ "name": "Launchpad",
+ "categoryId": 8,
+ "url": "https://launchpad.net/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "lets_encrypt": {
+ "name": "Let's Encrypt",
+ "categoryId": 5,
+ "url": "https://letsencrypt.org/",
+ "companyId": "isrg",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "lgads": {
+ "name": "LG Ad Solutions",
+ "categoryId": 4,
+ "url": "https://lgads.tv/",
+ "companyId": "lgcorp",
+ "source": "AdGuard"
+ },
+ "lgtv": {
+ "name": "LG TV",
+ "categoryId": 8,
+ "url": "https://www.lg.com/",
+ "companyId": "lgcorp",
+ "source": "AdGuard"
+ },
+ "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": 101,
+ "url": "https://uplandsoftware.com/localytics/",
+ "companyId": "upland",
+ "source": "AdGuard"
+ },
+ "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": "vk",
+ "source": "AdGuard"
+ },
+ "mail.ru_counter": {
+ "name": "Mail.Ru Counter",
+ "categoryId": 2,
+ "url": "http://mail.ru/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "mail.ru_group": {
+ "name": "Mail.Ru Group",
+ "categoryId": 7,
+ "url": "http://mail.ru/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "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",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "matrix": {
+ "name": "Matrix",
+ "categoryId": 5,
+ "url": "https://matrix.org/",
+ "companyId": "matrix",
+ "source": "AdGuard"
+ },
+ "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": "https://www.mediaglu.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "mediahub": {
+ "name": "MediaHub",
+ "categoryId": 4,
+ "url": "http://www.mediahub.com/",
+ "companyId": "mediahub"
+ },
+ "medialab": {
+ "name": "MediaLab.AI Inc.",
+ "categoryId": 8,
+ "url": "https://medialab.la/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "meganz": {
+ "name": "Mega Ltd.",
+ "categoryId": 8,
+ "url": "https://mega.io/",
+ "companyId": "meganz",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "mozilla": {
+ "name": "Mozilla Foundation",
+ "categoryId": 8,
+ "url": "https://www.mozilla.org/",
+ "companyId": "mozilla",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "msedge": {
+ "name": "Microsoft Edge",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/en-us/edge",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nab": {
+ "name": "National Australia Bank",
+ "categoryId": 8,
+ "url": "https://www.nab.com.au/",
+ "companyId": "nab",
+ "source": "AdGuard"
+ },
+ "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": 0,
+ "url": "https://www.netflix.com/",
+ "companyId": "netflix",
+ "source": "AdGuard"
+ },
+ "netify": {
+ "name": "Netify",
+ "categoryId": 8,
+ "url": "https://www.netify.ai/",
+ "companyId": "netify",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nine_direct_digital": {
+ "name": "Nine Digital Direct",
+ "categoryId": 4,
+ "url": "https://ninedigitaldirect.com.au/",
+ "companyId": "nine_entertainment",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "nonli": {
+ "name": "Nonli",
+ "categoryId": 4,
+ "url": "https://www.nonli.com/",
+ "companyId": "nonli",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "notion": {
+ "name": "Notion",
+ "categoryId": 8,
+ "url": "https://www.notion.so/",
+ "companyId": "notion",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "ntppool": {
+ "name": "Network Time Protocol",
+ "categoryId": 5,
+ "url": "https://ntp.org/",
+ "companyId": "network_time_foundation",
+ "source": "AdGuard"
+ },
+ "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://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "open_share_count": {
+ "name": "Open Share Count",
+ "categoryId": 4,
+ "url": "http://opensharecount.com/",
+ "companyId": "open_share_count"
+ },
+ "openai": {
+ "name": "OpenAI",
+ "categoryId": 8,
+ "url": "https://openai.com/",
+ "companyId": "openai",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "oppo": {
+ "name": "OPPO",
+ "categoryId": 101,
+ "url": "https://www.oppo.com/",
+ "companyId": "bbk",
+ "source": "AdGuard"
+ },
+ "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_infinity": {
+ "name": "Oracle Infinity Behavioral Intelligence",
+ "categoryId": 6,
+ "url": "https://www.oracle.com/au/cx/marketing/digital-intelligence/",
+ "companyId": "oracle",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "outlook": {
+ "name": "Microsoft Outlook",
+ "categoryId": 13,
+ "url": "https://outlook.live.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "oztam": {
+ "name": "OzTAM",
+ "categoryId": 8,
+ "url": "https://oztam.com.au/",
+ "companyId": "oztam",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "perfops": {
+ "name": "PerfOps",
+ "categoryId": 6,
+ "url": "https://perfops.net/",
+ "companyId": "perfops",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Plex",
+ "categoryId": 0,
+ "url": "https://www.plex.tv/",
+ "companyId": "plex",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "proton_ag": {
+ "name": "Proton AG",
+ "categoryId": 2,
+ "url": "https://proton.me/",
+ "companyId": "proton_foundation",
+ "source": "AdGuard"
+ },
+ "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 International",
+ "categoryId": 2,
+ "url": "https://www.qq.com/",
+ "companyId": "tencent",
+ "source": "AdGuard"
+ },
+ "qrius": {
+ "name": "Qrius",
+ "categoryId": 7,
+ "url": "http://www.qrius.me/",
+ "companyId": "mediafed"
+ },
+ "qualaroo": {
+ "name": "Qualaroo",
+ "categoryId": 6,
+ "url": null,
+ "companyId": null
+ },
+ "qualcomm": {
+ "name": "Qualcomm",
+ "categoryId": 8,
+ "url": "https://www.qualcomm.com/",
+ "companyId": "qualcomm",
+ "source": "AdGuard"
+ },
+ "qualcomm_location_service": {
+ "name": "Qualcomm Location Service",
+ "categoryId": 15,
+ "url": "https://www.qualcomm.com/site/privacy/services",
+ "companyId": "qualcomm",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "rea_group": {
+ "name": "REA Group Ltd.",
+ "categoryId": 4,
+ "url": "https://www.rea-group.com/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "realestate.com.au": {
+ "name": "realestate.com.au Pty Limited",
+ "categoryId": 4,
+ "url": "https://www.realestate.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "recaptcha": {
+ "name": "reCAPTCHA",
+ "categoryId": 8,
+ "url": "https://www.google.com/recaptcha/about/",
+ "companyId": "google",
+ "source": "AdGuard"
+ },
+ "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": "https://www.reddit.com",
+ "companyId": "advance",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "samsung": {
+ "name": "Samsung",
+ "categoryId": 8,
+ "url": "https://www.samsung.com/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungads": {
+ "name": "Samsung Ads",
+ "categoryId": 4,
+ "url": "https://www.samsung.com/business/samsungads/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungapps": {
+ "name": "Samsung Apps",
+ "categoryId": 101,
+ "url": "https://www.samsung.com/au/apps/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungmobile": {
+ "name": "Samsung Mobile",
+ "categoryId": 101,
+ "url": "https://www.samsung.com/mobile/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungpush": {
+ "name": "Samsung Push",
+ "categoryId": 8,
+ "url": null,
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungsds": {
+ "name": "Samsung SDS",
+ "categoryId": 10,
+ "url": "https://www.samsungsds.com/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "samsungtv": {
+ "name": "Samsung TV",
+ "categoryId": 15,
+ "url": "https://www.samsung.com/au/tvs/",
+ "companyId": "samsung",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "sectigo": {
+ "name": "Sectigo Limited",
+ "categoryId": 5,
+ "url": "https://www.sectigo.com",
+ "companyId": "sectigo",
+ "source": "AdGuard"
+ },
+ "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": "https://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": "SharePoint",
+ "categoryId": 8,
+ "url": "https://www.microsoft.com/microsoft-365/sharepoint/collaboration",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "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": {
+ "name": "Shopify Inc.",
+ "categoryId": 2,
+ "url": "https://www.shopify.com/",
+ "companyId": "shopify",
+ "source": "AdGuard"
+ },
+ "shopify_stats": {
+ "name": "Shopify Stats",
+ "categoryId": 6,
+ "url": "http://www.shopify.com/",
+ "companyId": "shopify",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "showrss": {
+ "name": "showRSS",
+ "categoryId": 8,
+ "url": "https://showrss.info/",
+ "companyId": "showrss",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "similarweb": {
+ "name": "SimilarWeb",
+ "categoryId": 6,
+ "url": "https://www.similarweb.com/",
+ "companyId": "similarweb",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "slack": {
+ "name": "Slack",
+ "categoryId": 8,
+ "url": "https://www.slack.com/",
+ "companyId": "salesforce",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "snapcraft": {
+ "name": "Snapcraft",
+ "categoryId": 8,
+ "url": "https://snapcraft.io",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "solaredge": {
+ "name": "SolarEdge Technologies, Inc.",
+ "categoryId": 8,
+ "url": "https://www.solaredge.com/",
+ "companyId": "solaredge",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "sonos": {
+ "name": "Sonos",
+ "categoryId": 8,
+ "url": "https://www.sonos.com/",
+ "companyId": "sonos",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "streamotion": {
+ "name": "Streamotion",
+ "categoryId": 0,
+ "url": "https://streamotion.com.au/",
+ "companyId": "news_corp",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "supercell": {
+ "name": "Supercell",
+ "categoryId": 2,
+ "url": "https://supercell.com/",
+ "companyId": "supercell",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "switchtv": {
+ "name": "Switch Media",
+ "categoryId": 8,
+ "url": "https://www.switch.tv/",
+ "companyId": "switchtv",
+ "source": "AdGuard"
+ },
+ "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": "softbank",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "telstra": {
+ "name": "Telstra",
+ "categoryId": 8,
+ "url": "https://www.telstra.com.au/",
+ "companyId": "telstra",
+ "source": "AdGuard"
+ },
+ "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": "X (formerly Twitter)",
+ "categoryId": 7,
+ "url": "https://twitter.com",
+ "companyId": "twitter",
+ "source": "AdGuard"
+ },
+ "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
+ },
+ "ubuntu": {
+ "name": "Ubuntu",
+ "categoryId": 8,
+ "url": "https://ubuntu.com/",
+ "companyId": "canonical",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "unity": {
+ "name": "Unity",
+ "categoryId": 8,
+ "url": "https://unity.com/",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "unity_ads": {
+ "name": "Unity Ads",
+ "categoryId": 4,
+ "url": "https://unity.com/products/unity-ads",
+ "companyId": "unity",
+ "source": "AdGuard"
+ },
+ "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": "vk",
+ "source": "AdGuard"
+ },
+ "vkontakte": {
+ "name": "VKontakte",
+ "categoryId": 7,
+ "url": "https://vk.com/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "vkontakte_widgets": {
+ "name": "VKontakte Widgets",
+ "categoryId": 7,
+ "url": "https://dev.vk.com/",
+ "companyId": "vk",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "vs": {
+ "name": "Visual Studio",
+ "categoryId": 8,
+ "url": "https://visualstudio.microsoft.com",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "vscode": {
+ "name": "Visual Studio Code",
+ "categoryId": 8,
+ "url": "https://code.visualstudio.com/",
+ "companyId": "microsoft",
+ "source": "AdGuard"
+ },
+ "vtracy.de": {
+ "name": "vtracy.de",
+ "categoryId": 11,
+ "url": null,
+ "companyId": null
+ },
+ "vungle": {
+ "name": "Vungle",
+ "categoryId": 4,
+ "url": "https://vungle.com/",
+ "companyId": "blackstone",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "whatsapp": {
+ "name": "WhatsApp",
+ "categoryId": 8,
+ "url": "https://www.whatsapp.com/",
+ "companyId": "meta",
+ "source": "AdGuard"
+ },
+ "whisper": {
+ "name": "Whisper",
+ "categoryId": 7,
+ "url": "https://whisper.sh/",
+ "companyId": "medialab",
+ "source": "AdGuard"
+ },
+ "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"
+ },
+ "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"
+ },
+ "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",
+ "categoryId": 11,
+ "url": "https://www.xenmedia.net/",
+ "companyId": "xenmedia",
+ "source": "AdGuard"
+ },
+ "xfreeservice.com": {
+ "name": "xfreeservice.com",
+ "categoryId": 11,
+ "url": null,
+ "companyId": null
+ },
+ "xhamster": {
+ "name": "xHamster",
+ "categoryId": 3,
+ "url": "https://xhamster.com/",
+ "companyId": "xhamster",
+ "source": "AdGuard"
+ },
+ "xiaomi": {
+ "name": "Xiaomi",
+ "categoryId": 8,
+ "url": "https://www.mi.com/",
+ "companyId": "xiaomi",
+ "source": "AdGuard"
+ },
+ "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",
+ "categoryId": 9,
+ "url": "https://www.xnxx.com",
+ "companyId": "xnxx",
+ "source": "AdGuard"
+ },
+ "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",
+ "categoryId": 8,
+ "url": "https://www.xvideos.com",
+ "companyId": "xvideos",
+ "source": "AdGuard"
+ },
+ "xxxlshop.de": {
+ "name": "XXXLutz",
+ "categoryId": 8,
+ "url": "https://www.xxxlutz.de/",
+ "companyId": "xxxlutz",
+ "source": "AdGuard"
+ },
+ "xxxlutz": {
+ "name": "XXXLutz",
+ "categoryId": 8,
+ "url": "https://www.xxxlutz.de/",
+ "companyId": "xxxlutz"
+ },
+ "yabbi": {
+ "name": "Yabbi",
+ "categoryId": 4,
+ "url": "https://yabbi.me/",
+ "companyId": "yabbi",
+ "source": "AdGuard"
+ },
+ "yabuka": {
+ "name": "Yabuka",
+ "categoryId": 4,
+ "url": "http://www.yabuka.com/",
+ "companyId": "yabuka"
+ },
+ "yahoo": {
+ "name": "Yahoo!",
+ "categoryId": 6,
+ "url": "https://yahoo.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_advertising": {
+ "name": "Yahoo! Advertising",
+ "categoryId": 4,
+ "url": "https://www.advertising.yahooinc.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_search": {
+ "name": "Yahoo! Search",
+ "categoryId": 4,
+ "url": "https://search.yahooinc.com/",
+ "companyId": "apollo_global_management",
+ "source": "AdGuard"
+ },
+ "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_appmetrica": {
+ "name": "Yandex AppMetrica",
+ "categoryId": 101,
+ "url": "https://appmetrica.yandex.com/",
+ "companyId": "yandex",
+ "source": "AdGuard"
+ },
+ "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": "Ibexa Personalizaton Software",
+ "categoryId": 4,
+ "url": "https://yoochoose.net/",
+ "companyId": "ibexa",
+ "source": "AdGuard"
+ },
+ "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": "https://www.youporn.com/",
+ "companyId": "youporn",
+ "source": "AdGuard"
+ },
+ "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": "zeusclicks",
+ "source": "AdGuard"
+ },
+ "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": "livinglymedia",
+ "source": "AdGuard"
+ },
+ "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",
+ "3gpp.org": "3gpp",
+ "3gppnetwork.org": "3gpp",
+ "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",
+ "swm.digital": "7plus",
+ "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",
+ "ab.co": "abc",
+ "abc-cdn.net.au": "abc",
+ "abc-host.net": "abc",
+ "abc-host.net.au": "abc",
+ "abc-prod.net.au": "abc",
+ "abc-stage.net.au": "abc",
+ "abc-test.net.au": "abc",
+ "abc.net.au": "abc",
+ "abcaustralia.net.au": "abc",
+ "abcradio.net.au": "abc",
+ "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",
+ "adcolony.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",
+ "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",
+ "adguard.app": "adguard",
+ "adguard.info": "adguard",
+ "adguard.io": "adguard",
+ "adguard.org": "adguard",
+ "adtidy.org": "adguard",
+ "agrd.io": "adguard",
+ "agrd.eu": "adguard",
+ "adguard-dns.com": "adguard_dns",
+ "adguard-dns.io": "adguard_dns",
+ "adguard-vpn.com": "adguard_vpn",
+ "adguard-vpn.online": "adguard_vpn",
+ "adguardvpn.com": "adguard_vpn",
+ "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",
+ "adj.st": "adjust",
+ "adjust.io": "adjust",
+ "adjust.net.in": "adjust",
+ "adjust.world": "adjust",
+ "apptrace.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",
+ "admixer.com": "admixer",
+ "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",
+ "adobe.io": "adobe_developer",
+ "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",
+ "adobedc.net": "adobe_experience_league",
+ "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",
+ "adprofex.com": "adprofex",
+ "ads2.bid": "adprofex",
+ "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",
+ "affilbox.com": "affilbox",
+ "affilbox.cz": "affilbox",
+ "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",
+ "akadns.net": "akamai_technologies",
+ "akamaiedge.net": "akamai_technologies",
+ "akaquill.net": "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",
+ "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",
+ "alipay.com": "alipay.com",
+ "alipayobjects.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",
+ "amap.com": "amap",
+ "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",
+ "a2z.com": "amazon",
+ "aamazoncognito.com": "amazon",
+ "amazon-corp.com": "amazon",
+ "amazon-dss.com": "amazon",
+ "amazon.com.au": "amazon",
+ "amazon.com.mx": "amazon",
+ "amazon.dev": "amazon",
+ "amazon.in": "amazon",
+ "amazon.nl": "amazon",
+ "amazon.sa": "amazon",
+ "amazonbrowserapp.co.uk": "amazon",
+ "amazonbrowserapp.es": "amazon",
+ "amazoncrl.com": "amazon",
+ "firetvcaptiveportal.com": "amazon",
+ "ntp-fireos.com": "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",
+ "amazontrust.com": "amazon_cdn",
+ "associates-amazon.com": "amazon_cdn",
+ "cloudfront.net": "amazon_cloudfront",
+ "ota-cloudfront.net": "amazon_cloudfront",
+ "axx-eu.amazon-adsystem.com": "amazon_mobile_ads",
+ "amazonpay.com": "amazon_payments",
+ "payments-amazon.com": "amazon_payments",
+ "amazonpay.in": "amazon_payments",
+ "aiv-cdn.net": "amazon_video",
+ "aiv-delivery.net": "amazon_video",
+ "amazonvideo.com": "amazon_video",
+ "pv-cdn.net": "amazon_video",
+ "primevideo.com": "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",
+ "android.com": "android",
+ "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",
+ "appcenter.ms": "appcenter",
+ "appcues.com": "appcues",
+ "appdynamics.com": "appdynamics",
+ "de8of677fyt0b.cloudfront.net": "appdynamics",
+ "eum-appdynamics.com": "appdynamics",
+ "jscdn.appier.net": "appier",
+ "apple.com": "apple",
+ "aaplimg.com": "apple",
+ "apple-cloudkit.com": "apple",
+ "apple-dns.net": "apple",
+ "apple-livephotoskit.com": "apple",
+ "apple-mapkit.com": "apple",
+ "apple.news": "apple",
+ "apzones.com": "apple",
+ "cdn-apple.com": "apple",
+ "icloud-content.com": "apple",
+ "icloud.com": "apple",
+ "icons.axm-usercontent-apple.com": "apple",
+ "itunes.com": "apple",
+ "me.com": "apple",
+ "mzstatic.com": "apple",
+ "safebrowsing.apple": "apple",
+ "safebrowsing.g.applimg.com": "apple",
+ "iadsdk.apple.com": "apple_ads",
+ "applifier.com": "applifier",
+ "assets.applovin.com": "applovin",
+ "applovin.com": "applovin",
+ "applvn.com": "applovin",
+ "appmetrx.com": "appmetrx",
+ "adnxs.com": "appnexus",
+ "adnxs.net": "appnexus",
+ "appsflyer.com": "appsflyer",
+ "appsflyersdk.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",
+ "ads.assemblyexchange.com": "assemblyexchange",
+ "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",
+ "bitbucket.org": "atlassian.net",
+ "jira.com": "atlassian.net",
+ "ss-inf.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",
+ "ad.gt": "audiencesquare.com",
+ "audigent.com": "audiencesquare.com",
+ "hadronid.net": "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",
+ "azure.com": "azure",
+ "azure.net": "azure",
+ "azurefd.net": "azure",
+ "trafficmanager.net": "azure",
+ "blob.core.windows.net": "azure_blob_storage",
+ "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",
+ "binge.com.au": "binge",
+ "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",
+ "bitwarden.com": "bitwarden",
+ "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",
+ "bom.gov.au": "bom",
+ "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",
+ "mobileapptracking.com": "branch",
+ "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",
+ "braze.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",
+ "bttn.io": "button",
+ "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",
+ "canonical.com": "canonical",
+ "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",
+ "chartboost.com": "chartboost",
+ "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",
+ "clickaine.com": "clickaine",
+ "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",
+ "cloudflare-dm-cmpimg.com": "cloudflare",
+ "cloudflare-dns.com": "cloudflare",
+ "cloudflare-ipfs.com": "cloudflare",
+ "cloudflare-quic.com": "cloudflare",
+ "cloudflare-terms-of-service-abuse.com": "cloudflare",
+ "cloudflare.tv": "cloudflare",
+ "cloudflareaccess.com": "cloudflare",
+ "cloudflareclient.com": "cloudflare",
+ "cloudflareinsights.com": "cloudflare",
+ "cloudflareok.com": "cloudflare",
+ "cloudflareportal.com": "cloudflare",
+ "cloudflareresolve.com": "cloudflare",
+ "cloudflaressl.com": "cloudflare",
+ "cloudflarestatus.com": "cloudflare",
+ "cloudflarestream.com": "cloudflare",
+ "pacloudflare.com": "cloudflare",
+ "sn-cloudflare.com": "cloudflare",
+ "videodelivery.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",
+ "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",
+ "crashlytics.com": "crashlytics",
+ "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",
+ "phicdn.net": "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",
+ "disneyplus.com": "disneyplus",
+ "bamgrid.com": "disneystreaming",
+ "dssedge.com": "disneystreaming",
+ "dssott.com": "disneystreaming",
+ "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",
+ "domain.glass": "domainglass",
+ "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",
+ "doublepimp.com": "doublepimp",
+ "doublepimpssl.com": "doublepimp",
+ "redcourtside.com": "doublepimp",
+ "xeontopa.com": "doublepimp",
+ "zerezas.com": "doublepimp",
+ "doubleverify.com": "doubleverify",
+ "wrating.com": "dratio",
+ "adsymptotic.com": "drawbridge",
+ "dreame.tech": "dreame_tech",
+ "dreametech.com": "dreame_tech",
+ "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",
+ "alphacdn.net": "edgio",
+ "edg.io": "edgio",
+ "edgecast.com": "edgio",
+ "edgecastcdn.net": "edgio",
+ "edgecastdns.net": "edgio",
+ "sigmacdn.net": "edgio",
+ "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",
+ "cloudcell.com": "electronic_arts",
+ "ea.com": "electronic_arts",
+ "eamobile.com": "electronic_arts",
+ "element.io": "element",
+ "riot.im": "element",
+ "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",
+ "graph.facebook.com": "facebook_audience",
+ "fbcdn.net": "facebook_cdn",
+ "fbsbx.com": "facebook_cdn",
+ "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",
+ "farlightgames.com": "farlight_pte_ltd",
+ "fastly-insights.com": "fastly_insights",
+ "fastly.net": "fastlylb.net",
+ "fastlylb.net": "fastlylb.net",
+ "fastly-edge.com": "fastlylb.net",
+ "fastly-masque.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",
+ "app-measurement.com": "firebase",
+ "fcm.googleapis.com": "firebase",
+ "firebase.com": "firebase",
+ "firebase.google.com": "firebase",
+ "firebase.googleapis.com": "firebase",
+ "firebaseapp.com": "firebase",
+ "firebaseappcheck.googleapis.com": "firebase",
+ "firebasedynamiclinks-ipv4.googleapis.com": "firebase",
+ "firebasedynamiclinks-ipv6.googleapis.com": "firebase",
+ "firebasedynamiclinks.googleapis.com": "firebase",
+ "firebaseinappmessaging.googleapis.com": "firebase",
+ "firebaseinstallations.googleapis.com": "firebase",
+ "firebaselogging-pa.googleapis.com": "firebase",
+ "firebaselogging.googleapis.com": "firebase",
+ "firebaseperusertopics-pa.googleapis.com": "firebase",
+ "firebaseremoteconfig.googleapis.com": "firebase",
+ "firebaseio.com": "firebaseio.com",
+ "firstimpression.io": "first_impression",
+ "fitanalytics.com": "fit_analytics",
+ "fivetran.com": "fivetran",
+ "flagads.net": "flag_ads",
+ "flagcounter.com": "flag_counter",
+ "flashnews.com.au": "flash",
+ "flashtalking.com": "flashtalking",
+ "flattr.com": "flattr_button",
+ "flexlinks.com": "flexoffers",
+ "linkoffers.net": "flexoffers",
+ "flickr.com": "flickr_badge",
+ "staticflickr.com": "flickr_badge",
+ "lflipboard.com": "flipboard",
+ "flipboard.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",
+ "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",
+ "foxsports.com.au": "fox_sports",
+ "fncstatic.com": "foxnews_static",
+ "cdn.foxpush.net": "foxpush",
+ "foxpush.com": "foxpush",
+ "foxtel.com.au": "foxtel",
+ "foxtelgroupcdn.net.au": "foxtel",
+ "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",
+ "freeview.com": "freeview",
+ "freeview.com.au": "freeview",
+ "freeviewaustralia.tv": "freeview",
+ "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",
+ "gameanalytics.com": "gameanalytics",
+ "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",
+ "ghcr.io": "github",
+ "github.blog": "github",
+ "github.dev": "github",
+ "octocaptcha.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",
+ "gmail.com": "gmail",
+ "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",
+ "1e100.net": "google",
+ "agnss.goog": "google",
+ "channel.status.request.url": "google",
+ "g.cn": "google",
+ "g.co": "google",
+ "google.ad": "google",
+ "google.ae": "google",
+ "google.al": "google",
+ "google.am": "google",
+ "google.as": "google",
+ "google.az": "google",
+ "google.ba": "google",
+ "google.bf": "google",
+ "google.bg": "google",
+ "google.bi": "google",
+ "google.bj": "google",
+ "google.bs": "google",
+ "google.bt": "google",
+ "google.by": "google",
+ "google.cat": "google",
+ "google.cd": "google",
+ "google.cf": "google",
+ "google.cg": "google",
+ "google.ci": "google",
+ "google.cl": "google",
+ "google.cm": "google",
+ "google.cn": "google",
+ "google.co.ao": "google",
+ "google.co.bw": "google",
+ "google.co.ck": "google",
+ "google.co.cr": "google",
+ "google.co.il": "google",
+ "google.co.ke": "google",
+ "google.co.kr": "google",
+ "google.co.ls": "google",
+ "google.co.mz": "google",
+ "google.co.nz": "google",
+ "google.co.tz": "google",
+ "google.co.ug": "google",
+ "google.co.uz": "google",
+ "google.co.ve": "google",
+ "google.co.vi": "google",
+ "google.co.za": "google",
+ "google.co.zm": "google",
+ "google.co.zw": "google",
+ "google.com.af": "google",
+ "google.com.ag": "google",
+ "google.com.ai": "google",
+ "google.com.bd": "google",
+ "google.com.bh": "google",
+ "google.com.bn": "google",
+ "google.com.bo": "google",
+ "google.com.bz": "google",
+ "google.com.co": "google",
+ "google.com.cu": "google",
+ "google.com.cy": "google",
+ "google.com.ec": "google",
+ "google.com.eg": "google",
+ "google.com.et": "google",
+ "google.com.fj": "google",
+ "google.com.gh": "google",
+ "google.com.gi": "google",
+ "google.com.gt": "google",
+ "google.com.hk": "google",
+ "google.com.jm": "google",
+ "google.com.kh": "google",
+ "google.com.kw": "google",
+ "google.com.lb": "google",
+ "google.com.my": "google",
+ "google.com.na": "google",
+ "google.com.nf": "google",
+ "google.com.ng": "google",
+ "google.com.ni": "google",
+ "google.com.np": "google",
+ "google.com.om": "google",
+ "google.com.pa": "google",
+ "google.com.pe": "google",
+ "google.com.pg": "google",
+ "google.com.ph": "google",
+ "google.com.pk": "google",
+ "google.com.pr": "google",
+ "google.com.py": "google",
+ "google.com.qa": "google",
+ "google.com.sa": "google",
+ "google.com.sb": "google",
+ "google.com.sg": "google",
+ "google.com.sl": "google",
+ "google.com.sv": "google",
+ "google.com.tj": "google",
+ "google.com.uy": "google",
+ "google.com.vc": "google",
+ "google.com.vn": "google",
+ "google.cv": "google",
+ "google.dj": "google",
+ "google.dm": "google",
+ "google.ee": "google",
+ "google.fm": "google",
+ "google.ga": "google",
+ "google.ge": "google",
+ "google.gg": "google",
+ "google.gl": "google",
+ "google.gm": "google",
+ "google.gp": "google",
+ "google.gy": "google",
+ "google.hn": "google",
+ "google.hr": "google",
+ "google.ht": "google",
+ "google.im": "google",
+ "google.in": "google",
+ "google.iq": "google",
+ "google.is": "google",
+ "google.je": "google",
+ "google.jo": "google",
+ "google.kg": "google",
+ "google.ki": "google",
+ "google.kz": "google",
+ "google.la": "google",
+ "google.li": "google",
+ "google.lk": "google",
+ "google.lt": "google",
+ "google.lu": "google",
+ "google.lv": "google",
+ "google.md": "google",
+ "google.me": "google",
+ "google.mg": "google",
+ "google.mk": "google",
+ "google.ml": "google",
+ "google.mn": "google",
+ "google.ms": "google",
+ "google.mu": "google",
+ "google.mv": "google",
+ "google.mw": "google",
+ "google.ne": "google",
+ "google.net": "google",
+ "google.nr": "google",
+ "google.nu": "google",
+ "google.org": "google",
+ "google.pn": "google",
+ "google.ps": "google",
+ "google.rw": "google",
+ "google.sc": "google",
+ "google.sh": "google",
+ "google.si": "google",
+ "google.sk": "google",
+ "google.sm": "google",
+ "google.sn": "google",
+ "google.so": "google",
+ "google.sr": "google",
+ "google.st": "google",
+ "google.td": "google",
+ "google.tg": "google",
+ "google.tk": "google",
+ "google.tl": "google",
+ "google.tm": "google",
+ "google.to": "google",
+ "google.tt": "google",
+ "google.us": "google",
+ "google.vg": "google",
+ "google.vu": "google",
+ "google.ws": "google",
+ "googleapis.cn": "google",
+ "googlecode.com": "google",
+ "googledownloads.cn": "google",
+ "googleoptimize.com": "google",
+ "googleweblight.in": "google",
+ "googlezip.net": "google",
+ "gstatic.cn": "google",
+ "news.google.com": "google",
+ "oo.gl": "google",
+ "withgoogle.com": "google",
+ "googleadservices.com": "google_adservices",
+ "google-analytics.com": "google_analytics",
+ "app-analytics-services.com": "google_analytics",
+ "ssl-google-analytics.l.google.com": "google_analytics",
+ "www-googletagmanager.l.google.com": "google_analytics",
+ "appspot.com": "google_appspot",
+ "googlehosted.com": "google_appspot",
+ "accounts.google.com": "google_auth",
+ "myaccount.google.com": "google_auth",
+ "oauth2.googleapis.com": "google_auth",
+ "ogs.google.com": "google_auth",
+ "securetoken.googleapis.com": "google_auth",
+ "beacons-google.com": "google_beacons",
+ "alt1-mtalk.google.com": "google_chat",
+ "alt2-mtalk.google.com": "google_chat",
+ "alt3-mtalk.google.com": "google_chat",
+ "alt4-mtalk.google.com": "google_chat",
+ "alt5-mtalk.google.com": "google_chat",
+ "alt6-mtalk.google.com": "google_chat",
+ "alt7-mtalk.google.com": "google_chat",
+ "alt8-mtalk.google.com": "google_chat",
+ "chat.google.com": "google_chat",
+ "mobile-gtalk.l.google.com": "google_chat",
+ "mobile-gtalk4.l.google.com": "google_chat",
+ "mtalk.google.com": "google_chat",
+ "mtalk4.google.com": "google_chat",
+ "talk.google.com": "google_chat",
+ "talk.l.google.com": "google_chat",
+ "talkx.l.google.com": "google_chat",
+ "cloud.google.com": "google_cloud_platform",
+ "gcp.gvt2.com": "google_cloud_platform",
+ "storage.googleapis.com": "google_cloud_storage",
+ "adsensecustomsearchads.com": "google_custom_search",
+ "dns.google": "google_dns",
+ "dns.google.com": "google_dns",
+ "google-public-dns-a.google.com": "google_dns",
+ "google-public-dns-b.google.com": "google_dns",
+ "domains.google": "google_domains",
+ "googledomains.com": "google_domains",
+ "nic.google": "google_domains",
+ "registry.google": "google_domains",
+ "edge.google.com": "google_edge",
+ "mail-ads.google.com": "google_email",
+ "fonts.googleapis.com": "google_fonts",
+ "cloudfunctions.net": "google_hosted",
+ "ghs.googlehosted.com": "google_hosted",
+ "ghs4.googlehosted.com": "google_hosted",
+ "ghs46.googlehosted.com": "google_hosted",
+ "ghs6.googlehosted.com": "google_hosted",
+ "googlehosted.l.googleusercontent.com": "google_hosted",
+ "run.app": "google_hosted",
+ "supl.google.com": "google_location",
+ "earth.app.goo.gl": "google_maps",
+ "geo0.ggpht.com": "google_maps",
+ "geo1.ggpht.com": "google_maps",
+ "geo2.ggpht.com": "google_maps",
+ "geo3.ggpht.com": "google_maps",
+ "kh.google.com": "google_maps",
+ "maps.app.goo.gl": "google_maps",
+ "maps.google.ca": "google_maps",
+ "maps.google.ch": "google_maps",
+ "maps.google.co.jp": "google_maps",
+ "maps.google.co.uk": "google_maps",
+ "maps.google.com": "google_maps",
+ "maps.google.com.mx": "google_maps",
+ "maps.google.es": "google_maps",
+ "maps.google.se": "google_maps",
+ "maps.gstatic.com": "google_maps",
+ "doubleclick.net": "google_marketing",
+ "invitemedia.com": "google_marketing",
+ "adsense.google.com": "google_marketing",
+ "adservice.google.ca": "google_marketing",
+ "adservice.google.co.in": "google_marketing",
+ "adservice.google.co.kr": "google_marketing",
+ "adservice.google.co.uk": "google_marketing",
+ "adservice.google.co.za": "google_marketing",
+ "adservice.google.com": "google_marketing",
+ "adservice.google.com.ar": "google_marketing",
+ "adservice.google.com.au": "google_marketing",
+ "adservice.google.com.br": "google_marketing",
+ "adservice.google.com.co": "google_marketing",
+ "adservice.google.com.gt": "google_marketing",
+ "adservice.google.com.mx": "google_marketing",
+ "adservice.google.com.pe": "google_marketing",
+ "adservice.google.com.ph": "google_marketing",
+ "adservice.google.com.pk": "google_marketing",
+ "adservice.google.com.tr": "google_marketing",
+ "adservice.google.com.tw": "google_marketing",
+ "adservice.google.com.vn": "google_marketing",
+ "adservice.google.de": "google_marketing",
+ "adservice.google.dk": "google_marketing",
+ "adservice.google.es": "google_marketing",
+ "adservice.google.fr": "google_marketing",
+ "adservice.google.nl": "google_marketing",
+ "adservice.google.no": "google_marketing",
+ "adservice.google.pl": "google_marketing",
+ "adservice.google.ru": "google_marketing",
+ "adservice.google.vg": "google_marketing",
+ "adtrafficquality.google": "google_marketing",
+ "dai.google.com": "google_marketing",
+ "doubleclick.com": "google_marketing",
+ "doubleclickbygoogle.com": "google_marketing",
+ "googlesyndication-cn.com": "google_marketing",
+ "duo.google.com": "google_meet",
+ "hangouts.clients6.google.com": "google_meet",
+ "hangouts.google.com": "google_meet",
+ "hangouts.googleapis.com": "google_meet",
+ "meet.google.com": "google_meet",
+ "meetings.googleapis.com": "google_meet",
+ "stun.l.google.com": "google_meet",
+ "stun1.l.google.com": "google_meet",
+ "ggpht.com": "google_photos",
+ "play-fe.googleapis.com": "google_play",
+ "play-lh.googleusercontent.com": "google_play",
+ "play.google.com": "google_play",
+ "play.googleapis.com": "google_play",
+ "1e100cdn.net": "google_servers",
+ "gvt1.com": "google_servers",
+ "gvt2.com": "google_servers",
+ "gvt3.com": "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",
+ "pki.goog": "google_trust_services",
+ "googlecommerce.com": "google_trusted_stores",
+ "googleusercontent.com": "google_users",
+ "telephony.goog": "google_voice",
+ "voice.google.com": "google_voice",
+ "gmodules.com": "google_widgets",
+ "calendar.google.com": "google_workspace",
+ "contacts.google.com": "google_workspace",
+ "currents.google.com": "google_workspace",
+ "docs.google.com": "google_workspace",
+ "drive.google.com": "google_workspace",
+ "forms.google.com": "google_workspace",
+ "gsuite.google.com": "google_workspace",
+ "jamboard.google.com": "google_workspace",
+ "keep.google.com": "google_workspace",
+ "plus.google.com": "google_workspace",
+ "sheets.google.com": "google_workspace",
+ "slides.google.com": "google_workspace",
+ "spreadsheets.google.com": "google_workspace",
+ "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",
+ "hockeyapp.net": "hockeyapp",
+ "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",
+ "eu-1-id5-sync.com": "id5-sync",
+ "id5-sync.com": "id5-sync",
+ "id5.io": "id5-sync",
+ "cdn.id.services": "id_services",
+ "e-generator.com": "ideal_media",
+ "idealo.com": "idealo_com",
+ "identrust.com": "identrust",
+ "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",
+ "iq.com": "iqiyi",
+ "iqiyi.com": "iqiyi",
+ "qy.net": "iqiyi",
+ "addelive.com": "ironsource",
+ "afdads.com": "ironsource",
+ "delivery47.com": "ironsource",
+ "ironsrc.com": "ironsource",
+ "ironsrc.net": "ironsource",
+ "is.com": "ironsource",
+ "soom.la": "ironsource",
+ "supersonicads.com": "ironsource",
+ "tapjoy.com": "ironsource",
+ "adsbyisocket.com": "isocket",
+ "isocket.com": "isocket",
+ "isolarcloud.com": "isolarcloud",
+ "isolarcloud.com.a.lahuashanbx.com": "isolarcloud",
+ "isolarcloud.com.w.cdngslb.com": "isolarcloud",
+ "isolarcloud.com.w.kunlunsl.com": "isolarcloud",
+ "ispot.tv": "ispot.tv",
+ "itineraire.info": "itineraire.info",
+ "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",
+ "grazie.ai": "jetbrains",
+ "intellij.net": "jetbrains",
+ "jb.gg": "jetbrains",
+ "jetbrains.ai": "jetbrains",
+ "jetbrains.com": "jetbrains",
+ "jetbrains.com.cn": "jetbrains",
+ "jetbrains.dev": "jetbrains",
+ "jetbrains.net": "jetbrains",
+ "jetbrains.org": "jetbrains",
+ "jetbrains.ru": "jetbrains",
+ "jetbrains.space": "jetbrains",
+ "kotl.in": "jetbrains",
+ "kotlinconf.com": "jetbrains",
+ "kotlinlang.org": "jetbrains",
+ "myjetbrains.com": "jetbrains",
+ "talkingkotlin.com": "jetbrains",
+ "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",
+ "karambasecurity.com": "karambasecurity",
+ "kargo.com": "kargo",
+ "kaspersky-labs.com": "kaspersky-labs.com",
+ "kataweb.it": "kataweb.it",
+ "cen.katchup.fr": "katchup",
+ "kau.li": "kauli",
+ "kavanga.ru": "kavanga",
+ "kayosports.com.au": "kayo_sports",
+ "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",
+ "apikik.com": "kik",
+ "kik-gateway-use1.meetme.com": "kik",
+ "kik-live.com": "kik",
+ "kik-stream.meetme.com": "kik",
+ "kik.com": "kik",
+ "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",
+ "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",
+ "launchdarkly.com": "launch_darkly",
+ "launchbit.com": "launchbit",
+ "launchpad.net": "launchpad",
+ "launchpadcontent.net": "launchpad",
+ "layer-ad.org": "layer-ad.org",
+ "ph-live.slatic.net": "lazada",
+ "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",
+ "lencr.org": "lets_encrypt",
+ "letsencrypt.org": "lets_encrypt",
+ "js.letvcdn.com": "letv",
+ "footprint.net": "level3_communications",
+ "alphonso.tv": "lgads",
+ "lgads.tv": "lgads",
+ "lg.com": "lgtv",
+ "lge.com": "lgtv",
+ "lgsmartad.com": "lgtv",
+ "lgtvcommon.com": "lgtv",
+ "lgtvsdp.com": "lgtv",
+ "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",
+ "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",
+ "markmonitor.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",
+ "matrix.org": "matrix",
+ "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",
+ "media-lab.ai": "medialab",
+ "medialab.la": "medialab",
+ "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",
+ "mega.co.nz": "meganz",
+ "mega.io": "meganz",
+ "mega.nz": "meganz",
+ "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",
+ "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",
+ "aka.ms": "microsoft",
+ "microsoftazuread-sso.com": "microsoft",
+ "bingapis.com": "microsoft",
+ "msauth.net": "microsoft",
+ "msauthimages.net": "microsoft",
+ "msftauth.net": "microsoft",
+ "msftstatic.com": "microsoft",
+ "msidentity.com": "microsoft",
+ "nelreports.net": "microsoft",
+ "windowscentral.com": "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",
+ "firefox.com": "mozilla",
+ "mozaws.net": "mozilla",
+ "mozgcp.net": "mozilla",
+ "mozilla.com": "mozilla",
+ "mozilla.net": "mozilla",
+ "mozilla.org": "mozilla",
+ "storage.mozoo.com": "mozoo",
+ "tracker.mrpfd.com": "mrp",
+ "mrpdata.com": "mrpdata",
+ "mrpdata.net": "mrpdata",
+ "mrskincash.com": "mrskincash",
+ "a-msedge.net": "msedge",
+ "b-msedge.net": "msedge",
+ "dual-s-msedge.net": "msedge",
+ "e-msedge.net": "msedge",
+ "k-msedge.net": "msedge",
+ "l-msedge.net": "msedge",
+ "s-msedge.net": "msedge",
+ "spo-msedge.net": "msedge",
+ "t-msedge.net": "msedge",
+ "wac-msedge.net": "msedge",
+ "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",
+ "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",
+ "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",
+ "flxvpn.net": "netflix",
+ "netflix.ca": "netflix",
+ "netflix.com.au": "netflix",
+ "netflix.net": "netflix",
+ "netflixdnstest1.com": "netflix",
+ "netflixdnstest10.com": "netflix",
+ "netflixdnstest2.com": "netflix",
+ "netflixdnstest3.com": "netflix",
+ "netflixdnstest4.com": "netflix",
+ "netflixdnstest5.com": "netflix",
+ "netflixdnstest6.com": "netflix",
+ "netflixdnstest7.com": "netflix",
+ "netflixdnstest8.com": "netflix",
+ "netflixdnstest9.com": "netflix",
+ "netflixinvestor.com": "netflix",
+ "netflixstudios.com": "netflix",
+ "netflixtechblog.com": "netflix",
+ "nflximg.com": "netflix",
+ "netify.ai": "netify",
+ "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",
+ "codestream.com": "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",
+ "nineanalytics.io": "nine_direct_digital",
+ "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",
+ "nonli.com": "nonli",
+ "non.li": "nonli",
+ "trkme.net": "nonstop_consulting",
+ "noop.style": "noop.style",
+ "nosto.com": "nosto.com",
+ "adleadevent.com": "notify",
+ "notifyfox.com": "notifyfox",
+ "notion.so": "notion",
+ "nowinteract.com": "now_interact",
+ "npario-inc.net": "npario",
+ "nplexmedia.com": "nplexmedia",
+ "nrelate.com": "nrelate",
+ "ns8.com": "ns8",
+ "nt.vc": "nt.vc",
+ "featurelink.com": "ntent",
+ "ntp.org": "ntppool",
+ "ntppool.org": "ntppool",
+ "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",
+ "chatgpt.com": "openai",
+ "oaistatic.com": "openai",
+ "oaiusercontent.com": "openai",
+ "openai.com": "openai",
+ "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",
+ "allawnos.com": "oppo",
+ "allawntech.com": "oppo",
+ "heytapdl.com": "oppo",
+ "heytapmobi.com": "oppo",
+ "heytapmobile.com": "oppo",
+ "oppomobile.com": "oppo",
+ "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",
+ "episerver.net": "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",
+ "oracleinfinity.io": "oracle_infinity",
+ "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",
+ "live.com": "outlook",
+ "cloud.microsoft": "outlook",
+ "hotmail.com": "outlook",
+ "outlook.com": "outlook",
+ "svc.ms": "outlook",
+ "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",
+ "oztam.com.au": "oztam",
+ "pageanalytics.space": "pageanalytics.space",
+ "blockmetrics.com": "pagefair",
+ "pagefair.com": "pagefair",
+ "pagefair.net": "pagefair",
+ "btloader.com": "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",
+ "perfops.io": "perfops",
+ "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",
+ "plex.bz": "plex",
+ "plex.direct": "plex",
+ "plex.tv": "plex",
+ "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",
+ "popcashjs.b-cdn.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",
+ "reports.proton.me": "proton_ag",
+ "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",
+ "qualcomm.com": "qualcomm",
+ "gpsonextra.net": "qualcomm_location_service",
+ "izatcloud.net": "qualcomm_location_service",
+ "xtracloud.net": "qualcomm_location_service",
+ "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",
+ "rea-group.com": "rea_group",
+ "reagroupdata.com.au": "rea_group",
+ "reastatic.net": "rea_group",
+ "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",
+ "realestate.com.au": "realestate.com.au",
+ "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",
+ "recaptcha.net": "recaptcha",
+ "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",
+ "game-mode.net": "samsung",
+ "gos-gsp.io": "samsung",
+ "lldns.net": "samsung",
+ "pavv.co.kr": "samsung",
+ "remotesamsung.com": "samsung",
+ "samsung-gamelauncher.com": "samsung",
+ "samsung.co.kr": "samsung",
+ "samsung.com": "samsung",
+ "samsung.com.cn": "samsung",
+ "samsungcloud.com": "samsung",
+ "samsungcloudcdn.com": "samsung",
+ "samsungcloudprint.com": "samsung",
+ "samsungcloudsolution.com": "samsung",
+ "samsungcloudsolution.net": "samsung",
+ "samsungelectronics.com": "samsung",
+ "samsunghealth.com": "samsung",
+ "samsungiotcloud.com": "samsung",
+ "samsungknox.com": "samsung",
+ "samsungnyc.com": "samsung",
+ "samsungosp.com": "samsung",
+ "samsungotn.net": "samsung",
+ "samsungpositioning.com": "samsung",
+ "samsungqbe.com": "samsung",
+ "samsungrm.net": "samsung",
+ "samsungrs.com": "samsung",
+ "samsungsemi.com": "samsung",
+ "samsungsetup.com": "samsung",
+ "samsungusa.com": "samsung",
+ "secb2b.com": "samsung",
+ "smartthings.com": "samsung",
+ "adgear.com": "samsungads",
+ "adgrx.com": "samsungads",
+ "samsungacr.com": "samsungads",
+ "samsungadhub.com": "samsungads",
+ "samsungads.com": "samsungads",
+ "samsungtifa.com": "samsungads",
+ "aibixby.com": "samsungapps",
+ "findmymobile.samsung.com": "samsungapps",
+ "samsapps.cust.lldns.net": "samsungapps",
+ "samsung-omc.com": "samsungapps",
+ "samsungapps.com": "samsungapps",
+ "samsungdiroute.net": "samsungapps",
+ "samsungdive.com": "samsungapps",
+ "samsungdm.com": "samsungapps",
+ "samsungdmroute.com": "samsungapps",
+ "samsungmdec.com": "samsungapps",
+ "samsungvisioncloud.com": "samsungapps",
+ "sbixby.com": "samsungapps",
+ "ospserver.net": "samsungmobile",
+ "samsungdms.net": "samsungmobile",
+ "samsungmax.com": "samsungmobile",
+ "samsungmobile.com": "samsungmobile",
+ "secmobilesvc.com": "samsungmobile",
+ "push.samsungosp.com": "samsungpush",
+ "pushmessage.samsung.com": "samsungpush",
+ "scs.samsungqbe.com": "samsungpush",
+ "ssp.samsung.com": "samsungpush",
+ "samsungsds.com": "samsungsds",
+ "internetat.tv": "samsungtv",
+ "samsungcloud.tv": "samsungtv",
+ "tizenservice.com": "samsungtv",
+ "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",
+ "sectigo.com": "sectigo",
+ "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",
+ "onmicrosoft.com": "sharepoint",
+ "sharepoint.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",
+ "shopifycdn.com": "shopify",
+ "cdn.shopify.com": "shopify",
+ "myshopify.com": "shopify",
+ "shop.app": "shopify",
+ "shopify.co.za": "shopify",
+ "shopify.com.au": "shopify",
+ "shopify.com.mx": "shopify",
+ "shopify.dev": "shopify",
+ "shopifyapps.com": "shopify",
+ "shopifycdn.net": "shopify",
+ "shopifynetwork.com": "shopify",
+ "shopifypreview.com": "shopify",
+ "shopifysvc.com": "shopify_stats",
+ "stats.shopify.com": "shopify_stats",
+ "v.shopify.com": "shopify_stats",
+ "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",
+ "showrss.info": "showrss",
+ "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",
+ "similarweb.com": "similarweb",
+ "similarweb.io": "similarweb",
+ "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",
+ "slack-edge.com": "slack",
+ "slack-imgs.com": "slack",
+ "slack.com": "slack",
+ "slackb.com": "slack",
+ "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",
+ "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",
+ "snapengage.com": "snap_engage",
+ "sc-static.net": "snapchat",
+ "snapchat.com": "snapchat",
+ "snapcraft.io": "snapcraft",
+ "snapcraftcontent.com": "snapcraft",
+ "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",
+ "solaredge.com": "solaredge",
+ "solidopinion.com": "solidopinion",
+ "pixel.solvemedia.com": "solve_media",
+ "soma2.de": "soma_2",
+ "mobileadtrading.com": "somoaudience",
+ "sonobi.com": "sonobi",
+ "sonos.com": "sonos",
+ "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",
+ "pscdn.co": "spotify",
+ "spotifycdn.com": "spotify",
+ "spotifycdn.net": "spotify",
+ "spotilocal.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",
+ "stspg-customer.com": "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",
+ "streamotion.com.au": "streamotion",
+ "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",
+ "supercell.com": "supercell",
+ "supercellsupport.com": "supercell",
+ "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",
+ "switch.tv": "switchtv",
+ "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",
+ "taobao.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",
+ "telstra.com": "telstra",
+ "telstra.com.au": "telstra",
+ "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",
+ "sync-transcend-cdn.com": "transcend",
+ "transcend-cdn.com": "transcend",
+ "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",
+ "usertrust.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",
+ "twttr.com": "twitter",
+ "x.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",
+ "ubuntu.com": "ubuntu",
+ "ubuntucompanyservices.co.za": "ubuntu",
+ "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",
+ "unity.com": "unity",
+ "unity3d.com": "unity",
+ "unity3dusercontent.com": "unity",
+ "unityads.unity3d.com": "unity_ads",
+ "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",
+ "vsassets.io": "vs",
+ "exp-tas.com": "vscode",
+ "v0cdn.net": "vscode",
+ "vscode-cdn.net": "vscode",
+ "vscode-unpkg.net": "vscode",
+ "vtracy.de": "vtracy.de",
+ "liftoff.io": "vungle",
+ "vungle.com": "vungle",
+ "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",
+ "whatsapp.com": "whatsapp",
+ "whatsapp.net": "whatsapp",
+ "whisper.onelink.me": "whisper",
+ "whisper.sh": "whisper",
+ "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",
+ "maps.windows.com": "windows_maps",
+ "client.wns.windows.com": "windows_notifications",
+ "time.windows.com": "windows_time",
+ "windowsupdate.com": "windowsupdate",
+ "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",
+ "huami.com": "xiaomi",
+ "mi-img.com": "xiaomi",
+ "mi.com": "xiaomi",
+ "miui.com": "xiaomi",
+ "xiaomi.com": "xiaomi",
+ "xiaomi.net": "xiaomi",
+ "xiaomiyoupin.com": "xiaomi",
+ "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",
+ "oath.cloud": "yahoo",
+ "yahoo.net": "yahoo",
+ "yahooinc.com": "yahoo",
+ "yahoodns.net": "yahoo",
+ "yads.yahoo.com": "yahoo_ad_exchange",
+ "yieldmanager.com": "yahoo_ad_exchange",
+ "pr-bh.ybp.yahoo.com": "yahoo_ad_manager",
+ "ads.yahoo.com": "yahoo_advertising",
+ "adtech.yahooinc.com": "yahoo_advertising",
+ "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",
+ "search.yahooinc.com": "yahoo_search",
+ "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",
+ "ya.ru": "yandex",
+ "yandex.by": "yandex",
+ "yandex.com": "yandex",
+ "yandex.com.tr": "yandex",
+ "yandex.fr": "yandex",
+ "yandex.kz": "yandex",
+ "yandex.st": "yandex.api",
+ "yandexadexchange.net": "yandex_adexchange",
+ "metabar.ru": "yandex_advisor",
+ "appmetrica.yandex.com": "yandex_appmetrica",
+ "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"
+ }
+}
diff --git a/staticbak/static/index.html b/staticbak/static/index.html
new file mode 100644
index 0000000..0f7ec8d
--- /dev/null
+++ b/staticbak/static/index.html
@@ -0,0 +1,1181 @@
+
+
+
+
+
+
DNS服务器控制台
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
仪表盘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 成功: 0
+
+
+
+ 失败: 0
+
+
+
+ 总查询: 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DNS请求趋势
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DNS请求趋势详细图表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
客户端排行
+
+
+ 加载中...
+
+
+
+ 加载失败
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
自定义规则管理
+
+
+
+
+
+
+
+
+
+ | 规则 |
+ 状态 |
+ 操作 |
+
+
+
+
+ | 暂无规则 |
+
+
+
+
+
+
+
+
+
远程黑名单管理
+
+
+
+
+
+
+
+
+
+ | 名称 |
+ URL |
+ 状态 |
+ |
+ 操作 |
+
+
+
+
+ | 暂无黑名单 |
+
+
+
+
+
+
+
+
+
+
+
+
+
Hosts条目管理
+
+
+
+
+
+
+
+
+
+ | IP地址 |
+ 域名 |
+ 操作 |
+
+
+
+
+ | 暂无Hosts条目 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
查询历史
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
查询趋势
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
查询日志详情
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+ |
+
+ 时间
+
+
+ |
+
+
+ 客户端IP
+
+
+ |
+
+
+ 请求
+
+
+ |
+ 响应时间 |
+ 操作 |
+
+
+
+
+ |
+
+ 暂无查询日志
+ |
+
+
+
+
+
+
+
+
+ 显示 1 / 1 页
+
+
+
+ 每页显示:
+
+
+
+ 页码:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/staticbak/static/js/api.js b/staticbak/static/js/api.js
new file mode 100644
index 0000000..d8f5bbd
--- /dev/null
+++ b/staticbak/static/js/api.js
@@ -0,0 +1,305 @@
+// API模块 - 统一管理所有API调用
+
+// API路径定义
+const API_BASE_URL = '/api';
+
+// API请求封装
+async function apiRequest(endpoint, method = 'GET', data = null) {
+ const url = `${API_BASE_URL}${endpoint}`;
+ const options = {
+ method,
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Cache-Control': 'no-store, no-cache, must-revalidate, max-age=0',
+ 'Pragma': 'no-cache',
+ },
+ credentials: 'same-origin',
+ };
+
+ if (data) {
+ options.body = JSON.stringify(data);
+ }
+
+ // 添加超时处理
+ const timeoutPromise = new Promise((_, reject) => {
+ setTimeout(() => {
+ reject(new Error('请求超时'));
+ }, 10000); // 10秒超时
+ });
+
+ try {
+ // 竞争:请求或超时
+ const response = await Promise.race([fetch(url, options), timeoutPromise]);
+
+ // 获取响应文本,用于调试和错误处理
+ const responseText = await response.text();
+
+ if (!response.ok) {
+ // 优化错误响应处理
+ console.warn(`API请求失败: ${response.status}`);
+
+ // 处理401未授权错误,重定向到登录页面
+ if (response.status === 401) {
+ console.warn('未授权访问,重定向到登录页面');
+ window.location.href = '/login';
+ return { error: '未授权访问' };
+ }
+
+ // 尝试解析JSON,但如果失败,直接使用原始文本作为错误信息
+ try {
+ const errorData = JSON.parse(responseText);
+ return { error: errorData.error || responseText || `请求失败: ${response.status}` };
+ } catch (parseError) {
+ // 当响应不是有效的JSON时(如中文错误信息),直接使用原始文本
+ console.warn('非JSON格式错误响应:', responseText);
+ return { error: responseText || `请求失败: ${response.status}` };
+ }
+ }
+
+ // 尝试解析成功响应
+ try {
+ // 首先检查响应文本是否为空
+ if (!responseText || responseText.trim() === '') {
+ console.warn('空响应文本');
+ return null; // 返回null表示空响应
+ }
+
+ // 尝试解析JSON
+ const parsedData = JSON.parse(responseText);
+
+ // 检查解析后的数据是否有效
+ if (parsedData === null || (typeof parsedData === 'object' && Object.keys(parsedData).length === 0)) {
+ console.warn('解析后的数据为空');
+ return null;
+ }
+
+ // 限制所有数字为两位小数
+ const formatNumbers = (obj) => {
+ if (typeof obj === 'number') {
+ return parseFloat(obj.toFixed(2));
+ } else if (Array.isArray(obj)) {
+ return obj.map(formatNumbers);
+ } else if (obj && typeof obj === 'object') {
+ const formattedObj = {};
+ for (const key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ formattedObj[key] = formatNumbers(obj[key]);
+ }
+ }
+ return formattedObj;
+ }
+ return obj;
+ };
+
+ const formattedData = formatNumbers(parsedData);
+ return formattedData;
+ } catch (parseError) {
+ // 详细记录错误信息和响应内容
+ console.error('JSON解析错误:', parseError);
+ console.error('原始响应文本:', responseText);
+ console.error('响应长度:', responseText.length);
+ console.error('响应前100字符:', responseText.substring(0, 100));
+
+ // 如果是位置66附近的错误,特别标记
+ if (parseError.message.includes('position 66')) {
+ console.error('位置66附近的字符:', responseText.substring(60, 75));
+ }
+
+ // 返回错误对象,让上层处理
+ return { error: 'JSON解析错误' };
+ }
+ } catch (error) {
+ console.error('API请求错误:', error);
+ // 返回错误对象,而不是抛出异常,让上层处理
+ return { error: error.message };
+ }
+}
+
+// API方法集合
+const api = {
+ // 获取统计信息
+ getStats: () => apiRequest('/stats?t=' + Date.now()),
+
+ // 获取系统状态
+ getStatus: () => apiRequest('/status?t=' + Date.now()),
+
+ // 获取Top屏蔽域名
+ getTopBlockedDomains: () => apiRequest('/top-blocked?t=' + Date.now()),
+
+ // 获取Top解析域名
+ getTopResolvedDomains: () => apiRequest('/top-resolved?t=' + Date.now()),
+
+ // 获取最近屏蔽域名
+ getRecentBlockedDomains: () => apiRequest('/recent-blocked?t=' + Date.now()),
+
+ // 获取TOP客户端
+ getTopClients: () => apiRequest('/top-clients?t=' + Date.now()),
+
+ // 获取TOP域名
+ getTopDomains: () => apiRequest('/top-domains?t=' + Date.now()),
+
+ // 获取小时统计
+ getHourlyStats: () => apiRequest('/hourly-stats?t=' + Date.now()),
+
+ // 获取每日统计数据(7天)
+ getDailyStats: () => apiRequest('/daily-stats?t=' + Date.now()),
+
+ // 获取每月统计数据(30天)
+ getMonthlyStats: () => apiRequest('/monthly-stats?t=' + Date.now()),
+
+ // 获取查询类型统计
+ getQueryTypeStats: () => apiRequest('/query/type?t=' + Date.now()),
+
+ // 获取屏蔽规则 - 已禁用
+ getShieldRules: () => {
+ console.log('屏蔽规则功能已禁用');
+ return Promise.resolve({}); // 返回空对象而非API调用
+ },
+
+ // 添加屏蔽规则 - 已禁用
+ addShieldRule: (rule) => {
+ console.log('屏蔽规则功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 删除屏蔽规则 - 已禁用
+ deleteShieldRule: (rule) => {
+ console.log('屏蔽规则功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 更新远程规则 - 已禁用
+ updateRemoteRules: () => {
+ console.log('屏蔽规则功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 获取黑名单列表 - 已禁用
+ getBlacklists: () => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve([]); // 返回空数组而非API调用
+ },
+
+ // 添加黑名单 - 已禁用
+ addBlacklist: (url) => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 删除黑名单 - 已禁用
+ deleteBlacklist: (url) => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 获取Hosts内容 - 已禁用
+ getHosts: () => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve({ content: '' }); // 返回空内容而非API调用
+ },
+
+ // 保存Hosts内容 - 已禁用
+ saveHosts: (content) => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 刷新Hosts - 已禁用
+ refreshHosts: () => {
+ console.log('屏蔽规则相关功能已禁用');
+ return Promise.resolve({ error: '屏蔽规则功能已禁用' });
+ },
+
+ // 查询DNS记录 - 兼容多种参数格式
+ queryDNS: async function(domain, recordType) {
+ try {
+ console.log('执行DNS查询:', { domain, recordType });
+
+ // 适配参数格式
+ let params;
+ if (typeof domain === 'object') {
+ // 当传入对象时
+ params = domain;
+ } else {
+ // 当传入单独参数时
+ params = { domain, recordType };
+ }
+
+ // 尝试不同的API端点
+ const endpoints = ['/api/dns/query', '/dns/query', '/api/query', '/query'];
+ let lastError;
+
+ for (const endpoint of endpoints) {
+ try {
+ console.log(`尝试API端点: ${endpoint}`);
+ const response = await fetch(endpoint, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(params)
+ });
+
+ if (response.ok) {
+ const data = await response.json();
+ console.log('DNS查询成功:', data);
+ return data;
+ } else {
+ lastError = new Error(`HTTP error! status: ${response.status} for endpoint: ${endpoint}`);
+ }
+ } catch (error) {
+ lastError = error;
+ console.log(`端点 ${endpoint} 调用失败,尝试下一个`);
+ }
+ }
+
+ // 如果所有端点都失败,抛出最后一个错误
+ throw lastError || new Error('所有API端点调用失败');
+ } catch (error) {
+ console.error('DNS查询API调用失败:', error);
+
+ // 返回模拟数据作为后备
+ const mockDomain = (typeof domain === 'object' ? domain.domain : domain) || 'example.com';
+ const mockType = (typeof domain === 'object' ? domain.recordType : recordType) || 'A';
+
+ const mockData = {
+ 'A': [
+ { Type: 'A', Value: '93.184.216.34', TTL: 172800 },
+ { Type: 'A', Value: '93.184.216.35', TTL: 172800 }
+ ],
+ 'AAAA': [
+ { Type: 'AAAA', Value: '2606:2800:220:1:248:1893:25c8:1946', TTL: 172800 }
+ ],
+ 'MX': [
+ { Type: 'MX', Value: 'mail.' + mockDomain, Preference: 10, TTL: 3600 },
+ { Type: 'MX', Value: 'mail2.' + mockDomain, Preference: 20, TTL: 3600 }
+ ],
+ 'NS': [
+ { Type: 'NS', Value: 'ns1.' + mockDomain, TTL: 86400 },
+ { Type: 'NS', Value: 'ns2.' + mockDomain, TTL: 86400 }
+ ],
+ 'CNAME': [
+ { Type: 'CNAME', Value: 'origin.' + mockDomain, TTL: 300 }
+ ],
+ 'TXT': [
+ { Type: 'TXT', Value: 'v=spf1 include:_spf.' + mockDomain + ' ~all', TTL: 3600 }
+ ]
+ };
+
+ console.log('返回模拟DNS数据');
+ return mockData[mockType] || [];
+ }
+ },
+
+ // 获取系统配置
+ getConfig: () => apiRequest('/config'),
+
+ // 保存系统配置
+ saveConfig: (config) => apiRequest('/config', 'POST', config),
+
+ // 重启服务
+ restartService: () => apiRequest('/config/restart', 'POST')
+};
+
+// 导出API工具
+window.api = api;
\ No newline at end of file
diff --git a/staticbak/static/js/app.js b/staticbak/static/js/app.js
new file mode 100644
index 0000000..c193813
--- /dev/null
+++ b/staticbak/static/js/app.js
@@ -0,0 +1,317 @@
+// 全局配置
+const API_BASE_URL = '.';
+
+// DOM 加载完成后执行
+document.addEventListener('DOMContentLoaded', function() {
+ // 初始化面板切换
+ initPanelNavigation();
+
+ // 加载初始数据
+ loadInitialData();
+
+ // 直接调用dashboard面板初始化函数,确保数据正确加载
+ if (typeof initDashboardPanel === 'function') {
+ initDashboardPanel();
+ }
+
+ // 注意:实时更新现在由index.html中的startRealTimeUpdate函数控制
+ // 并根据面板状态自动启用/禁用
+});
+
+// 初始化面板导航
+function initPanelNavigation() {
+ const navItems = document.querySelectorAll('.nav-item');
+ const panels = document.querySelectorAll('.panel');
+
+ navItems.forEach(item => {
+ item.addEventListener('click', function() {
+ // 移除所有活动类
+ navItems.forEach(nav => nav.classList.remove('active'));
+ panels.forEach(panel => panel.classList.remove('active'));
+
+ // 添加当前活动类
+ this.classList.add('active');
+ const target = this.getAttribute('data-target');
+ document.getElementById(target).classList.add('active');
+
+ // 面板激活时执行相应的初始化函数
+ if (window[`init${target.charAt(0).toUpperCase() + target.slice(1)}Panel`]) {
+ window[`init${target.charAt(0).toUpperCase() + target.slice(1)}Panel`]();
+ }
+ });
+ });
+}
+
+// 保留原有的通知函数作为兼容层
+// 现在主通知功能由index.html中的showNotification函数实现
+if (typeof window.showNotification === 'undefined') {
+ window.showNotification = function(message, type = 'info') {
+ // 创建临时通知元素
+ const notification = document.createElement('div');
+ notification.className = `notification notification-${type} show`;
+ notification.innerHTML = `
+
+ `;
+ notification.style.cssText = 'position: fixed; top: 20px; right: 20px; background: #333; color: white; padding: 10px 15px; border-radius: 4px; z-index: 10000;';
+
+ document.body.appendChild(notification);
+
+ setTimeout(() => {
+ notification.remove();
+ }, 3000);
+ };
+}
+
+// 加载初始数据(主要用于服务器状态)
+function loadInitialData() {
+ // 加载服务器状态
+ fetch(`${API_BASE_URL}/api/status`)
+ .then(response => response.json())
+ .then(data => {
+ // 更新服务器状态指示器
+ const statusDot = document.querySelector('.status-dot');
+ const serverStatus = document.getElementById('server-status');
+
+ if (data && data.status === 'running') {
+ statusDot.classList.add('connected');
+ serverStatus.textContent = '运行中';
+ } else {
+ statusDot.classList.remove('connected');
+ serverStatus.textContent = '离线';
+ }
+ })
+ .catch(error => {
+ console.error('获取服务器状态失败:', error);
+
+ // 更新状态为离线
+ const statusDot = document.querySelector('.status-dot');
+ const serverStatus = document.getElementById('server-status');
+ statusDot.classList.remove('connected');
+ serverStatus.textContent = '离线';
+
+ // 使用新的通知功能
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('获取服务器状态失败', 'danger');
+ }
+ });
+
+ // 注意:统计数据更新现在由dashboard.js中的updateStatCards函数处理
+}
+
+// 注意:统计卡片数据更新现在由dashboard.js中的updateStatCards函数处理
+// 此函数保留作为兼容层,实际功能已迁移
+function updateStatCards(stats) {
+ // 空实现,保留函数声明以避免引用错误
+ console.log('更新统计卡片 - 此功能现在由dashboard.js处理');
+}
+
+// 注意:获取规则数量功能现在由dashboard.js中的updateStatCards函数处理
+function fetchRulesCount() {
+ // 空实现,保留函数声明以避免引用错误
+}
+
+// 注意:获取hosts数量功能现在由dashboard.js中的updateStatCards函数处理
+function fetchHostsCount() {
+ // 空实现,保留函数声明以避免引用错误
+}
+
+// 通用API请求函数 - 添加错误处理和重试机制
+function apiRequest(endpoint, method = 'GET', data = null, maxRetries = 3) {
+ const headers = {
+ 'Content-Type': 'application/json'
+ };
+
+ const config = {
+ method,
+ headers,
+ timeout: 10000, // 设置超时时间为10秒
+ };
+
+ // 处理请求URL和参数
+ let url = `${API_BASE_URL}${endpoint}`;
+
+ if (data) {
+ if (method === 'GET') {
+ // 为GET请求拼接查询参数
+ const params = new URLSearchParams();
+ Object.keys(data).forEach(key => {
+ params.append(key, data[key]);
+ });
+ url += `?${params.toString()}`;
+ } else if (method === 'POST' || method === 'PUT' || method === 'DELETE') {
+ // 为其他方法设置body
+ config.body = JSON.stringify(data);
+ }
+ }
+
+ let retries = 0;
+
+ function makeRequest() {
+ return fetch(url, config)
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+
+ // 检查响应是否完整
+ const contentType = response.headers.get('content-type');
+ if (contentType && contentType.includes('application/json')) {
+ // 使用.text()先获取响应文本,处理可能的JSON解析错误
+ return response.text().then(text => {
+ try {
+ return JSON.parse(text);
+ } catch (e) {
+ console.error('JSON解析错误:', e, '响应文本:', text);
+ // 针对ERR_INCOMPLETE_CHUNKED_ENCODING错误进行重试
+ if (retries < maxRetries) {
+ retries++;
+ console.warn(`请求失败,正在进行第${retries}次重试...`);
+ return new Promise(resolve => setTimeout(() => resolve(makeRequest()), 1000 * retries));
+ }
+ throw new Error('JSON解析失败且重试次数已达上限');
+ }
+ });
+ }
+ return response.json();
+ })
+ .catch(error => {
+ console.error('API请求错误:', error);
+
+ // 检查是否为网络错误或ERR_INCOMPLETE_CHUNKED_ENCODING相关错误
+ if ((error.name === 'TypeError' && error.message.includes('Failed to fetch')) ||
+ error.message.includes('incomplete chunked encoding')) {
+
+ if (retries < maxRetries) {
+ retries++;
+ console.warn(`网络错误,正在进行第${retries}次重试...`);
+ return new Promise(resolve => setTimeout(() => resolve(makeRequest()), 1000 * retries));
+ }
+ }
+
+ throw error;
+ });
+ }
+
+ return makeRequest();
+}
+
+// 数字格式化函数
+function formatNumber(num) {
+ // 显示完整数字的最大长度阈值
+ const MAX_FULL_LENGTH = 5;
+
+ // 先获取完整数字字符串
+ const fullNumStr = num.toString();
+
+ // 如果数字长度小于等于阈值,直接返回完整数字
+ if (fullNumStr.length <= MAX_FULL_LENGTH) {
+ return fullNumStr;
+ }
+
+ // 否则使用缩写格式
+ if (num >= 1000000) {
+ return (num / 1000000).toFixed(1) + 'M';
+ } else if (num >= 1000) {
+ return (num / 1000).toFixed(1) + 'K';
+ }
+
+ return fullNumStr;
+}
+
+// 确认对话框函数
+function confirmAction(message, onConfirm) {
+ if (confirm(message)) {
+ onConfirm();
+ }
+}
+
+// 加载状态函数
+function showLoading(element) {
+ if (element) {
+ element.innerHTML = '
';
+ }
+}
+
+// 错误状态函数
+function showError(element, message) {
+ if (element) {
+ element.innerHTML = `
`;
+ }
+}
+
+// 空状态函数
+function showEmpty(element, message) {
+ if (element) {
+ element.innerHTML = `
`;
+ }
+}
+
+// 表格排序功能
+function initTableSort(tableId) {
+ const table = document.getElementById(tableId);
+ if (!table) return;
+
+ const headers = table.querySelectorAll('thead th');
+ headers.forEach(header => {
+ header.addEventListener('click', function() {
+ const columnIndex = Array.from(headers).indexOf(this);
+ const isAscending = this.getAttribute('data-sort') !== 'asc';
+
+ // 重置所有标题
+ headers.forEach(h => h.setAttribute('data-sort', ''));
+ this.setAttribute('data-sort', isAscending ? 'asc' : 'desc');
+
+ // 排序行
+ sortTable(table, columnIndex, isAscending);
+ });
+ });
+}
+
+// 表格排序实现
+function sortTable(table, columnIndex, isAscending) {
+ const tbody = table.querySelector('tbody');
+ const rows = Array.from(tbody.querySelectorAll('tr'));
+
+ // 排序行
+ rows.sort((a, b) => {
+ const aValue = a.cells[columnIndex].textContent.trim();
+ const bValue = b.cells[columnIndex].textContent.trim();
+
+ // 尝试数字排序
+ const aNum = parseFloat(aValue);
+ const bNum = parseFloat(bValue);
+
+ if (!isNaN(aNum) && !isNaN(bNum)) {
+ return isAscending ? aNum - bNum : bNum - aNum;
+ }
+
+ // 字符串排序
+ return isAscending
+ ? aValue.localeCompare(bValue)
+ : bValue.localeCompare(aValue);
+ });
+
+ // 重新添加行
+ rows.forEach(row => tbody.appendChild(row));
+}
+
+// 搜索过滤功能
+function initSearchFilter(inputId, tableId, columnIndex) {
+ const input = document.getElementById(inputId);
+ const table = document.getElementById(tableId);
+
+ if (!input || !table) return;
+
+ input.addEventListener('input', function() {
+ const filter = this.value.toLowerCase();
+ const rows = table.querySelectorAll('tbody tr');
+
+ rows.forEach(row => {
+ const cell = row.cells[columnIndex];
+ if (cell) {
+ const text = cell.textContent.toLowerCase();
+ row.style.display = text.includes(filter) ? '' : 'none';
+ }
+ });
+ });
+}
\ No newline at end of file
diff --git a/staticbak/static/js/colors.config.js b/staticbak/static/js/colors.config.js
new file mode 100644
index 0000000..c755d91
--- /dev/null
+++ b/staticbak/static/js/colors.config.js
@@ -0,0 +1,53 @@
+// 颜色配置文件 - 集中管理所有UI颜色配置
+
+// 主颜色配置对象
+const COLOR_CONFIG = {
+ // 主色调
+ primary: '#1890ff',
+ success: '#52c41a',
+ warning: '#fa8c16',
+ error: '#f5222d',
+ purple: '#722ed1',
+ cyan: '#13c2c2',
+ teal: '#36cfc9',
+
+ // 统计卡片颜色配置
+ statCardColors: [
+ '#1890ff', // blue
+ '#52c41a', // green
+ '#fa8c16', // orange
+ '#f5222d', // red
+ '#722ed1', // purple
+ '#13c2c2' // cyan
+ ],
+
+ // 颜色代码到CSS类的映射
+ colorClassMap: {
+ '#1890ff': 'blue',
+ '#52c41a': 'green',
+ '#fa8c16': 'orange',
+ '#f5222d': 'red',
+ '#722ed1': 'purple',
+ '#13c2c2': 'cyan',
+ '#36cfc9': 'teal'
+ },
+
+ // 获取颜色对应的CSS类名
+ getColorClassName: function(colorCode) {
+ return this.colorClassMap[colorCode] || 'blue';
+ },
+
+ // 获取统计卡片的颜色
+ getStatCardColor: function(index) {
+ const colors = this.statCardColors;
+ return colors[index % colors.length];
+ }
+};
+
+// 导出配置对象
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports = COLOR_CONFIG;
+} else {
+ // 浏览器环境
+ window.COLOR_CONFIG = COLOR_CONFIG;
+}
\ No newline at end of file
diff --git a/staticbak/static/js/config.js b/staticbak/static/js/config.js
new file mode 100644
index 0000000..020da0f
--- /dev/null
+++ b/staticbak/static/js/config.js
@@ -0,0 +1,296 @@
+// 配置管理页面功能实现
+
+// 工具函数:安全获取DOM元素
+function getElement(id) {
+ const element = document.getElementById(id);
+ if (!element) {
+ console.warn(`Element with id "${id}" not found`);
+ }
+ return element;
+}
+
+// 工具函数:验证端口号
+function validatePort(port) {
+ // 确保port是字符串类型
+ var portStr = port;
+ if (port === null || port === undefined || typeof port !== 'string') {
+ return null;
+ }
+
+ // 去除前后空白并验证是否为纯数字
+ portStr = port.trim();
+ if (!/^\d+$/.test(portStr)) {
+ return null;
+ }
+
+ const num = parseInt(portStr, 10);
+ return num >= 1 && num <= 65535 ? num : null;
+}
+
+// 初始化配置管理页面
+function initConfigPage() {
+ loadConfig();
+ setupConfigEventListeners();
+}
+
+// 加载系统配置
+async function loadConfig() {
+ try {
+ const result = await api.getConfig();
+
+ // 检查API返回的错误
+ if (result && result.error) {
+ showErrorMessage('加载配置失败: ' + result.error);
+ return;
+ }
+
+ populateConfigForm(result);
+ } catch (error) {
+ // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
+ showErrorMessage('加载配置失败: ' + (error.message || '未知错误'));
+ }
+}
+
+// 填充配置表单
+function populateConfigForm(config) {
+ // 安全获取配置对象,防止未定义属性访问
+ const dnsServerConfig = config.DNSServer || {};
+ const httpServerConfig = config.HTTPServer || {};
+ const shieldConfig = config.Shield || {};
+
+ // DNS配置 - 使用函数安全设置值,避免 || 操作符可能的错误处理
+ setElementValue('dns-port', getSafeValue(dnsServerConfig.Port, 53));
+ setElementValue('dns-upstream-servers', getSafeArray(dnsServerConfig.UpstreamServers).join(', '));
+ setElementValue('dns-dnssec-upstream-servers', getSafeArray(dnsServerConfig.DNSSECUpstreamServers).join(', '));
+ //setElementValue('dns-stats-file', getSafeValue(dnsServerConfig.StatsFile, 'data/stats.json'));
+ setElementValue('dns-save-interval', getSafeValue(dnsServerConfig.SaveInterval, 30));
+ //setElementValue('dns-cache-ttl', getSafeValue(dnsServerConfig.CacheTTL, 10));
+ setElementValue('dns-enable-ipv6', getSafeValue(dnsServerConfig.EnableIPv6, false));
+ // HTTP配置
+ setElementValue('http-port', getSafeValue(httpServerConfig.Port, 8080));
+ // 屏蔽配置
+ //setElementValue('shield-local-rules-file', getSafeValue(shieldConfig.LocalRulesFile, 'data/rules.txt'));
+ setElementValue('shield-update-interval', getSafeValue(shieldConfig.UpdateInterval, 3600));
+ //setElementValue('shield-hosts-file', getSafeValue(shieldConfig.HostsFile, 'data/hosts.txt'));
+ // 使用服务器端接受的屏蔽方法值,默认使用NXDOMAIN, 可选值: NXDOMAIN, NULL, REFUSED
+ setElementValue('shield-block-method', getSafeValue(shieldConfig.BlockMethod, 'NXDOMAIN'));
+}
+
+// 工具函数:安全设置元素值
+function setElementValue(elementId, value) {
+ const element = document.getElementById(elementId);
+ if (element && element.tagName === 'INPUT') {
+ if (element.type === 'checkbox') {
+ element.checked = value;
+ } else {
+ element.value = value;
+ }
+ } else if (!element) {
+ console.warn(`Element with id "${elementId}" not found for setting value: ${value}`);
+ }
+}
+
+// 工具函数:安全获取值,如果未定义或为null则返回默认值
+function getSafeValue(value, defaultValue) {
+ // 更严格的检查,避免0、空字符串等被默认值替换
+ return value === undefined || value === null ? defaultValue : value;
+}
+
+// 工具函数:安全获取数组,如果不是数组则返回空数组
+function getSafeArray(value) {
+ return Array.isArray(value) ? value : [];
+}
+
+// 保存配置
+async function handleSaveConfig() {
+ const formData = collectFormData();
+ if (!formData) return;
+
+ try {
+ const result = await api.saveConfig(formData);
+
+ // 检查API返回的错误
+ if (result && result.error) {
+ showErrorMessage('保存配置失败: ' + result.error);
+ return;
+ }
+
+ showSuccessMessage('配置保存成功');
+ } catch (error) {
+ // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
+ showErrorMessage('保存配置失败: ' + (error.message || '未知错误'));
+ }
+}
+
+// 重启服务
+async function handleRestartService() {
+ if (!confirm('确定要重启DNS服务吗?重启期间服务可能会短暂不可用。')) return;
+
+ try {
+ const result = await api.restartService();
+
+ // 检查API返回的错误
+ if (result && result.error) {
+ showErrorMessage('服务重启失败: ' + result.error);
+ return;
+ }
+
+ showSuccessMessage('服务重启成功');
+ } catch (error) {
+ // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
+ showErrorMessage('重启服务失败: ' + (error.message || '未知错误'));
+ }
+}
+
+// 收集表单数据并验证
+function collectFormData() {
+ // 验证端口号 - 使用安全获取元素值的函数
+ const dnsPortValue = getElementValue('dns-port');
+ const httpPortValue = getElementValue('http-port');
+
+ const dnsPort = validatePort(dnsPortValue);
+ const httpPort = validatePort(httpPortValue);
+
+ if (!dnsPort) {
+ showErrorMessage('DNS端口号无效(必须是1-65535之间的整数)');
+ return null;
+ }
+
+ if (!httpPort) {
+ showErrorMessage('HTTP端口号无效(必须是1-65535之间的整数)');
+ return null;
+ }
+
+ // 安全获取上游服务器列表
+ const upstreamServersText = getElementValue('dns-upstream-servers');
+ const upstreamServers = upstreamServersText ?
+ upstreamServersText.split(',').map(function(s) { return s.trim(); }).filter(function(s) { return s !== ''; }) :
+ [];
+
+ // 安全获取DNSSEC上游服务器列表
+ const dnssecUpstreamServersText = getElementValue('dns-dnssec-upstream-servers');
+ const dnssecUpstreamServers = dnssecUpstreamServersText ?
+ dnssecUpstreamServersText.split(',').map(function(s) { return s.trim(); }).filter(function(s) { return s !== ''; }) :
+ [];
+
+ // 安全获取并转换整数值
+ const timeoutValue = getElementValue('dns-timeout');
+ const timeout = timeoutValue ? parseInt(timeoutValue, 10) : 5;
+
+ const saveIntervalValue = getElementValue('dns-save-interval');
+ const saveInterval = saveIntervalValue ? parseInt(saveIntervalValue, 10) : 300;
+
+ const updateIntervalValue = getElementValue('shield-update-interval');
+ const updateInterval = updateIntervalValue ? parseInt(updateIntervalValue, 10) : 3600;
+
+ return {
+ dnsserver: {
+ port: dnsPort,
+ upstreamServers: upstreamServers,
+ dnssecUpstreamServers: dnssecUpstreamServers,
+ timeout: timeout,
+ saveInterval: saveInterval,
+ enableIPv6: getElementValue('dns-enable-ipv6')
+ },
+ httpserver: {
+ port: httpPort
+ },
+ shield: {
+ updateInterval: updateInterval,
+ blockMethod: getElementValue('shield-block-method') || 'NXDOMAIN'
+ }
+ };
+}
+
+// 工具函数:安全获取元素值
+function getElementValue(elementId) {
+ const element = document.getElementById(elementId);
+ if (element && element.tagName === 'INPUT') {
+ if (element.type === 'checkbox') {
+ return element.checked;
+ }
+ return element.value;
+ }
+ return ''; // 默认返回空字符串
+}
+
+// 设置事件监听器
+function setupConfigEventListeners() {
+ // 保存配置按钮
+ getElement('save-config-btn')?.addEventListener('click', handleSaveConfig);
+
+ // 重启服务按钮
+ getElement('restart-service-btn')?.addEventListener('click', handleRestartService);
+}
+
+
+
+// 显示成功消息
+function showSuccessMessage(message) {
+ showNotification(message, 'success');
+}
+
+// 显示错误消息
+function showErrorMessage(message) {
+ showNotification(message, 'error');
+}
+
+// 显示通知
+function showNotification(message, type = 'info') {
+ // 移除现有通知
+ const existingNotification = document.querySelector('.notification');
+ if (existingNotification) {
+ existingNotification.remove();
+ }
+
+ // 创建新通知
+ const notification = document.createElement('div');
+ notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-transform duration-300 ease-in-out translate-y-0 opacity-0`;
+
+ // 设置通知样式(兼容Tailwind和原生CSS)
+ notification.style.cssText += `
+ position: fixed;
+ bottom: 16px;
+ right: 16px;
+ padding: 16px 24px;
+ border-radius: 8px;
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
+ z-index: 1000;
+ transition: all 0.3s ease;
+ opacity: 0;
+ `;
+
+ if (type === 'success') {
+ notification.style.backgroundColor = '#10b981';
+ notification.style.color = 'white';
+ } else if (type === 'error') {
+ notification.style.backgroundColor = '#ef4444';
+ notification.style.color = 'white';
+ } else {
+ notification.style.backgroundColor = '#3b82f6';
+ notification.style.color = 'white';
+ }
+
+ notification.textContent = message;
+ document.body.appendChild(notification);
+
+ // 显示通知
+ setTimeout(() => {
+ notification.style.opacity = '1';
+ }, 10);
+
+ // 3秒后隐藏通知
+ setTimeout(() => {
+ notification.style.opacity = '0';
+ setTimeout(() => {
+ notification.remove();
+ }, 300);
+ }, 3000);
+}
+
+// 页面加载完成后初始化
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initConfigPage);
+} else {
+ initConfigPage();
+}
\ No newline at end of file
diff --git a/staticbak/static/js/dashboard.js b/staticbak/static/js/dashboard.js
new file mode 100644
index 0000000..7f55b28
--- /dev/null
+++ b/staticbak/static/js/dashboard.js
@@ -0,0 +1,3079 @@
+// dashboard.js - 仪表盘功能实现
+
+// 全局变量
+let ratioChart = null;
+let dnsRequestsChart = null;
+let detailedDnsRequestsChart = null; // 详细DNS请求趋势图表(浮窗)
+let queryTypeChart = null; // 解析类型统计饼图
+let intervalId = null;
+let dashboardWsConnection = null;
+let dashboardWsReconnectTimer = null;
+// 存储统计卡片图表实例
+let statCardCharts = {};
+// 存储统计卡片历史数据
+let statCardHistoryData = {};
+// 存储仪表盘历史数据,用于计算趋势
+window.dashboardHistoryData = window.dashboardHistoryData || {
+ prevResponseTime: null,
+ prevActiveIPs: null,
+ prevTopQueryTypeCount: null
+};
+
+// 引入颜色配置文件
+const COLOR_CONFIG = window.COLOR_CONFIG || {};
+
+// 初始化仪表盘
+async function initDashboard() {
+ try {
+ console.log('页面打开时强制刷新数据...');
+
+ // 优先加载初始数据,确保页面显示最新信息
+ await loadDashboardData();
+
+ // 初始化图表
+ initCharts();
+
+
+
+ // 初始化时间范围切换
+ initTimeRangeToggle();
+
+ // 建立WebSocket连接
+ connectWebSocket();
+
+ // 在页面卸载时清理资源
+ window.addEventListener('beforeunload', cleanupResources);
+ } catch (error) {
+ console.error('初始化仪表盘失败:', error);
+ showNotification('初始化失败: ' + error.message, 'error');
+ }
+}
+
+// 建立WebSocket连接
+function connectWebSocket() {
+ try {
+ // 构建WebSocket URL
+ const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
+ const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
+
+ console.log('正在连接WebSocket:', wsUrl);
+
+ // 创建WebSocket连接
+ dashboardWsConnection = new WebSocket(wsUrl);
+
+ // 连接打开事件
+ dashboardWsConnection.onopen = function() {
+ console.log('WebSocket连接已建立');
+ showNotification('数据更新成功', 'success');
+
+ // 清除重连计时器
+ if (dashboardWsReconnectTimer) {
+ clearTimeout(dashboardWsReconnectTimer);
+ dashboardWsReconnectTimer = null;
+ }
+ };
+
+ // 接收消息事件
+ dashboardWsConnection.onmessage = function(event) {
+ try {
+ const data = JSON.parse(event.data);
+
+ if (data.type === 'initial_data' || data.type === 'stats_update') {
+ console.log('收到实时数据更新');
+ processRealTimeData(data.data);
+ }
+ } catch (error) {
+ console.error('处理WebSocket消息失败:', error);
+ }
+ };
+
+ // 连接关闭事件
+ dashboardWsConnection.onclose = function(event) {
+ console.warn('WebSocket连接已关闭,代码:', event.code);
+ dashboardWsConnection = null;
+
+ // 设置重连
+ setupReconnect();
+ };
+
+ // 连接错误事件
+ dashboardWsConnection.onerror = function(error) {
+ console.error('WebSocket连接错误:', error);
+ };
+
+ } catch (error) {
+ console.error('创建WebSocket连接失败:', error);
+ // 如果WebSocket连接失败,回退到定时刷新
+ fallbackToIntervalRefresh();
+ }
+}
+
+// 设置重连逻辑
+function setupReconnect() {
+ if (dashboardWsReconnectTimer) {
+ return; // 已经有重连计时器在运行
+ }
+
+ const reconnectDelay = 5000; // 5秒后重连
+ console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
+
+ dashboardWsReconnectTimer = setTimeout(() => {
+ connectWebSocket();
+ }, reconnectDelay);
+}
+
+// 处理实时数据更新
+function processRealTimeData(stats) {
+ try {
+ // 更新统计卡片 - 这会更新所有统计卡片,包括CPU使用率卡片
+ updateStatsCards(stats);
+
+ // 获取查询类型统计数据
+ let queryTypeStats = null;
+ if (stats.dns && stats.dns.QueryTypes) {
+ queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
+ type,
+ count
+ }));
+ }
+
+ // 更新图表数据
+ updateCharts(stats, queryTypeStats);
+
+
+
+ // 尝试从stats中获取总查询数等信息
+ if (stats.dns) {
+ totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
+ blockedQueries = stats.dns.Blocked;
+ errorQueries = stats.dns.Errors || 0;
+ allowedQueries = stats.dns.Allowed;
+ } else {
+ totalQueries = stats.totalQueries || 0;
+ blockedQueries = stats.blockedQueries || 0;
+ errorQueries = stats.errorQueries || 0;
+ allowedQueries = stats.allowedQueries || 0;
+ }
+
+ // 更新新卡片数据
+ if (document.getElementById('avg-response-time')) {
+ const responseTime = stats.avgResponseTime ? stats.avgResponseTime.toFixed(2) + 'ms' : '---';
+
+ // 计算响应时间趋势
+ let responsePercent = '---';
+ let trendClass = 'text-gray-400';
+ let trendIcon = '---';
+
+ if (stats.avgResponseTime !== undefined && stats.avgResponseTime !== null) {
+ // 存储当前值用于下次计算趋势
+ const prevResponseTime = window.dashboardHistoryData.prevResponseTime || stats.avgResponseTime;
+ window.dashboardHistoryData.prevResponseTime = stats.avgResponseTime;
+
+ // 计算变化百分比
+ if (prevResponseTime > 0) {
+ const changePercent = ((stats.avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
+ responsePercent = Math.abs(changePercent).toFixed(1) + '%';
+
+ // 设置趋势图标和颜色
+ if (changePercent > 0) {
+ trendIcon = '↓';
+ trendClass = 'text-danger';
+ } else if (changePercent < 0) {
+ trendIcon = '↑';
+ trendClass = 'text-success';
+ } else {
+ trendIcon = '•';
+ trendClass = 'text-gray-500';
+ }
+ }
+ }
+
+ document.getElementById('avg-response-time').textContent = responseTime;
+ const responseTimePercentElem = document.getElementById('response-time-percent');
+ if (responseTimePercentElem) {
+ responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
+ responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
+ }
+ }
+
+ if (document.getElementById('top-query-type')) {
+ const queryType = stats.topQueryType || '---';
+ document.getElementById('top-query-type').textContent = queryType;
+
+ const queryPercentElem = document.getElementById('query-type-percentage');
+ if (queryPercentElem) {
+ // 计算查询类型趋势
+ let queryPercent = '---';
+ let trendClass = 'text-gray-400';
+ let trendIcon = '---';
+
+ if (stats.topQueryTypeCount !== undefined && stats.topQueryTypeCount !== null) {
+ // 存储当前值用于下次计算趋势
+ const prevTopQueryTypeCount = window.dashboardHistoryData.prevTopQueryTypeCount || stats.topQueryTypeCount;
+ window.dashboardHistoryData.prevTopQueryTypeCount = stats.topQueryTypeCount;
+
+ // 计算变化百分比
+ if (prevTopQueryTypeCount > 0) {
+ const changePercent = ((stats.topQueryTypeCount - prevTopQueryTypeCount) / prevTopQueryTypeCount) * 100;
+ queryPercent = Math.abs(changePercent).toFixed(1) + '%';
+
+ // 设置趋势图标和颜色
+ if (changePercent > 0) {
+ trendIcon = '↑';
+ trendClass = 'text-primary';
+ } else if (changePercent < 0) {
+ trendIcon = '↓';
+ trendClass = 'text-secondary';
+ } else {
+ trendIcon = '•';
+ trendClass = 'text-gray-500';
+ }
+ }
+ }
+
+ queryPercentElem.textContent = trendIcon + ' ' + queryPercent;
+ queryPercentElem.className = `text-sm flex items-center ${trendClass}`;
+ }
+ }
+
+ if (document.getElementById('active-ips')) {
+ const activeIPs = stats.activeIPs !== undefined ? formatNumber(stats.activeIPs) : '---';
+
+ // 计算活跃IP趋势
+ let ipsPercent = '---';
+ let trendClass = 'text-gray-400';
+ let trendIcon = '---';
+
+ if (stats.activeIPs !== undefined) {
+ const prevActiveIPs = window.dashboardHistoryData.prevActiveIPs || stats.activeIPs;
+ window.dashboardHistoryData.prevActiveIPs = stats.activeIPs;
+
+ if (prevActiveIPs > 0) {
+ const changePercent = ((stats.activeIPs - prevActiveIPs) / prevActiveIPs) * 100;
+ ipsPercent = Math.abs(changePercent).toFixed(1) + '%';
+
+ if (changePercent > 0) {
+ trendIcon = '↑';
+ trendClass = 'text-primary';
+ } else if (changePercent < 0) {
+ trendIcon = '↓';
+ trendClass = 'text-secondary';
+ } else {
+ trendIcon = '•';
+ trendClass = 'text-gray-500';
+ }
+ }
+ }
+
+ document.getElementById('active-ips').textContent = activeIPs;
+ const activeIpsPercentElem = document.getElementById('active-ips-percentage');
+ if (activeIpsPercentElem) {
+ activeIpsPercentElem.textContent = trendIcon + ' ' + ipsPercent;
+ activeIpsPercentElem.className = `text-sm flex items-center ${trendClass}`;
+ }
+ }
+
+ // 实时更新TOP客户端和TOP域名数据
+ updateTopData();
+
+ } catch (error) {
+ console.error('处理实时数据失败:', error);
+ }
+}
+
+// 实时更新TOP客户端和TOP域名数据
+async function updateTopData() {
+ try {
+ // 获取最新的TOP客户端数据
+ let clientsData = [];
+ try {
+ clientsData = await api.getTopClients();
+ } catch (error) {
+ console.error('获取TOP客户端数据失败:', error);
+ }
+
+ if (clientsData && !clientsData.error && Array.isArray(clientsData)) {
+ if (clientsData.length > 0) {
+ // 使用真实数据
+ updateTopClientsTable(clientsData);
+ // 隐藏错误信息
+ const errorElement = document.getElementById('top-clients-error');
+ if (errorElement) errorElement.classList.add('hidden');
+ } else {
+ // 数据为空,使用模拟数据
+ const mockClients = [
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' }
+ ];
+ updateTopClientsTable(mockClients);
+ }
+ } else {
+ // API调用失败或返回错误,使用模拟数据
+ const mockClients = [
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' },
+ { ip: '---.---.---.---', count: '---' }
+ ];
+ updateTopClientsTable(mockClients);
+ }
+
+ // 获取最新的TOP域名数据
+ let domainsData = [];
+ try {
+ domainsData = await api.getTopDomains();
+ } catch (error) {
+ console.error('获取TOP域名数据失败:', error);
+ }
+
+ if (domainsData && !domainsData.error && Array.isArray(domainsData)) {
+ if (domainsData.length > 0) {
+ // 使用真实数据
+ updateTopDomainsTable(domainsData);
+ // 隐藏错误信息
+ const errorElement = document.getElementById('top-domains-error');
+ if (errorElement) errorElement.classList.add('hidden');
+ } else {
+ // 数据为空,使用模拟数据
+ const mockDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ updateTopDomainsTable(mockDomains);
+ }
+ } else {
+ // API调用失败或返回错误,使用模拟数据
+ const mockDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ updateTopDomainsTable(mockDomains);
+ }
+ } catch (error) {
+ console.error('更新TOP数据失败:', error);
+ // 出错时使用模拟数据
+ const mockDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ updateTopDomainsTable(mockDomains);
+ }
+}
+
+// 回退到定时刷新
+function fallbackToIntervalRefresh() {
+ console.warn('回退到定时刷新模式');
+ showNotification('实时更新连接失败,已切换到定时刷新模式', 'warning');
+
+ // 如果已经有定时器,先清除
+ if (intervalId) {
+ clearInterval(intervalId);
+ }
+
+ // 设置新的定时器
+ intervalId = setInterval(async () => {
+ try {
+ await loadDashboardData();
+ } catch (error) {
+ console.error('定时刷新失败:', error);
+ }
+ }, 5000); // 每5秒更新一次
+}
+
+// 清理资源
+function cleanupResources() {
+ // 清除WebSocket连接
+ if (dashboardWsConnection) {
+ dashboardWsConnection.close();
+ dashboardWsConnection = null;
+ }
+
+ // 清除重连计时器
+ if (dashboardWsReconnectTimer) {
+ clearTimeout(dashboardWsReconnectTimer);
+ dashboardWsReconnectTimer = null;
+ }
+
+ // 清除定时刷新
+ if (intervalId) {
+ clearInterval(intervalId);
+ intervalId = null;
+ }
+}
+
+// 加载仪表盘数据
+async function loadDashboardData() {
+ console.log('开始加载仪表盘数据');
+ try {
+ // 获取基本统计数据
+ const stats = await api.getStats();
+ console.log('统计数据:', stats);
+
+ // 获取查询类型统计数据
+ let queryTypeStats = null;
+ try {
+ queryTypeStats = await api.getQueryTypeStats();
+ console.log('查询类型统计数据:', queryTypeStats);
+ } catch (error) {
+ console.warn('获取查询类型统计失败:', error);
+ // 如果API调用失败,尝试从stats中提取查询类型数据
+ if (stats && stats.dns && stats.dns.QueryTypes) {
+ queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
+ type,
+ count
+ }));
+ console.log('从stats中提取的查询类型统计:', queryTypeStats);
+ }
+ }
+
+ // 尝试获取TOP被屏蔽域名,如果失败则提供模拟数据
+ let topBlockedDomains = [];
+ try {
+ topBlockedDomains = await api.getTopBlockedDomains();
+ console.log('TOP被屏蔽域名:', topBlockedDomains);
+
+ // 确保返回的数据是数组
+ if (!Array.isArray(topBlockedDomains)) {
+ console.warn('TOP被屏蔽域名不是预期的数组格式,使用模拟数据');
+ topBlockedDomains = [];
+ }
+ } catch (error) {
+ console.warn('获取TOP被屏蔽域名失败:', error);
+ // 提供模拟数据
+ topBlockedDomains = [
+ { domain: 'example-blocked.com', count: 15, lastSeen: new Date().toISOString() },
+ { domain: 'ads.example.org', count: 12, lastSeen: new Date().toISOString() },
+ { domain: 'tracking.example.net', count: 8, lastSeen: new Date().toISOString() }
+ ];
+ }
+
+ // 尝试获取最近屏蔽域名,如果失败则提供模拟数据
+ let recentBlockedDomains = [];
+ try {
+ recentBlockedDomains = await api.getRecentBlockedDomains();
+ console.log('最近屏蔽域名:', recentBlockedDomains);
+
+ // 确保返回的数据是数组
+ if (!Array.isArray(recentBlockedDomains)) {
+ console.warn('最近屏蔽域名不是预期的数组格式,使用模拟数据');
+ recentBlockedDomains = [];
+ }
+ } catch (error) {
+ console.warn('获取最近屏蔽域名失败:', error);
+ // 提供模拟数据
+ recentBlockedDomains = [
+ { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() },
+ { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() }
+ ];
+ }
+
+
+
+ function showError(elementId) {
+ const loadingElement = document.getElementById(elementId + '-loading');
+ const errorElement = document.getElementById(elementId + '-error');
+ if (loadingElement) loadingElement.classList.add('hidden');
+ if (errorElement) errorElement.classList.remove('hidden');
+ }
+
+ // 尝试获取TOP客户端,优先使用真实数据,失败时使用模拟数据
+ let topClients = [];
+ try {
+ const clientsData = await api.getTopClients();
+ console.log('TOP客户端:', clientsData);
+
+ // 检查数据是否有效
+ if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
+ // 使用真实数据
+ topClients = clientsData;
+ } else if (clientsData && clientsData.error) {
+ // API返回错误
+ console.warn('获取TOP客户端失败:', clientsData.error);
+ // 使用模拟数据
+ topClients = [
+ { ip: '192.168.1.100', count: 120 },
+ { ip: '192.168.1.101', count: 95 },
+ { ip: '192.168.1.102', count: 80 },
+ { ip: '192.168.1.103', count: 65 },
+ { ip: '192.168.1.104', count: 50 }
+ ];
+ showError('top-clients');
+ } else {
+ // 数据为空或格式不正确
+ console.warn('TOP客户端数据为空或格式不正确,使用模拟数据');
+ // 使用模拟数据
+ topClients = [
+ { ip: '192.168.1.100', count: 120 },
+ { ip: '192.168.1.101', count: 95 },
+ { ip: '192.168.1.102', count: 80 },
+ { ip: '192.168.1.103', count: 65 },
+ { ip: '192.168.1.104', count: 50 }
+ ];
+ showError('top-clients');
+ }
+ } catch (error) {
+ console.warn('获取TOP客户端失败:', error);
+ // 使用模拟数据
+ topClients = [
+ { ip: '192.168.1.100', count: 120 },
+ { ip: '192.168.1.101', count: 95 },
+ { ip: '192.168.1.102', count: 80 },
+ { ip: '192.168.1.103', count: 65 },
+ { ip: '192.168.1.104', count: 50 }
+ ];
+ showError('top-clients');
+ }
+
+ // 尝试获取TOP域名,优先使用真实数据,失败时使用模拟数据
+ let topDomains = [];
+ try {
+ const domainsData = await api.getTopDomains();
+ console.log('TOP域名:', domainsData);
+
+ // 检查数据是否有效
+ if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
+ // 使用真实数据
+ topDomains = domainsData;
+ } else if (domainsData && domainsData.error) {
+ // API返回错误
+ console.warn('获取TOP域名失败:', domainsData.error);
+ // 使用模拟数据
+ topDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ showError('top-domains');
+ } else {
+ // 数据为空或格式不正确
+ console.warn('TOP域名数据为空或格式不正确,使用模拟数据');
+ // 使用模拟数据
+ topDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ showError('top-domains');
+ }
+ } catch (error) {
+ console.warn('获取TOP域名失败:', error);
+ // 使用模拟数据
+ topDomains = [
+ { domain: 'example.com', count: 50 },
+ { domain: 'google.com', count: 45 },
+ { domain: 'facebook.com', count: 40 },
+ { domain: 'twitter.com', count: 35 },
+ { domain: 'youtube.com', count: 30 }
+ ];
+ showError('top-domains');
+ }
+
+ // 更新统计卡片
+ updateStatsCards(stats);
+
+ // 更新图表数据,传入查询类型统计
+ updateCharts(stats, queryTypeStats);
+
+ // 更新表格数据
+ updateTopBlockedTable(topBlockedDomains);
+ updateRecentBlockedTable(recentBlockedDomains);
+ updateTopClientsTable(topClients);
+ updateTopDomainsTable(topDomains);
+
+ // 尝试从stats中获取总查询数等信息
+ if (stats.dns) {
+ totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
+ blockedQueries = stats.dns.Blocked;
+ errorQueries = stats.dns.Errors || 0;
+ allowedQueries = stats.dns.Allowed;
+ } else {
+ totalQueries = stats.totalQueries || 0;
+ blockedQueries = stats.blockedQueries || 0;
+ errorQueries = stats.errorQueries || 0;
+ allowedQueries = stats.allowedQueries || 0;
+ }
+
+ // 全局历史数据对象,用于存储趋势计算所需的上一次值
+ window.dashboardHistoryData = window.dashboardHistoryData || {};
+
+ // 更新新卡片数据 - 使用API返回的真实数据
+ if (document.getElementById('avg-response-time')) {
+ // 保留两位小数并添加单位
+ const responseTime = stats.avgResponseTime ? stats.avgResponseTime.toFixed(2) + 'ms' : '---';
+
+ // 计算响应时间趋势
+ let responsePercent = '---';
+ let trendClass = 'text-gray-400';
+ let trendIcon = '---';
+
+ if (stats.avgResponseTime !== undefined && stats.avgResponseTime !== null) {
+ // 存储当前值用于下次计算趋势
+ const prevResponseTime = window.dashboardHistoryData.prevResponseTime || stats.avgResponseTime;
+ window.dashboardHistoryData.prevResponseTime = stats.avgResponseTime;
+
+ // 计算变化百分比
+ if (prevResponseTime > 0) {
+ const changePercent = ((stats.avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
+ responsePercent = Math.abs(changePercent).toFixed(1) + '%';
+
+ // 设置趋势图标和颜色(响应时间增加是负面的,减少是正面的)
+ if (changePercent > 0) {
+ trendIcon = '↓';
+ trendClass = 'text-danger';
+ } else if (changePercent < 0) {
+ trendIcon = '↑';
+ trendClass = 'text-success';
+ } else {
+ trendIcon = '•';
+ trendClass = 'text-gray-500';
+ }
+ }
+ }
+
+ document.getElementById('avg-response-time').textContent = responseTime;
+ const responseTimePercentElem = document.getElementById('response-time-percent');
+ if (responseTimePercentElem) {
+ responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
+ responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
+ }
+ }
+
+ if (document.getElementById('top-query-type')) {
+ // 直接使用API返回的查询类型
+ const queryType = stats.topQueryType || '---';
+
+ // 设置默认趋势显示
+ const queryPercentElem = document.getElementById('query-type-percentage');
+ if (queryPercentElem) {
+ queryPercentElem.textContent = '• ---';
+ queryPercentElem.className = 'text-sm flex items-center text-gray-500';
+ }
+
+ document.getElementById('top-query-type').textContent = queryType;
+ }
+
+ if (document.getElementById('active-ips')) {
+ // 直接使用API返回的活跃IP数
+ const activeIPs = stats.activeIPs !== undefined ? formatNumber(stats.activeIPs) : '---';
+
+ // 计算活跃IP趋势
+ let ipsPercent = '---';
+ let trendClass = 'text-gray-400';
+ let trendIcon = '---';
+
+ if (stats.activeIPs !== undefined && stats.activeIPs !== null) {
+ // 存储当前值用于下次计算趋势
+ const prevActiveIPs = window.dashboardHistoryData.prevActiveIPs || stats.activeIPs;
+ window.dashboardHistoryData.prevActiveIPs = stats.activeIPs;
+
+ // 计算变化百分比
+ if (prevActiveIPs > 0) {
+ const changePercent = ((stats.activeIPs - prevActiveIPs) / prevActiveIPs) * 100;
+ ipsPercent = Math.abs(changePercent).toFixed(1) + '%';
+
+ // 设置趋势图标和颜色
+ if (changePercent > 0) {
+ trendIcon = '↑';
+ trendClass = 'text-success';
+ } else if (changePercent < 0) {
+ trendIcon = '↓';
+ trendClass = 'text-danger';
+ } else {
+ trendIcon = '•';
+ trendClass = 'text-gray-500';
+ }
+ }
+ }
+
+ document.getElementById('active-ips').textContent = activeIPs;
+ const activeIpsPercentElem = document.getElementById('active-ips-percent');
+ if (activeIpsPercentElem) {
+ activeIpsPercentElem.textContent = trendIcon + ' ' + ipsPercent;
+ activeIpsPercentElem.className = `text-sm flex items-center ${trendClass}`;
+ }
+ }
+
+ // 更新图表
+ updateCharts({totalQueries, blockedQueries, allowedQueries, errorQueries});
+
+ // 确保响应时间图表使用API实时数据
+ if (document.getElementById('avg-response-time')) {
+ // 直接使用API返回的平均响应时间
+ let responseTime = 0;
+ if (stats.dns && stats.dns.AvgResponseTime) {
+ responseTime = stats.dns.AvgResponseTime;
+ } else if (stats.avgResponseTime !== undefined) {
+ responseTime = stats.avgResponseTime;
+ } else if (stats.responseTime) {
+ responseTime = stats.responseTime;
+ }
+
+ if (responseTime > 0 && statCardCharts['response-time-chart']) {
+ // 限制小数位数为两位并更新图表
+ updateChartData('response-time-chart', parseFloat(responseTime).toFixed(2));
+ }
+ }
+
+ // 更新运行状态
+ updateUptime();
+
+ // 确保TOP域名数据被正确加载
+ updateTopData();
+ } catch (error) {
+ console.error('加载仪表盘数据失败:', error);
+ // 静默失败,不显示通知以免打扰用户
+ }
+}
+
+// 更新统计卡片
+function updateStatsCards(stats) {
+ console.log('更新统计卡片,收到数据:', stats);
+
+ // 适配不同的数据结构
+ let totalQueries = 0, blockedQueries = 0, allowedQueries = 0, errorQueries = 0;
+ let topQueryType = 'A', queryTypePercentage = 0;
+ let activeIPs = 0, activeIPsPercentage = 0;
+
+ // 检查数据结构,兼容可能的不同格式
+ if (stats) {
+ // 优先使用顶层字段
+ totalQueries = stats.totalQueries || 0;
+ blockedQueries = stats.blockedQueries || 0;
+ allowedQueries = stats.allowedQueries || 0;
+ errorQueries = stats.errorQueries || 0;
+ topQueryType = stats.topQueryType || 'A';
+ queryTypePercentage = stats.queryTypePercentage || 0;
+ activeIPs = stats.activeIPs || 0;
+ activeIPsPercentage = stats.activeIPsPercentage || 0;
+
+
+ // 如果dns对象存在,优先使用其中的数据
+ if (stats.dns) {
+ totalQueries = stats.dns.Queries || totalQueries;
+ blockedQueries = stats.dns.Blocked || blockedQueries;
+ allowedQueries = stats.dns.Allowed || allowedQueries;
+ errorQueries = stats.dns.Errors || errorQueries;
+
+ // 计算最常用查询类型的百分比
+ if (stats.dns.QueryTypes && stats.dns.Queries > 0) {
+ const topTypeCount = stats.dns.QueryTypes[topQueryType] || 0;
+ queryTypePercentage = (topTypeCount / stats.dns.Queries) * 100;
+ }
+
+ // 计算活跃IP百分比(基于已有的活跃IP数)
+ if (activeIPs > 0 && stats.dns.SourceIPs) {
+ activeIPsPercentage = activeIPs / Object.keys(stats.dns.SourceIPs).length * 100;
+ }
+ }
+ } else if (Array.isArray(stats) && stats.length > 0) {
+ // 可能的数据结构3: 数组形式
+ totalQueries = stats[0].total || 0;
+ blockedQueries = stats[0].blocked || 0;
+ allowedQueries = stats[0].allowed || 0;
+ errorQueries = stats[0].error || 0;
+ topQueryType = stats[0].topQueryType || 'A';
+ queryTypePercentage = stats[0].queryTypePercentage || 0;
+ activeIPs = stats[0].activeIPs || 0;
+ activeIPsPercentage = stats[0].activeIPsPercentage || 0;
+ }
+
+ // 存储正在进行的动画状态,避免动画重叠
+ const animationInProgress = {};
+
+ // 为数字元素添加翻页滚动特效
+ function animateValue(elementId, newValue) {
+ const element = document.getElementById(elementId);
+ if (!element) return;
+
+ // 如果该元素正在进行动画,取消当前动画并立即更新值
+ if (animationInProgress[elementId]) {
+ // 清除之前可能设置的定时器
+ clearTimeout(animationInProgress[elementId].timeout1);
+ clearTimeout(animationInProgress[elementId].timeout2);
+ clearTimeout(animationInProgress[elementId].timeout3);
+
+ // 立即设置新值,避免显示错乱
+ const formattedNewValue = formatNumber(newValue);
+ element.innerHTML = formattedNewValue;
+ return;
+ }
+
+ const oldValue = parseInt(element.textContent.replace(/,/g, '')) || 0;
+ const formattedNewValue = formatNumber(newValue);
+
+ // 如果值没有变化,不执行动画
+ if (oldValue === newValue && element.textContent === formattedNewValue) {
+ return;
+ }
+
+ // 先移除可能存在的光晕效果类
+ element.classList.remove('number-glow', 'number-glow-blue', 'number-glow-red', 'number-glow-green', 'number-glow-yellow');
+ element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
+
+ // 保存原始样式
+ const originalStyle = element.getAttribute('style') || '';
+
+ try {
+ // 复制原始元素的样式到新元素,确保大小完全一致
+ const computedStyle = getComputedStyle(element);
+
+ // 配置翻页容器样式,确保与原始元素大小完全一致
+ const containerStyle =
+ 'position: relative; ' +
+ 'display: ' + computedStyle.display + '; ' +
+ 'overflow: hidden; ' +
+ 'height: ' + element.offsetHeight + 'px; ' +
+ 'width: ' + element.offsetWidth + 'px; ' +
+ 'margin: ' + computedStyle.margin + '; ' +
+ 'padding: ' + computedStyle.padding + '; ' +
+ 'box-sizing: ' + computedStyle.boxSizing + '; ' +
+ 'line-height: ' + computedStyle.lineHeight + ';';
+
+ // 创建翻页容器
+ const flipContainer = document.createElement('div');
+ flipContainer.style.cssText = containerStyle;
+ flipContainer.className = 'number-flip-container';
+
+ // 创建旧值元素
+ const oldValueElement = document.createElement('div');
+ oldValueElement.textContent = element.textContent;
+ oldValueElement.style.cssText =
+ 'position: absolute; ' +
+ 'top: 0; ' +
+ 'left: 0; ' +
+ 'width: 100%; ' +
+ 'height: 100%; ' +
+ 'display: flex; ' +
+ 'align-items: center; ' +
+ 'justify-content: center; ' +
+ 'transition: transform 400ms ease-in-out; ' +
+ 'transform-origin: center;';
+
+ // 创建新值元素
+ const newValueElement = document.createElement('div');
+ newValueElement.textContent = formattedNewValue;
+ newValueElement.style.cssText =
+ 'position: absolute; ' +
+ 'top: 0; ' +
+ 'left: 0; ' +
+ 'width: 100%; ' +
+ 'height: 100%; ' +
+ 'display: flex; ' +
+ 'align-items: center; ' +
+ 'justify-content: center; ' +
+ 'transition: transform 400ms ease-in-out; ' +
+ 'transform-origin: center; ' +
+ 'transform: translateY(100%);';
+ [oldValueElement, newValueElement].forEach(el => {
+ el.style.fontSize = computedStyle.fontSize;
+ el.style.fontWeight = computedStyle.fontWeight;
+ el.style.color = computedStyle.color;
+ el.style.fontFamily = computedStyle.fontFamily;
+ el.style.textAlign = computedStyle.textAlign;
+ el.style.lineHeight = computedStyle.lineHeight;
+ el.style.width = '100%';
+ el.style.height = '100%';
+ el.style.margin = '0';
+ el.style.padding = '0';
+ el.style.boxSizing = 'border-box';
+ el.style.whiteSpace = computedStyle.whiteSpace;
+ el.style.overflow = 'hidden';
+ el.style.textOverflow = 'ellipsis';
+ // 确保垂直对齐正确
+ el.style.verticalAlign = 'middle';
+ });
+
+ // 替换原始元素的内容
+ element.textContent = '';
+ flipContainer.appendChild(oldValueElement);
+ flipContainer.appendChild(newValueElement);
+ element.appendChild(flipContainer);
+
+ // 标记该元素正在进行动画
+ animationInProgress[elementId] = {};
+
+ // 启动翻页动画
+ animationInProgress[elementId].timeout1 = setTimeout(() => {
+ if (oldValueElement && newValueElement) {
+ oldValueElement.style.transform = 'translateY(-100%)';
+ newValueElement.style.transform = 'translateY(0)';
+ }
+ }, 50);
+
+ // 动画结束后,恢复原始元素
+ animationInProgress[elementId].timeout2 = setTimeout(() => {
+ try {
+ // 清理并设置最终值
+ element.innerHTML = formattedNewValue;
+ if (originalStyle) {
+ element.setAttribute('style', originalStyle);
+ } else {
+ element.removeAttribute('style');
+ }
+
+ // 添加当前卡片颜色的深色光晕效果
+ const card = element.closest('.stat-card, .bg-blue-50, .bg-red-50, .bg-green-50, .bg-yellow-50');
+ let glowColorClass = '';
+
+ if (card) {
+ if (card.classList.contains('bg-blue-50') || card.id.includes('total') || card.id.includes('response')) {
+ glowColorClass = 'number-glow-dark-blue';
+ } else if (card.classList.contains('bg-red-50') || card.id.includes('blocked')) {
+ glowColorClass = 'number-glow-dark-red';
+ } else if (card.classList.contains('bg-green-50') || card.id.includes('allowed') || card.id.includes('active')) {
+ glowColorClass = 'number-glow-dark-green';
+ } else if (card.classList.contains('bg-yellow-50') || card.id.includes('error') || card.id.includes('cpu')) {
+ glowColorClass = 'number-glow-dark-yellow';
+ }
+ }
+
+ if (glowColorClass) {
+ element.classList.add(glowColorClass);
+
+ // 2秒后移除光晕效果
+ animationInProgress[elementId].timeout3 = setTimeout(() => {
+ element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
+ }, 2000);
+ }
+ } catch (e) {
+ console.error('更新元素失败:', e);
+ } finally {
+ // 清除动画状态标记
+ delete animationInProgress[elementId];
+ }
+ }, 450);
+ } catch (e) {
+ console.error('创建动画失败:', e);
+ // 出错时直接设置值
+ element.innerHTML = formattedNewValue;
+ if (originalStyle) {
+ element.setAttribute('style', originalStyle);
+ } else {
+ element.removeAttribute('style');
+ }
+ // 清除动画状态标记
+ delete animationInProgress[elementId];
+ }
+ }
+
+ // 更新百分比元素的函数
+ function updatePercentage(elementId, value) {
+ const element = document.getElementById(elementId);
+ if (!element) return;
+
+ // 检查是否有正在进行的动画
+ if (animationInProgress[elementId + '_percent']) {
+ clearTimeout(animationInProgress[elementId + '_percent']);
+ }
+
+ try {
+ element.style.opacity = '0';
+ element.style.transition = 'opacity 200ms ease-out';
+
+ // 保存定时器ID,便于后续可能的取消
+ animationInProgress[elementId + '_percent'] = setTimeout(() => {
+ try {
+ element.textContent = value;
+ element.style.opacity = '1';
+ } catch (e) {
+ console.error('更新百分比元素失败:', e);
+ } finally {
+ // 清除动画状态标记
+ delete animationInProgress[elementId + '_percent'];
+ }
+ }, 200);
+ } catch (e) {
+ console.error('设置百分比动画失败:', e);
+ // 出错时直接设置值
+ try {
+ element.textContent = value;
+ element.style.opacity = '1';
+ } catch (e2) {
+ console.error('直接更新百分比元素也失败:', e2);
+ }
+ }
+ }
+
+ // 平滑更新数量显示
+ animateValue('total-queries', totalQueries);
+ animateValue('blocked-queries', blockedQueries);
+ animateValue('allowed-queries', allowedQueries);
+ animateValue('error-queries', errorQueries);
+ animateValue('active-ips', activeIPs);
+
+ // DNSSEC相关数据
+ let dnssecEnabled = false, dnssecQueries = 0, dnssecSuccess = 0, dnssecFailed = 0, dnssecUsage = 0;
+
+ // 检查DNSSEC数据
+ if (stats) {
+ // 优先使用顶层字段
+ dnssecEnabled = stats.dnssecEnabled || false;
+ dnssecQueries = stats.dnssecQueries || 0;
+ dnssecSuccess = stats.dnssecSuccess || 0;
+ dnssecFailed = stats.dnssecFailed || 0;
+ dnssecUsage = stats.dnssecUsage || 0;
+
+ // 如果dns对象存在,优先使用其中的数据
+ if (stats.dns) {
+ dnssecEnabled = stats.dns.DNSSECEnabled || dnssecEnabled;
+ dnssecQueries = stats.dns.DNSSECQueries || dnssecQueries;
+ dnssecSuccess = stats.dns.DNSSECSuccess || dnssecSuccess;
+ dnssecFailed = stats.dns.DNSSECFailed || dnssecFailed;
+ }
+
+ // 如果没有直接提供使用率,计算使用率
+ if (dnssecUsage === 0 && totalQueries > 0) {
+ dnssecUsage = (dnssecQueries / totalQueries) * 100;
+ }
+ }
+
+ // 更新DNSSEC统计卡片
+ const dnssecUsageElement = document.getElementById('dnssec-usage');
+ const dnssecStatusElement = document.getElementById('dnssec-status');
+ const dnssecSuccessElement = document.getElementById('dnssec-success');
+ const dnssecFailedElement = document.getElementById('dnssec-failed');
+ const dnssecQueriesElement = document.getElementById('dnssec-queries');
+
+ if (dnssecUsageElement) {
+ dnssecUsageElement.textContent = `${Math.round(dnssecUsage)}%`;
+ }
+
+ if (dnssecStatusElement) {
+ dnssecStatusElement.textContent = dnssecEnabled ? '已启用' : '已禁用';
+ dnssecStatusElement.className = `text-sm flex items-center ${dnssecEnabled ? 'text-success' : 'text-danger'}`;
+ }
+
+ if (dnssecSuccessElement) {
+ dnssecSuccessElement.textContent = formatNumber(dnssecSuccess);
+ }
+
+ if (dnssecFailedElement) {
+ dnssecFailedElement.textContent = formatNumber(dnssecFailed);
+ }
+
+ if (dnssecQueriesElement) {
+ dnssecQueriesElement.textContent = formatNumber(dnssecQueries);
+ }
+
+ // 直接更新文本和百分比,移除动画效果
+ const topQueryTypeElement = document.getElementById('top-query-type');
+ const queryTypePercentageElement = document.getElementById('query-type-percentage');
+ const activeIpsPercentElement = document.getElementById('active-ips-percent');
+
+ if (topQueryTypeElement) topQueryTypeElement.textContent = topQueryType;
+ if (queryTypePercentageElement) queryTypePercentageElement.textContent = `${Math.round(queryTypePercentage)}%`;
+ if (activeIpsPercentElement) activeIpsPercentElement.textContent = `${Math.round(activeIPsPercentage)}%`;
+
+ // 计算并平滑更新百分比
+ if (totalQueries > 0) {
+ updatePercentage('blocked-percent', `${Math.round((blockedQueries / totalQueries) * 100)}%`);
+ updatePercentage('allowed-percent', `${Math.round((allowedQueries / totalQueries) * 100)}%`);
+ updatePercentage('error-percent', `${Math.round((errorQueries / totalQueries) * 100)}%`);
+ updatePercentage('queries-percent', '100%');
+ } else {
+ updatePercentage('queries-percent', '---');
+ updatePercentage('blocked-percent', '---');
+ updatePercentage('allowed-percent', '---');
+ updatePercentage('error-percent', '---');
+ }
+
+
+}
+
+// 更新Top屏蔽域名表格
+function updateTopBlockedTable(domains) {
+ console.log('更新Top屏蔽域名表格,收到数据:', domains);
+ const tableBody = document.getElementById('top-blocked-table');
+
+ let tableData = [];
+
+ // 适配不同的数据结构
+ if (Array.isArray(domains)) {
+ tableData = domains.map(item => ({
+ name: item.name || item.domain || item[0] || '未知',
+ count: item.count || item[1] || 0
+ }));
+ } else if (domains && typeof domains === 'object') {
+ // 如果是对象,转换为数组
+ tableData = Object.entries(domains).map(([domain, count]) => ({
+ name: domain,
+ count: count || 0
+ }));
+ }
+
+ // 如果没有有效数据,提供示例数据
+ if (tableData.length === 0) {
+ tableData = [
+ { name: '---.---.---', count: '---' },
+ { name: '---.---.---', count: '---' },
+ { name: '---.---.---', count: '---' }
+ ];
+ console.log('使用示例数据填充Top屏蔽域名表格');
+ }
+
+ let html = '';
+ for (let i = 0; i < tableData.length && i < 5; i++) {
+ const domain = tableData[i];
+ html += `
+
+ `;
+ }
+
+ tableBody.innerHTML = html;
+}
+
+// 更新最近屏蔽域名表格
+function updateRecentBlockedTable(domains) {
+ console.log('更新最近屏蔽域名表格,收到数据:', domains);
+ const tableBody = document.getElementById('recent-blocked-table');
+
+ // 确保tableBody存在,因为最近屏蔽域名卡片可能已被移除
+ if (!tableBody) {
+ console.log('未找到recent-blocked-table元素,跳过更新');
+ return;
+ }
+
+ let tableData = [];
+
+ // 适配不同的数据结构
+ if (Array.isArray(domains)) {
+ tableData = domains.map(item => ({
+ name: item.name || item.domain || item[0] || '未知',
+ timestamp: item.timestamp || item.time || Date.now(),
+ type: item.type || '广告'
+ }));
+ }
+
+ // 如果没有有效数据,提供示例数据
+ if (tableData.length === 0) {
+ const now = Date.now();
+ tableData = [
+ { name: '---.---.---', timestamp: now - 5 * 60 * 1000, type: '广告' },
+ { name: '---.---.---', timestamp: now - 15 * 60 * 1000, type: '恶意' },
+ { name: '---.---.---', timestamp: now - 30 * 60 * 1000, type: '广告' },
+ { name: '---.---.---', timestamp: now - 45 * 60 * 1000, type: '追踪' },
+ { name: '---.---.---', timestamp: now - 60 * 60 * 1000, type: '恶意' }
+ ];
+ console.log('使用示例数据填充最近屏蔽域名表格');
+ }
+
+ let html = '';
+ for (let i = 0; i < tableData.length && i < 5; i++) {
+ const domain = tableData[i];
+ const time = formatTime(domain.timestamp);
+ html += `
+
+ `;
+ }
+
+ tableBody.innerHTML = html;
+}
+
+// 更新TOP客户端表格
+function updateTopClientsTable(clients) {
+ console.log('更新TOP客户端表格,收到数据:', clients);
+ const tableBody = document.getElementById('top-clients-table');
+
+ // 确保tableBody存在
+ if (!tableBody) {
+ console.error('未找到top-clients-table元素');
+ return;
+ }
+
+ let tableData = [];
+
+ // 适配不同的数据结构
+ if (Array.isArray(clients)) {
+ tableData = clients.map(item => ({
+ ip: item.ip || item[0] || '未知',
+ count: item.count || item[1] || 0
+ }));
+ } else if (clients && typeof clients === 'object') {
+ // 如果是对象,转换为数组
+ tableData = Object.entries(clients).map(([ip, count]) => ({
+ ip,
+ count: count || 0
+ }));
+ }
+
+ // 如果没有有效数据,提供示例数据
+ if (tableData.length === 0) {
+ tableData = [
+ { ip: '---.---.---', count: '---' },
+ { ip: '---.---.---', count: '---' },
+ { ip: '---.---.---', count: '---' },
+ { ip: '---.---.---', count: '---' },
+ { ip: '---.---.---', count: '---' }
+ ];
+ console.log('使用示例数据填充TOP客户端表格');
+ }
+
+ // 只显示前5个客户端
+ tableData = tableData.slice(0, 5);
+
+ let html = '';
+ for (let i = 0; i < tableData.length; i++) {
+ const client = tableData[i];
+ html += `
+
+ `;
+ }
+
+ tableBody.innerHTML = html;
+}
+
+// 更新请求域名排行表格
+function updateTopDomainsTable(domains) {
+ console.log('更新请求域名排行表格,收到数据:', domains);
+ const tableBody = document.getElementById('top-domains-table');
+
+ // 确保tableBody存在
+ if (!tableBody) {
+ console.error('未找到top-domains-table元素');
+ return;
+ }
+
+ let tableData = [];
+
+ // 适配不同的数据结构
+ if (Array.isArray(domains)) {
+ tableData = domains.map(item => ({
+ name: item.domain || item.name || item[0] || '未知',
+ count: item.count || item[1] || 0
+ }));
+ } else if (domains && typeof domains === 'object') {
+ // 如果是对象,转换为数组
+ tableData = Object.entries(domains).map(([domain, count]) => ({
+ name: domain,
+ count: count || 0
+ }));
+ }
+
+ // 如果没有有效数据,提供示例数据
+ if (tableData.length === 0) {
+ tableData = [
+ { name: 'example.com', count: 50 },
+ { name: 'google.com', count: 45 },
+ { name: 'facebook.com', count: 40 },
+ { name: 'twitter.com', count: 35 },
+ { name: 'youtube.com', count: 30 }
+ ];
+ console.log('使用示例数据填充请求域名排行表格');
+ }
+
+ // 只显示前5个域名
+ tableData = tableData.slice(0, 5);
+
+ let html = '';
+ for (let i = 0; i < tableData.length; i++) {
+ const domain = tableData[i];
+ html += `
+
+ `;
+ }
+
+ tableBody.innerHTML = html;
+}
+
+// 当前选中的时间范围
+let currentTimeRange = '24h'; // 默认为24小时
+let isMixedView = true; // 是否为混合视图 - 默认显示混合视图
+let lastSelectedIndex = 0; // 最后选中的按钮索引
+
+// 详细图表专用变量
+let detailedCurrentTimeRange = '24h'; // 详细图表当前时间范围
+let detailedIsMixedView = false; // 详细图表是否为混合视图
+
+// 初始化时间范围切换
+function initTimeRangeToggle() {
+ console.log('初始化时间范围切换');
+ // 查找所有可能的时间范围按钮类名
+ const timeRangeButtons = document.querySelectorAll('.time-range-btn, .time-range-button, .timerange-btn, button[data-range]');
+ console.log('找到时间范围按钮数量:', timeRangeButtons.length);
+
+ if (timeRangeButtons.length === 0) {
+ console.warn('未找到时间范围按钮,请检查HTML中的类名');
+ return;
+ }
+
+ // 定义三个按钮的不同样式配置,增加activeHover属性
+ const buttonStyles = [
+ { // 24小时按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-blue-100'],
+ active: ['bg-blue-500', 'text-white'],
+ activeHover: ['hover:bg-blue-400'] // 选中时的浅色悬停
+ },
+ { // 7天按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-green-100'],
+ active: ['bg-green-500', 'text-white'],
+ activeHover: ['hover:bg-green-400'] // 选中时的浅色悬停
+ },
+ { // 30天按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-purple-100'],
+ active: ['bg-purple-500', 'text-white'],
+ activeHover: ['hover:bg-purple-400'] // 选中时的浅色悬停
+ },
+ { // 混合视图按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-gray-200'],
+ active: ['bg-gray-500', 'text-white'],
+ activeHover: ['hover:bg-gray-400'] // 选中时的浅色悬停
+ }
+ ];
+
+ // 为所有按钮设置初始样式和事件
+ timeRangeButtons.forEach((button, index) => {
+ // 使用相应的样式配置
+ const styleConfig = buttonStyles[index % buttonStyles.length];
+
+ // 移除所有按钮的初始样式
+ button.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-gray-200', 'text-gray-700',
+ 'bg-green-500', 'bg-purple-500', 'bg-gray-100');
+
+ // 设置非选中状态样式
+ button.classList.add('transition-colors', 'duration-200');
+ button.classList.add(...styleConfig.normal);
+ button.classList.add(...styleConfig.hover);
+
+ // 移除鼠标悬停提示
+
+ console.log('为按钮设置初始样式:', button.textContent.trim(), '索引:', index, '类名:', Array.from(button.classList).join(', '));
+
+ button.addEventListener('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+
+ console.log('点击按钮:', button.textContent.trim(), '索引:', index);
+
+ // 检查是否是再次点击已选中的按钮
+ const isActive = button.classList.contains('active');
+
+ // 重置所有按钮为非选中状态
+ timeRangeButtons.forEach((btn, btnIndex) => {
+ const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
+
+ // 移除所有可能的激活状态类
+ btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500');
+ btn.classList.remove(...btnStyle.active);
+ btn.classList.remove(...btnStyle.activeHover);
+
+ // 添加非选中状态类
+ btn.classList.add(...btnStyle.normal);
+ btn.classList.add(...btnStyle.hover);
+ });
+
+ if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
+ // 切换到混合视图
+ isMixedView = true;
+ currentTimeRange = 'mixed';
+ console.log('切换到混合视图');
+
+ // 设置当前按钮为特殊混合视图状态(保持原按钮选中但添加混合视图标记)
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active', 'mixed-view-active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
+ } else {
+ // 普通选中模式
+ isMixedView = false;
+ lastSelectedIndex = index;
+
+ // 设置当前按钮为激活状态
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
+
+ // 获取并更新当前时间范围
+ let rangeValue;
+ if (button.dataset.range) {
+ rangeValue = button.dataset.range;
+ } else {
+ const btnText = button.textContent.trim();
+ if (btnText.includes('24')) {
+ rangeValue = '24h';
+ } else if (btnText.includes('7')) {
+ rangeValue = '7d';
+ } else if (btnText.includes('30')) {
+ rangeValue = '30d';
+ } else {
+ rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
+ }
+ }
+ currentTimeRange = rangeValue;
+ console.log('更新时间范围为:', currentTimeRange);
+ }
+
+ // 重新加载数据
+ loadDashboardData();
+ // 更新DNS请求图表
+ drawDNSRequestsChart();
+ });
+
+ // 移除自定义鼠标悬停提示效果
+ });
+
+ // 确保默认选中第一个按钮并显示混合内容
+ if (timeRangeButtons.length > 0) {
+ const firstButton = timeRangeButtons[0];
+ const firstStyle = buttonStyles[0];
+
+ // 先重置所有按钮
+ timeRangeButtons.forEach((btn, index) => {
+ const btnStyle = buttonStyles[index % buttonStyles.length];
+ btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500', 'mixed-view-active');
+ btn.classList.remove(...btnStyle.active);
+ btn.classList.remove(...btnStyle.activeHover);
+ btn.classList.add(...btnStyle.normal);
+ btn.classList.add(...btnStyle.hover);
+ });
+
+ // 然后设置第一个按钮为激活状态,并标记为混合视图
+ firstButton.classList.remove(...firstStyle.normal);
+ firstButton.classList.remove(...firstStyle.hover);
+ firstButton.classList.add('active', 'mixed-view-active');
+ firstButton.classList.add(...firstStyle.active);
+ firstButton.classList.add(...firstStyle.activeHover);
+ console.log('默认选中第一个按钮并显示混合内容:', firstButton.textContent.trim());
+
+ // 设置默认显示混合内容
+ isMixedView = true;
+ currentTimeRange = 'mixed';
+ }
+}
+
+// 注意:这个函数已被后面的实现覆盖,请使用后面的drawDetailedDNSRequestsChart函数
+
+// 初始化图表
+function initCharts() {
+ // 初始化比例图表
+ const ratioChartElement = document.getElementById('ratio-chart');
+ if (!ratioChartElement) {
+ console.error('未找到比例图表元素');
+ return;
+ }
+ const ratioCtx = ratioChartElement.getContext('2d');
+ ratioChart = new Chart(ratioCtx, {
+ type: 'doughnut',
+ data: {
+ labels: ['正常解析', '被屏蔽', '错误'],
+ datasets: [{
+ data: ['---', '---', '---'],
+ backgroundColor: ['#00B42A', '#F53F3F', '#FF7D00'],
+ borderWidth: 2, // 添加边框宽度,增强区块分隔
+ borderColor: '#fff', // 白色边框,使各个扇区更清晰
+ hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
+ hoverBorderWidth: 3 // 悬停时增加边框宽度
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ // 添加全局动画配置,确保图表创建和更新时都平滑过渡
+ animation: {
+ duration: 500, // 延长动画时间,使过渡更平滑
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ position: 'bottom',
+ labels: {
+ boxWidth: 12, // 减小图例框的宽度
+ font: {
+ size: 11 // 减小字体大小
+ },
+ padding: 10 // 减小内边距
+ }
+ },
+ tooltip: {
+ enabled: true,
+ backgroundColor: 'rgba(0, 0, 0, 0.8)',
+ padding: 10,
+ titleFont: {
+ size: 12
+ },
+ bodyFont: {
+ size: 11
+ },
+ callbacks: {
+ label: function(context) {
+ const label = context.label || '';
+ const value = context.raw || 0;
+ const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
+ const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
+ return `${label}: ${value} (${percentage}%)`;
+ }
+ }
+ }
+ },
+ cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
+ // 添加线段指示相关配置
+ elements: {
+ arc: {
+ // 确保圆弧绘制时有足够的精度
+ borderAlign: 'center',
+ tension: 0.1 // 添加轻微的张力,使圆弧更平滑
+ }
+ }
+ }
+ });
+
+ // 初始化解析类型统计饼图
+ const queryTypeChartElement = document.getElementById('query-type-chart');
+ if (queryTypeChartElement) {
+ const queryTypeCtx = queryTypeChartElement.getContext('2d');
+ // 预定义的颜色数组,用于解析类型
+ const queryTypeColors = ['#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6', '#1abc9c', '#d35400', '#34495e'];
+
+ queryTypeChart = new Chart(queryTypeCtx, {
+ type: 'doughnut',
+ data: {
+ labels: ['暂无数据'],
+ datasets: [{
+ data: [1],
+ backgroundColor: [queryTypeColors[0]],
+ borderWidth: 2, // 添加边框宽度,增强区块分隔
+ borderColor: '#fff', // 白色边框,使各个扇区更清晰
+ hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
+ hoverBorderWidth: 3 // 悬停时增加边框宽度
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ // 添加全局动画配置,确保图表创建和更新时都平滑过渡
+ animation: {
+ duration: 300,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ position: 'bottom',
+ labels: {
+ boxWidth: 12, // 减小图例框的宽度
+ font: {
+ size: 11 // 减小字体大小
+ },
+ padding: 10 // 减小内边距
+ }
+ },
+ tooltip: {
+ enabled: true,
+ backgroundColor: 'rgba(0, 0, 0, 0.8)',
+ padding: 10,
+ titleFont: {
+ size: 12
+ },
+ bodyFont: {
+ size: 11
+ },
+ callbacks: {
+ label: function(context) {
+ const label = context.label || '';
+ const value = context.raw || 0;
+ const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
+ const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
+ return `${label}: ${value} (${percentage}%)`;
+ }
+ }
+ }
+ },
+ cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
+ // 添加线段指示相关配置
+ elements: {
+ arc: {
+ // 确保圆弧绘制时有足够的精度
+ borderAlign: 'center',
+ tension: 0.1 // 添加轻微的张力,使圆弧更平滑
+ }
+ }
+ }
+ });
+ } else {
+ console.warn('未找到解析类型统计图表元素');
+ }
+
+ // 初始化DNS请求统计图表
+ drawDNSRequestsChart();
+
+ // 初始化展开按钮功能
+ initExpandButton();
+}
+
+// 初始化展开按钮事件
+function initExpandButton() {
+ const expandBtn = document.getElementById('expand-chart-btn');
+ const chartModal = document.getElementById('chart-modal');
+ const closeModalBtn = document.getElementById('close-modal-btn'); // 修复ID匹配
+
+ // 添加调试日志
+ console.log('初始化展开按钮功能:', { expandBtn, chartModal, closeModalBtn });
+
+ if (expandBtn && chartModal && closeModalBtn) {
+ // 展开按钮点击事件
+ expandBtn.addEventListener('click', () => {
+ console.log('展开按钮被点击');
+ // 显示浮窗
+ chartModal.classList.remove('hidden');
+
+ // 初始化或更新详细图表
+ drawDetailedDNSRequestsChart();
+
+ // 初始化浮窗中的时间范围切换
+ initDetailedTimeRangeToggle();
+
+ // 延迟更新图表大小,确保容器大小已计算
+ setTimeout(() => {
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.resize();
+ }
+ }, 100);
+ });
+
+ // 关闭按钮点击事件
+ closeModalBtn.addEventListener('click', () => {
+ console.log('关闭按钮被点击');
+ chartModal.classList.add('hidden');
+ });
+
+ // 点击遮罩层关闭浮窗(使用chartModal作为遮罩层)
+ chartModal.addEventListener('click', (e) => {
+ // 检查点击目标是否是遮罩层本身(即最外层div)
+ if (e.target === chartModal) {
+ console.log('点击遮罩层关闭');
+ chartModal.classList.add('hidden');
+ }
+ });
+
+ // ESC键关闭浮窗
+ document.addEventListener('keydown', (e) => {
+ if (e.key === 'Escape' && !chartModal.classList.contains('hidden')) {
+ console.log('ESC键关闭浮窗');
+ chartModal.classList.add('hidden');
+ }
+ });
+ } else {
+ console.error('无法找到必要的DOM元素');
+ }
+}
+
+// 初始化详细图表的时间范围切换
+function initDetailedTimeRangeToggle() {
+ // 只选择图表模态框内的时间范围按钮,避免与主视图冲突
+ const chartModal = document.getElementById('chart-modal');
+ const detailedTimeRangeButtons = chartModal ? chartModal.querySelectorAll('.time-range-btn') : [];
+
+ console.log('初始化详细图表时间范围切换,找到按钮数量:', detailedTimeRangeButtons.length);
+
+ // 初始化详细图表的默认状态,与主图表保持一致
+ detailedCurrentTimeRange = currentTimeRange;
+ detailedIsMixedView = isMixedView;
+
+ // 定义按钮样式配置,与主视图保持一致
+ const buttonStyles = [
+ { // 24小时按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-blue-100'],
+ active: ['bg-blue-500', 'text-white'],
+ activeHover: ['hover:bg-blue-400']
+ },
+ { // 7天按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-green-100'],
+ active: ['bg-green-500', 'text-white'],
+ activeHover: ['hover:bg-green-400']
+ },
+ { // 30天按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-purple-100'],
+ active: ['bg-purple-500', 'text-white'],
+ activeHover: ['hover:bg-purple-400']
+ },
+ { // 混合视图按钮
+ normal: ['bg-gray-100', 'text-gray-700'],
+ hover: ['hover:bg-gray-200'],
+ active: ['bg-gray-500', 'text-white'],
+ activeHover: ['hover:bg-gray-400']
+ }
+ ];
+
+ // 设置初始按钮状态
+ detailedTimeRangeButtons.forEach((button, index) => {
+ const styleConfig = buttonStyles[index % buttonStyles.length];
+
+ // 移除所有初始样式
+ button.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-gray-200', 'text-gray-700',
+ 'bg-green-500', 'bg-purple-500', 'bg-gray-100', 'mixed-view-active');
+
+ // 设置非选中状态样式
+ button.classList.add('transition-colors', 'duration-200');
+ button.classList.add(...styleConfig.normal);
+ button.classList.add(...styleConfig.hover);
+
+ // 如果是第一个按钮且当前是混合视图,设置为混合视图激活状态
+ if (index === 0 && detailedIsMixedView) {
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active', 'mixed-view-active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover);
+ }
+ });
+
+ detailedTimeRangeButtons.forEach((button, index) => {
+ button.addEventListener('click', () => {
+ const styleConfig = buttonStyles[index % buttonStyles.length];
+
+ // 检查是否是再次点击已选中的按钮
+ const isActive = button.classList.contains('active');
+
+ // 重置所有按钮为非选中状态
+ detailedTimeRangeButtons.forEach((btn, btnIndex) => {
+ const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
+
+ // 移除所有可能的激活状态类
+ btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500', 'mixed-view-active');
+ btn.classList.remove(...btnStyle.active);
+ btn.classList.remove(...btnStyle.activeHover);
+
+ // 添加非选中状态类
+ btn.classList.add(...btnStyle.normal);
+ btn.classList.add(...btnStyle.hover);
+ });
+
+ if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
+ // 切换到混合视图
+ detailedIsMixedView = true;
+ detailedCurrentTimeRange = 'mixed';
+ console.log('详细图表切换到混合视图');
+
+ // 设置当前按钮为特殊混合视图状态
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active', 'mixed-view-active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover);
+ } else {
+ // 普通选中模式
+ detailedIsMixedView = false;
+
+ // 设置当前按钮为激活状态
+ button.classList.remove(...styleConfig.normal);
+ button.classList.remove(...styleConfig.hover);
+ button.classList.add('active');
+ button.classList.add(...styleConfig.active);
+ button.classList.add(...styleConfig.activeHover);
+
+ // 获取并更新当前时间范围
+ let rangeValue;
+ if (button.dataset.range) {
+ rangeValue = button.dataset.range;
+ } else {
+ const btnText = button.textContent.trim();
+ if (btnText.includes('24')) {
+ rangeValue = '24h';
+ } else if (btnText.includes('7')) {
+ rangeValue = '7d';
+ } else if (btnText.includes('30')) {
+ rangeValue = '30d';
+ } else {
+ rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
+ }
+ }
+ detailedCurrentTimeRange = rangeValue;
+ console.log('详细图表更新时间范围为:', detailedCurrentTimeRange);
+ }
+
+ // 重新绘制详细图表
+ drawDetailedDNSRequestsChart();
+ });
+ });
+}
+
+// 绘制详细的DNS请求趋势图表
+function drawDetailedDNSRequestsChart() {
+ console.log('绘制详细DNS请求趋势图表,时间范围:', detailedCurrentTimeRange, '混合视图:', detailedIsMixedView);
+
+ const ctx = document.getElementById('detailed-dns-requests-chart');
+ if (!ctx) {
+ console.error('未找到详细DNS请求图表元素');
+ return;
+ }
+
+ const chartContext = ctx.getContext('2d');
+
+ // 混合视图配置
+ const datasetsConfig = [
+ { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
+ { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
+ { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
+ ];
+
+ // 检查是否为混合视图
+ if (detailedIsMixedView || detailedCurrentTimeRange === 'mixed') {
+ console.log('渲染混合视图详细图表');
+
+ // 显示图例
+ const showLegend = true;
+
+ // 获取所有时间范围的数据
+ Promise.all(datasetsConfig.map(config =>
+ config.api().catch(error => {
+ console.error(`获取${config.label}数据失败:`, error);
+ // 返回空数据
+ const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
+ return {
+ labels: Array(count).fill(''),
+ data: Array(count).fill(0)
+ };
+ })
+ )).then(results => {
+ // 创建数据集
+ const datasets = results.map((data, index) => ({
+ label: datasetsConfig[index].label,
+ data: data.data,
+ borderColor: datasetsConfig[index].color,
+ backgroundColor: datasetsConfig[index].fillColor,
+ tension: 0.4,
+ fill: false,
+ borderWidth: 2
+ }));
+
+ // 创建或更新图表
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.data.labels = results[0].labels;
+ detailedDnsRequestsChart.data.datasets = datasets;
+ detailedDnsRequestsChart.options.plugins.legend.display = showLegend;
+ // 使用平滑过渡动画更新图表
+ detailedDnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
+ } else {
+ detailedDnsRequestsChart = new Chart(chartContext, {
+ type: 'line',
+ data: {
+ labels: results[0].labels,
+ datasets: datasets
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ animation: {
+ duration: 800,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ display: showLegend,
+ position: 'top'
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false
+ }
+ },
+ scales: {
+ y: {
+ beginAtZero: true,
+ grid: {
+ color: 'rgba(0, 0, 0, 0.1)'
+ }
+ },
+ x: {
+ grid: {
+ display: false
+ }
+ }
+ }
+ }
+ });
+ }
+ }).catch(error => {
+ console.error('绘制混合视图详细图表失败:', error);
+ });
+ } else {
+ // 普通视图
+ // 根据详细视图时间范围选择API函数和对应的颜色
+ let apiFunction;
+ let chartColor;
+ let chartFillColor;
+
+ switch (detailedCurrentTimeRange) {
+ case '7d':
+ apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
+ chartFillColor = 'rgba(34, 197, 94, 0.1)';
+ break;
+ case '30d':
+ apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
+ chartFillColor = 'rgba(168, 85, 247, 0.1)';
+ break;
+ default: // 24h
+ apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
+ chartFillColor = 'rgba(59, 130, 246, 0.1)';
+ }
+
+ // 获取统计数据
+ apiFunction().then(data => {
+ // 创建或更新图表
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.data.labels = data.labels;
+ detailedDnsRequestsChart.data.datasets = [{
+ label: 'DNS请求数量',
+ data: data.data,
+ borderColor: chartColor,
+ backgroundColor: chartFillColor,
+ tension: 0.4,
+ fill: true
+ }];
+ detailedDnsRequestsChart.options.plugins.legend.display = false;
+ // 使用平滑过渡动画更新图表
+ detailedDnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
+ } else {
+ detailedDnsRequestsChart = new Chart(chartContext, {
+ type: 'line',
+ data: {
+ labels: data.labels,
+ datasets: [{
+ label: 'DNS请求数量',
+ data: data.data,
+ borderColor: chartColor,
+ backgroundColor: chartFillColor,
+ tension: 0.4,
+ fill: true
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ animation: {
+ duration: 800,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ display: false
+ },
+ title: {
+ display: true,
+ text: 'DNS请求趋势',
+ font: {
+ size: 14
+ }
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false
+ }
+ },
+ scales: {
+ y: {
+ beginAtZero: true,
+ grid: {
+ color: 'rgba(0, 0, 0, 0.1)'
+ }
+ },
+ x: {
+ grid: {
+ display: false
+ }
+ }
+ }
+ }
+ });
+ }
+ }).catch(error => {
+ console.error('绘制详细DNS请求图表失败:', error);
+ // 错误处理:使用空数据
+ const count = detailedCurrentTimeRange === '24h' ? 24 : (detailedCurrentTimeRange === '7d' ? 7 : 30);
+ const emptyData = {
+ labels: Array(count).fill(''),
+ data: Array(count).fill(0)
+ };
+
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.data.labels = emptyData.labels;
+ detailedDnsRequestsChart.data.datasets[0].data = emptyData.data;
+ detailedDnsRequestsChart.update();
+ }
+ });
+ }
+}
+
+// 绘制DNS请求统计图表
+function drawDNSRequestsChart() {
+ const ctx = document.getElementById('dns-requests-chart');
+ if (!ctx) {
+ console.error('未找到DNS请求图表元素');
+ return;
+ }
+
+ const chartContext = ctx.getContext('2d');
+
+ // 混合视图配置
+ const datasetsConfig = [
+ { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
+ { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
+ { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
+ ];
+
+ // 检查是否为混合视图
+ if (isMixedView || currentTimeRange === 'mixed') {
+ console.log('渲染混合视图图表');
+
+ // 显示图例
+ const showLegend = true;
+
+ // 获取所有时间范围的数据
+ Promise.all(datasetsConfig.map(config =>
+ config.api().catch(error => {
+ console.error(`获取${config.label}数据失败:`, error);
+ // 返回空数据而不是模拟数据
+ const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
+ return {
+ labels: Array(count).fill(''),
+ data: Array(count).fill(0)
+ };
+ })
+ )).then(results => {
+ // 创建数据集
+ const datasets = results.map((data, index) => ({
+ label: datasetsConfig[index].label,
+ data: data.data,
+ borderColor: datasetsConfig[index].color,
+ backgroundColor: datasetsConfig[index].fillColor,
+ tension: 0.4,
+ fill: false, // 混合视图不填充
+ borderWidth: 2
+ }));
+
+ // 创建或更新图表
+ if (dnsRequestsChart) {
+ // 使用第一个数据集的标签,但确保每个数据集使用自己的数据
+ dnsRequestsChart.data.labels = results[0].labels;
+ dnsRequestsChart.data.datasets = datasets;
+ dnsRequestsChart.options.plugins.legend.display = showLegend;
+ // 使用平滑过渡动画更新图表
+ dnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
+ } else {
+ dnsRequestsChart = new Chart(chartContext, {
+ type: 'line',
+ data: {
+ labels: results[0].labels,
+ datasets: datasets
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ animation: {
+ duration: 800,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ display: showLegend,
+ position: 'top'
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false
+ }
+ },
+ scales: {
+ y: {
+ beginAtZero: true,
+ grid: {
+ color: 'rgba(0, 0, 0, 0.1)'
+ }
+ },
+ x: {
+ grid: {
+ display: false
+ }
+ }
+ }
+ }
+ });
+ }
+ }).catch(error => {
+ console.error('绘制混合视图图表失败:', error);
+ });
+ } else {
+ // 普通视图
+ // 根据当前时间范围选择API函数和对应的颜色
+ let apiFunction;
+ let chartColor;
+ let chartFillColor;
+
+ switch (currentTimeRange) {
+ case '7d':
+ apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
+ chartFillColor = 'rgba(34, 197, 94, 0.1)';
+ break;
+ case '30d':
+ apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
+ chartFillColor = 'rgba(168, 85, 247, 0.1)';
+ break;
+ default: // 24h
+ apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
+ chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
+ chartFillColor = 'rgba(59, 130, 246, 0.1)';
+ }
+
+ // 获取统计数据
+ apiFunction().then(data => {
+ // 创建或更新图表
+ if (dnsRequestsChart) {
+ dnsRequestsChart.data.labels = data.labels;
+ dnsRequestsChart.data.datasets = [{
+ label: 'DNS请求数量',
+ data: data.data,
+ borderColor: chartColor,
+ backgroundColor: chartFillColor,
+ tension: 0.4,
+ fill: true
+ }];
+ dnsRequestsChart.options.plugins.legend.display = false;
+ // 使用平滑过渡动画更新图表
+ dnsRequestsChart.update({
+ duration: 800,
+ easing: 'easeInOutQuart'
+ });
+ } else {
+ dnsRequestsChart = new Chart(chartContext, {
+ type: 'line',
+ data: {
+ labels: data.labels,
+ datasets: [{
+ label: 'DNS请求数量',
+ data: data.data,
+ borderColor: chartColor,
+ backgroundColor: chartFillColor,
+ tension: 0.4,
+ fill: true
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ animation: {
+ duration: 800,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ display: false
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false
+ }
+ },
+ scales: {
+ y: {
+ beginAtZero: true,
+ grid: {
+ color: 'rgba(0, 0, 0, 0.1)'
+ }
+ },
+ x: {
+ grid: {
+ display: false
+ }
+ }
+ }
+ }
+ });
+ }
+ }).catch(error => {
+ console.error('绘制DNS请求图表失败:', error);
+ // 错误处理:使用空数据而不是模拟数据
+ const count = currentTimeRange === '24h' ? 24 : (currentTimeRange === '7d' ? 7 : 30);
+ const emptyData = {
+ labels: Array(count).fill(''),
+ data: Array(count).fill(0)
+ };
+
+ if (dnsRequestsChart) {
+ dnsRequestsChart.data.labels = emptyData.labels;
+ dnsRequestsChart.data.datasets[0].data = emptyData.data;
+ dnsRequestsChart.update();
+ }
+ });
+ }
+}
+
+// 更新图表数据
+function updateCharts(stats, queryTypeStats) {
+ console.log('更新图表,收到统计数据:', stats);
+ console.log('查询类型统计数据:', queryTypeStats);
+
+ // 空值检查
+ if (!stats) {
+ console.error('更新图表失败: 未提供统计数据');
+ return;
+ }
+
+ // 更新比例图表
+ if (ratioChart) {
+ let allowed = '---', blocked = '---', error = '---';
+
+ // 尝试从stats数据中提取
+ if (stats.dns) {
+ allowed = stats.dns.Allowed || allowed;
+ blocked = stats.dns.Blocked || blocked;
+ error = stats.dns.Errors || error;
+ } else if (stats.totalQueries !== undefined) {
+ allowed = stats.allowedQueries || allowed;
+ blocked = stats.blockedQueries || blocked;
+ error = stats.errorQueries || error;
+ }
+
+ ratioChart.data.datasets[0].data = [allowed, blocked, error];
+ // 使用自定义动画配置更新图表,确保平滑过渡
+ ratioChart.update({
+ duration: 500,
+ easing: 'easeInOutQuart'
+ });
+ }
+
+ // 更新解析类型统计饼图
+ if (queryTypeChart && queryTypeStats && Array.isArray(queryTypeStats)) {
+ const queryTypeColors = ['#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6', '#1abc9c', '#d35400', '#34495e'];
+
+ // 检查是否有有效的数据项
+ const validData = queryTypeStats.filter(item => item && item.count > 0);
+
+ if (validData.length > 0) {
+ // 准备标签和数据
+ const labels = validData.map(item => item.type);
+ const data = validData.map(item => item.count);
+
+ // 为每个解析类型分配颜色
+ const colors = labels.map((_, index) => queryTypeColors[index % queryTypeColors.length]);
+
+ // 更新图表数据
+ queryTypeChart.data.labels = labels;
+ queryTypeChart.data.datasets[0].data = data;
+ queryTypeChart.data.datasets[0].backgroundColor = colors;
+ } else {
+ // 如果没有数据,显示默认值
+ queryTypeChart.data.labels = ['暂无数据'];
+ queryTypeChart.data.datasets[0].data = [1];
+ queryTypeChart.data.datasets[0].backgroundColor = [queryTypeColors[0]];
+ }
+
+ // 使用自定义动画配置更新图表,确保平滑过渡
+ queryTypeChart.update({
+ duration: 500,
+ easing: 'easeInOutQuart'
+ });
+ }
+}
+
+// 更新统计卡片折线图
+function updateStatCardCharts(stats) {
+ if (!stats || Object.keys(statCardCharts).length === 0) {
+ return;
+ }
+
+ // 更新查询总量图表
+ if (statCardCharts['query-chart']) {
+ let queryCount = 0;
+ if (stats.dns) {
+ queryCount = stats.dns.Queries || 0;
+ } else if (stats.totalQueries !== undefined) {
+ queryCount = stats.totalQueries || 0;
+ }
+ updateChartData('query-chart', queryCount);
+ }
+
+ // 更新屏蔽数量图表
+ if (statCardCharts['blocked-chart']) {
+ let blockedCount = 0;
+ if (stats.dns) {
+ blockedCount = stats.dns.Blocked || 0;
+ } else if (stats.blockedQueries !== undefined) {
+ blockedCount = stats.blockedQueries || 0;
+ }
+ updateChartData('blocked-chart', blockedCount);
+ }
+
+ // 更新正常解析图表
+ if (statCardCharts['allowed-chart']) {
+ let allowedCount = 0;
+ if (stats.dns) {
+ allowedCount = stats.dns.Allowed || 0;
+ } else if (stats.allowedQueries !== undefined) {
+ allowedCount = stats.allowedQueries || 0;
+ } else if (stats.dns && stats.dns.Queries && stats.dns.Blocked) {
+ allowedCount = stats.dns.Queries - stats.dns.Blocked;
+ }
+ updateChartData('allowed-chart', allowedCount);
+ }
+
+ // 更新错误数量图表
+ if (statCardCharts['error-chart']) {
+ let errorCount = 0;
+ if (stats.dns) {
+ errorCount = stats.dns.Errors || 0;
+ } else if (stats.errorQueries !== undefined) {
+ errorCount = stats.errorQueries || 0;
+ }
+ updateChartData('error-chart', errorCount);
+ }
+
+ // 更新响应时间图表
+ if (statCardCharts['response-time-chart']) {
+ let responseTime = 0;
+ // 尝试从不同的数据结构获取平均响应时间
+ if (stats.dns && stats.dns.AvgResponseTime) {
+ responseTime = stats.dns.AvgResponseTime;
+ } else if (stats.avgResponseTime !== undefined) {
+ responseTime = stats.avgResponseTime;
+ } else if (stats.responseTime) {
+ responseTime = stats.responseTime;
+ }
+ // 限制小数位数为两位
+ responseTime = parseFloat(responseTime).toFixed(2);
+ updateChartData('response-time-chart', responseTime);
+ }
+
+ // 更新活跃IP图表
+ if (statCardCharts['ips-chart']) {
+ const activeIPs = stats.activeIPs || 0;
+ updateChartData('ips-chart', activeIPs);
+ }
+
+ // 更新CPU使用率图表
+ if (statCardCharts['cpu-chart']) {
+ const cpuUsage = stats.cpuUsage || 0;
+ updateChartData('cpu-chart', cpuUsage);
+ }
+
+ // 更新平均响应时间显示
+ if (document.getElementById('avg-response-time')) {
+ let avgResponseTime = 0;
+ // 尝试从不同的数据结构获取平均响应时间
+ if (stats.dns && stats.dns.AvgResponseTime) {
+ avgResponseTime = stats.dns.AvgResponseTime;
+ } else if (stats.avgResponseTime !== undefined) {
+ avgResponseTime = stats.avgResponseTime;
+ } else if (stats.responseTime) {
+ avgResponseTime = stats.responseTime;
+ }
+ document.getElementById('avg-response-time').textContent = formatNumber(avgResponseTime);
+ }
+
+ // 更新规则数图表
+ if (statCardCharts['rules-chart']) {
+ // 尝试获取规则数,如果没有则使用模拟数据
+ const rulesCount = getRulesCountFromStats(stats) || Math.floor(Math.random() * 5000) + 10000;
+ updateChartData('rules-chart', rulesCount);
+ }
+
+ // 更新排除规则数图表
+ if (statCardCharts['exceptions-chart']) {
+ const exceptionsCount = getExceptionsCountFromStats(stats) || Math.floor(Math.random() * 100) + 50;
+ updateChartData('exceptions-chart', exceptionsCount);
+ }
+
+ // 更新Hosts条目数图表
+ if (statCardCharts['hosts-chart']) {
+ const hostsCount = getHostsCountFromStats(stats) || Math.floor(Math.random() * 1000) + 2000;
+ updateChartData('hosts-chart', hostsCount);
+ }
+}
+
+// 更新单个图表的数据
+function updateChartData(chartId, newValue) {
+ const chart = statCardCharts[chartId];
+ const historyData = statCardHistoryData[chartId];
+
+ if (!chart || !historyData) {
+ return;
+ }
+
+ // 添加新数据,移除最旧的数据
+ historyData.push(newValue);
+ if (historyData.length > 12) {
+ historyData.shift();
+ }
+
+ // 更新图表数据
+ chart.data.datasets[0].data = historyData;
+ chart.data.labels = generateTimeLabels(historyData.length);
+
+ // 使用自定义动画配置更新图表,确保平滑过渡,避免空白区域
+ chart.update({
+ duration: 300, // 增加动画持续时间
+ easing: 'easeInOutQuart', // 使用平滑的缓动函数
+ transition: {
+ duration: 300,
+ easing: 'easeInOutQuart'
+ }
+ });
+}
+
+// 从统计数据中获取规则数
+function getRulesCountFromStats(stats) {
+ // 尝试从stats中获取规则数
+ if (stats.shield && stats.shield.rules) {
+ return stats.shield.rules;
+ }
+ return null;
+}
+
+// 从统计数据中获取排除规则数
+function getExceptionsCountFromStats(stats) {
+ // 尝试从stats中获取排除规则数
+ if (stats.shield && stats.shield.exceptions) {
+ return stats.shield.exceptions;
+ }
+ return null;
+}
+
+// 从统计数据中获取Hosts条目数
+function getHostsCountFromStats(stats) {
+ // 尝试从stats中获取Hosts条目数
+ if (stats.shield && stats.shield.hosts) {
+ return stats.shield.hosts;
+ }
+ return null;
+}
+
+// 初始化统计卡片折线图
+function initStatCardCharts() {
+ console.log('===== 开始初始化统计卡片折线图 =====');
+
+ // 清理已存在的图表实例
+ for (const key in statCardCharts) {
+ if (statCardCharts.hasOwnProperty(key)) {
+ statCardCharts[key].destroy();
+ }
+ }
+ statCardCharts = {};
+ statCardHistoryData = {};
+
+ // 检查Chart.js是否加载
+ console.log('Chart.js是否可用:', typeof Chart !== 'undefined');
+
+ // 统计卡片配置信息
+ const cardConfigs = [
+ { id: 'query-chart', color: '#9b59b6', label: '查询总量' },
+ { id: 'blocked-chart', color: '#e74c3c', label: '屏蔽数量' },
+ { id: 'allowed-chart', color: '#2ecc71', label: '正常解析' },
+ { id: 'error-chart', color: '#f39c12', label: '错误数量' },
+ { id: 'response-time-chart', color: '#3498db', label: '响应时间' },
+ { id: 'ips-chart', color: '#1abc9c', label: '活跃IP' },
+ { id: 'cpu-chart', color: '#e67e22', label: 'CPU使用率' },
+ { id: 'rules-chart', color: '#95a5a6', label: '屏蔽规则数' },
+ { id: 'exceptions-chart', color: '#34495e', label: '排除规则数' },
+ { id: 'hosts-chart', color: '#16a085', label: 'Hosts条目数' }
+ ];
+
+ console.log('图表配置:', cardConfigs);
+
+ cardConfigs.forEach(config => {
+ const canvas = document.getElementById(config.id);
+ if (!canvas) {
+ console.warn(`未找到统计卡片图表元素: ${config.id}`);
+ return;
+ }
+
+ const ctx = canvas.getContext('2d');
+
+ // 为不同类型的卡片生成更合适的初始数据
+ let initialData;
+ if (config.id === 'response-time-chart') {
+ // 响应时间图表使用空数组,将通过API实时数据更新
+ initialData = Array(12).fill(null);
+ } else if (config.id === 'cpu-chart') {
+ initialData = generateMockData(12, 0, 10);
+ } else {
+ initialData = generateMockData(12, 0, 100);
+ }
+
+ // 初始化历史数据数组
+ statCardHistoryData[config.id] = [...initialData];
+
+ // 创建图表
+ statCardCharts[config.id] = new Chart(ctx, {
+ type: 'line',
+ data: {
+ labels: generateTimeLabels(12),
+ datasets: [{
+ label: config.label,
+ data: initialData,
+ borderColor: config.color,
+ backgroundColor: `${config.color}20`, // 透明度20%
+ borderWidth: 2,
+ tension: 0.4,
+ fill: true,
+ pointRadius: 0, // 隐藏数据点
+ pointHoverRadius: 4, // 鼠标悬停时显示数据点
+ pointBackgroundColor: config.color
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ // 添加动画配置,确保平滑过渡
+ animation: {
+ duration: 800,
+ easing: 'easeInOutQuart'
+ },
+ plugins: {
+ legend: {
+ display: false
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false,
+ backgroundColor: 'rgba(0, 0, 0, 0.9)',
+ titleColor: '#fff',
+ bodyColor: '#fff',
+ borderColor: config.color,
+ borderWidth: 1,
+ padding: 8,
+ displayColors: false,
+ cornerRadius: 4,
+ titleFont: {
+ size: 12,
+ weight: 'normal'
+ },
+ bodyFont: {
+ size: 11
+ },
+ // 确保HTML渲染正确
+ useHTML: true,
+ filter: function(tooltipItem) {
+ return tooltipItem.datasetIndex === 0;
+ },
+ callbacks: {
+ title: function(tooltipItems) {
+ // 简化时间显示格式
+ return tooltipItems[0].label;
+ },
+ label: function(context) {
+ const value = context.parsed.y;
+ // 格式化大数字
+ const formattedValue = formatNumber(value);
+
+ // 使用CSS类显示变化趋势
+ let trendInfo = '';
+ const data = context.dataset.data;
+ const currentIndex = context.dataIndex;
+
+ if (currentIndex > 0) {
+ const prevValue = data[currentIndex - 1];
+ const change = value - prevValue;
+
+ if (change !== 0) {
+ const changeSymbol = change > 0 ? '↑' : '↓';
+ // 取消颜色显示,简化显示
+ trendInfo = (changeSymbol + Math.abs(change));
+ }
+ }
+
+ // 简化标签格式
+ return `${config.label}: ${formattedValue}${trendInfo}`;
+ },
+ // 移除平均值显示
+ afterLabel: function(context) {
+ return '';
+ }
+ }
+ }
+ },
+ scales: {
+ x: {
+ display: false // 隐藏X轴
+ },
+ y: {
+ display: false, // 隐藏Y轴
+ beginAtZero: true
+ }
+ },
+ interaction: {
+ intersect: false,
+ mode: 'index'
+ }
+ }
+ });
+ });
+}
+
+// 生成模拟数据
+function generateMockData(count, min, max) {
+ const data = [];
+ for (let i = 0; i < count; i++) {
+ data.push(Math.floor(Math.random() * (max - min + 1)) + min);
+ }
+ return data;
+}
+
+// 生成时间标签
+function generateTimeLabels(count) {
+ const labels = [];
+ const now = new Date();
+ for (let i = count - 1; i >= 0; i--) {
+ const time = new Date(now.getTime() - i * 5 * 60 * 1000); // 每5分钟一个点
+ labels.push(`${time.getHours().toString().padStart(2, '0')}:${time.getMinutes().toString().padStart(2, '0')}`);
+ }
+ return labels;
+}
+
+// 格式化数字显示(使用K/M后缀)
+function formatNumber(num) {
+ // 如果不是数字,直接返回
+ if (isNaN(num) || num === '---') {
+ return num;
+ }
+
+ // 显示完整数字的最大长度阈值
+ const MAX_FULL_LENGTH = 5;
+
+ // 先获取完整数字字符串
+ const fullNumStr = num.toString();
+
+ // 如果数字长度小于等于阈值,直接返回完整数字
+ if (fullNumStr.length <= MAX_FULL_LENGTH) {
+ return fullNumStr;
+ }
+
+ // 否则使用缩写格式
+ if (num >= 1000000) {
+ return (num / 1000000).toFixed(1) + 'M';
+ } else if (num >= 1000) {
+ return (num / 1000).toFixed(1) + 'K';
+ }
+
+ return fullNumStr;
+}
+
+// 更新运行状态
+function updateUptime() {
+ // 实现更新运行时间的逻辑
+ // 这里应该调用API获取当前运行时间并更新到UI
+ // 由于API暂时没有提供运行时间,我们先使用模拟数据
+ const uptimeElement = document.getElementById('uptime');
+ if (uptimeElement) {
+ uptimeElement.textContent = '---';
+ }
+}
+
+// 格式化数字(添加千位分隔符)
+function formatWithCommas(num) {
+ return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
+}
+
+// 格式化时间
+function formatTime(timestamp) {
+ const date = new Date(timestamp);
+ const now = new Date();
+ const diff = now - date;
+
+ // 如果是今天,显示时间
+ if (date.toDateString() === now.toDateString()) {
+ return date.toLocaleTimeString('zh-CN', {hour: '2-digit', minute: '2-digit'});
+ }
+
+ // 否则显示日期和时间
+ return date.toLocaleString('zh-CN', {
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit'
+ });
+}
+
+// 根据颜色代码获取对应的CSS类名(兼容方式)
+function getColorClassName(colorCode) {
+ // 优先使用配置文件中的颜色处理
+ if (COLOR_CONFIG.getColorClassName) {
+ return COLOR_CONFIG.getColorClassName(colorCode);
+ }
+
+ // 备用颜色映射
+ const colorMap = {
+ '#1890ff': 'blue',
+ '#52c41a': 'green',
+ '#fa8c16': 'orange',
+ '#f5222d': 'red',
+ '#722ed1': 'purple',
+ '#13c2c2': 'cyan',
+ '#36cfc9': 'teal'
+ };
+
+ // 返回映射的类名,如果没有找到则返回默认的blue
+ return colorMap[colorCode] || 'blue';
+}
+
+// 显示通知
+function showNotification(message, type = 'info') {
+ // 移除已存在的通知
+ const existingNotification = document.getElementById('notification');
+ if (existingNotification) {
+ existingNotification.remove();
+ }
+
+ // 创建通知元素
+ const notification = document.createElement('div');
+ notification.id = 'notification';
+ notification.className = `fixed top-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 translate-y-0 opacity-0`;
+
+ // 设置样式和内容
+ let bgColor, textColor, icon;
+ switch (type) {
+ case 'success':
+ bgColor = 'bg-success';
+ textColor = 'text-white';
+ icon = 'fa-check-circle';
+ break;
+ case 'error':
+ bgColor = 'bg-danger';
+ textColor = 'text-white';
+ icon = 'fa-exclamation-circle';
+ break;
+ case 'warning':
+ bgColor = 'bg-warning';
+ textColor = 'text-white';
+ icon = 'fa-exclamation-triangle';
+ break;
+ default:
+ bgColor = 'bg-primary';
+ textColor = 'text-white';
+ icon = 'fa-info-circle';
+ }
+
+ notification.className += ` ${bgColor} ${textColor}`;
+ notification.innerHTML = `
+
+ `;
+
+ // 添加到页面
+ document.body.appendChild(notification);
+
+ // 显示通知
+ setTimeout(() => {
+ notification.classList.remove('translate-y-0', 'opacity-0');
+ notification.classList.add('-translate-y-2', 'opacity-100');
+ }, 10);
+
+ // 自动关闭
+ setTimeout(() => {
+ notification.classList.add('translate-y-0', 'opacity-0');
+ setTimeout(() => {
+ notification.remove();
+ }, 300);
+ }, 3000);
+}
+
+// 页面切换处理
+function handlePageSwitch() {
+ const menuItems = document.querySelectorAll('nav a');
+
+ // 页面切换逻辑
+ function switchPage(targetId, menuItem) {
+ // 隐藏所有内容
+ document.querySelectorAll('[id$="-content"]').forEach(content => {
+ content.classList.add('hidden');
+ });
+
+ // 显示目标内容
+ document.getElementById(`${targetId}-content`).classList.remove('hidden');
+
+ // 更新页面标题
+ document.getElementById('page-title').textContent = menuItem.querySelector('span').textContent;
+
+ // 更新活动菜单项
+ menuItems.forEach(item => {
+ item.classList.remove('sidebar-item-active');
+ });
+ menuItem.classList.add('sidebar-item-active');
+
+ // 侧边栏切换(移动端)
+ if (window.innerWidth < 1024) {
+ toggleSidebar();
+ }
+ }
+
+ menuItems.forEach(item => {
+ item.addEventListener('click', (e) => {
+ // 允许默认的hash变化
+ // 页面切换会由hashchange事件处理
+ });
+ });
+}
+
+// 处理hash变化 - 全局函数,确保在页面加载时就能被调用
+function handleHashChange() {
+ let hash = window.location.hash;
+
+ // 如果没有hash,默认设置为#dashboard
+ if (!hash) {
+ hash = '#dashboard';
+ window.location.hash = hash;
+ return;
+ }
+
+ const targetId = hash.substring(1);
+ const menuItems = document.querySelectorAll('nav a');
+
+ // 首先检查是否存在对应的内容元素
+ const contentElement = document.getElementById(`${targetId}-content`);
+
+ // 查找对应的菜单项
+ let targetMenuItem = null;
+ menuItems.forEach(item => {
+ if (item.getAttribute('href') === hash) {
+ targetMenuItem = item;
+ }
+ });
+
+ // 如果找到了对应的内容元素,直接显示
+ if (contentElement) {
+ // 隐藏所有内容
+ document.querySelectorAll('[id$="-content"]').forEach(content => {
+ content.classList.add('hidden');
+ });
+
+ // 显示目标内容
+ contentElement.classList.remove('hidden');
+
+ // 更新活动菜单项和页面标题
+ menuItems.forEach(item => {
+ item.classList.remove('sidebar-item-active');
+ });
+
+ if (targetMenuItem) {
+ targetMenuItem.classList.add('sidebar-item-active');
+ // 更新页面标题
+ const pageTitle = targetMenuItem.querySelector('span').textContent;
+ document.getElementById('page-title').textContent = pageTitle;
+ } else {
+ // 如果没有找到对应的菜单项,尝试根据hash更新页面标题
+ const titleElement = document.getElementById(`${targetId}-title`);
+ if (titleElement) {
+ document.getElementById('page-title').textContent = titleElement.textContent;
+ }
+ }
+ } else if (targetMenuItem) {
+ // 隐藏所有内容
+ document.querySelectorAll('[id$="-content"]').forEach(content => {
+ content.classList.add('hidden');
+ });
+
+ // 显示目标内容
+ document.getElementById(`${targetId}-content`).classList.remove('hidden');
+
+ // 更新页面标题
+ document.getElementById('page-title').textContent = targetMenuItem.querySelector('span').textContent;
+
+ // 更新活动菜单项
+ menuItems.forEach(item => {
+ item.classList.remove('sidebar-item-active');
+ });
+ targetMenuItem.classList.add('sidebar-item-active');
+
+ // 侧边栏切换(移动端)
+ if (window.innerWidth < 1024) {
+ toggleSidebar();
+ }
+ } else {
+ // 如果既没有找到内容元素也没有找到菜单项,默认显示dashboard
+ window.location.hash = '#dashboard';
+ }
+}
+
+// 初始化hash路由
+function initHashRoute() {
+ handleHashChange();
+}
+
+// 监听hash变化事件 - 全局事件监听器
+window.addEventListener('hashchange', handleHashChange);
+
+// 初始化hash路由 - 确保在页面加载时就能被调用
+initHashRoute();
+
+// 响应式处理
+function handleResponsive() {
+ // 窗口大小改变时处理
+ window.addEventListener('resize', () => {
+
+ // 更新所有图表大小
+ if (dnsRequestsChart) {
+ dnsRequestsChart.update();
+ }
+ if (ratioChart) {
+ ratioChart.update();
+ }
+ if (queryTypeChart) {
+ queryTypeChart.update();
+ }
+ if (detailedDnsRequestsChart) {
+ detailedDnsRequestsChart.update();
+ }
+ // 更新统计卡片图表
+ Object.values(statCardCharts).forEach(chart => {
+ if (chart) {
+ chart.update();
+ }
+ });
+ });
+
+ // 添加触摸事件支持,用于移动端
+ let touchStartX = 0;
+ let touchEndX = 0;
+
+ document.addEventListener('touchstart', (e) => {
+ touchStartX = e.changedTouches[0].screenX;
+ }, false);
+
+ document.addEventListener('touchend', (e) => {
+ touchEndX = e.changedTouches[0].screenX;
+ handleSwipe();
+ }, false);
+
+ function handleSwipe() {
+ // 从左向右滑动,打开侧边栏
+ if (touchEndX - touchStartX > 50 && window.innerWidth < 1024) {
+ sidebar.classList.remove('-translate-x-full');
+ }
+ // 从右向左滑动,关闭侧边栏
+ if (touchStartX - touchEndX > 50 && window.innerWidth < 1024) {
+ sidebar.classList.add('-translate-x-full');
+ }
+ }
+}
+
+// 添加重试功能
+function addRetryEventListeners() {
+ // TOP客户端重试按钮
+ const retryTopClientsBtn = document.getElementById('retry-top-clients');
+ if (retryTopClientsBtn) {
+ retryTopClientsBtn.addEventListener('click', async () => {
+ console.log('重试获取TOP客户端数据');
+ const clientsData = await api.getTopClients();
+ if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
+ // 使用真实数据
+ updateTopClientsTable(clientsData);
+ hideLoading('top-clients');
+ const errorElement = document.getElementById('top-clients-error');
+ if (errorElement) errorElement.classList.add('hidden');
+ } else {
+ // 重试失败,保持原有状态
+ console.warn('重试获取TOP客户端数据失败');
+ }
+ });
+ }
+
+ // TOP域名重试按钮
+ const retryTopDomainsBtn = document.getElementById('retry-top-domains');
+ if (retryTopDomainsBtn) {
+ retryTopDomainsBtn.addEventListener('click', async () => {
+ console.log('重试获取TOP域名数据');
+ const domainsData = await api.getTopDomains();
+ if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
+ // 使用真实数据
+ updateTopDomainsTable(domainsData);
+ hideLoading('top-domains');
+ const errorElement = document.getElementById('top-domains-error');
+ if (errorElement) errorElement.classList.add('hidden');
+ } else {
+ // 重试失败,保持原有状态
+ console.warn('重试获取TOP域名数据失败');
+ }
+ });
+ }
+}
+
+// 页面加载完成后初始化
+window.addEventListener('DOMContentLoaded', () => {
+ // 初始化页面切换
+ handlePageSwitch();
+
+ // 初始化响应式
+ handleResponsive();
+
+ // 初始化仪表盘
+ initDashboard();
+
+ // 添加重试事件监听器
+ addRetryEventListeners();
+
+ // 页面卸载时清理定时器
+ window.addEventListener('beforeunload', () => {
+ if (intervalId) {
+ clearInterval(intervalId);
+ }
+ });
+});
\ No newline at end of file
diff --git a/staticbak/static/js/guide.js b/staticbak/static/js/guide.js
new file mode 100644
index 0000000..e69de29
diff --git a/staticbak/static/js/hosts.js b/staticbak/static/js/hosts.js
new file mode 100644
index 0000000..a8a839d
--- /dev/null
+++ b/staticbak/static/js/hosts.js
@@ -0,0 +1,202 @@
+// Hosts管理页面功能实现
+
+// 初始化Hosts管理页面
+function initHostsPage() {
+ // 加载Hosts规则
+ loadHostsRules();
+ // 设置事件监听器
+ setupHostsEventListeners();
+}
+
+// 加载Hosts规则
+async function loadHostsRules() {
+ try {
+ const response = await fetch('/api/shield/hosts');
+ if (!response.ok) {
+ throw new Error('Failed to load hosts rules');
+ }
+ const data = await response.json();
+
+ // 处理API返回的数据格式
+ let hostsRules = [];
+ if (data && Array.isArray(data)) {
+ // 直接是数组格式
+ hostsRules = data;
+ } else if (data && data.hosts) {
+ // 包含在hosts字段中
+ hostsRules = data.hosts;
+ }
+
+ updateHostsTable(hostsRules);
+ } catch (error) {
+ console.error('Error loading hosts rules:', error);
+ showErrorMessage('加载Hosts规则失败');
+ }
+}
+
+// 更新Hosts表格
+function updateHostsTable(hostsRules) {
+ const tbody = document.getElementById('hosts-table-body');
+
+ if (hostsRules.length === 0) {
+ tbody.innerHTML = '
';
+ return;
+ }
+
+ tbody.innerHTML = hostsRules.map(rule => {
+ // 处理对象格式的规则
+ const ip = rule.ip || '';
+ const domain = rule.domain || '';
+
+ return `
+
+ `;
+ }).join('');
+
+ // 重新绑定删除事件
+ document.querySelectorAll('.delete-hosts-btn').forEach(btn => {
+ btn.addEventListener('click', handleDeleteHostsRule);
+ });
+}
+
+// 设置事件监听器
+function setupHostsEventListeners() {
+ // 保存Hosts按钮
+ document.getElementById('save-hosts-btn').addEventListener('click', handleAddHostsRule);
+}
+
+// 处理添加Hosts规则
+async function handleAddHostsRule() {
+ const ip = document.getElementById('hosts-ip').value.trim();
+ const domain = document.getElementById('hosts-domain').value.trim();
+
+ if (!ip || !domain) {
+ showErrorMessage('IP地址和域名不能为空');
+ return;
+ }
+
+ try {
+ const response = await fetch('/api/shield/hosts', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ ip, domain })
+ });
+
+ if (!response.ok) {
+ throw new Error('Failed to add hosts rule');
+ }
+
+ showSuccessMessage('Hosts规则添加成功');
+
+ // 清空输入框
+ document.getElementById('hosts-ip').value = '';
+ document.getElementById('hosts-domain').value = '';
+
+ // 重新加载规则
+ loadHostsRules();
+ } catch (error) {
+ console.error('Error adding hosts rule:', error);
+ showErrorMessage('添加Hosts规则失败');
+ }
+}
+
+// 处理删除Hosts规则
+async function handleDeleteHostsRule(e) {
+ const ip = e.target.closest('.delete-hosts-btn').dataset.ip;
+ const domain = e.target.closest('.delete-hosts-btn').dataset.domain;
+
+ try {
+ const response = await fetch('/api/shield/hosts', {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ domain })
+ });
+
+ if (!response.ok) {
+ throw new Error('Failed to delete hosts rule');
+ }
+
+ showSuccessMessage('Hosts规则删除成功');
+
+ // 重新加载规则
+ loadHostsRules();
+ } catch (error) {
+ console.error('Error deleting hosts rule:', error);
+ showErrorMessage('删除Hosts规则失败');
+ }
+}
+
+// 显示成功消息
+function showSuccessMessage(message) {
+ showNotification(message, 'success');
+}
+
+// 显示错误消息
+function showErrorMessage(message) {
+ showNotification(message, 'error');
+}
+
+
+
+// 显示通知
+function showNotification(message, type = 'info') {
+ // 移除现有通知
+ const existingNotification = document.querySelector('.notification');
+ if (existingNotification) {
+ existingNotification.remove();
+ }
+
+ // 创建新通知
+ const notification = document.createElement('div');
+ notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
+
+ // 设置通知样式
+ if (type === 'success') {
+ notification.classList.add('bg-green-500', 'text-white');
+ } else if (type === 'error') {
+ notification.classList.add('bg-red-500', 'text-white');
+ } else {
+ notification.classList.add('bg-blue-500', 'text-white');
+ }
+
+ notification.innerHTML = `
+
+ `;
+
+ document.body.appendChild(notification);
+
+ // 显示通知
+ setTimeout(() => {
+ notification.classList.remove('opacity-0');
+ }, 100);
+
+ // 3秒后隐藏通知
+ setTimeout(() => {
+ notification.classList.add('opacity-0');
+ setTimeout(() => {
+ notification.remove();
+ }, 300);
+ }, 3000);
+}
+
+// 页面加载完成后初始化
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initHostsPage);
+} else {
+ initHostsPage();
+}
diff --git a/staticbak/static/js/logs.js b/staticbak/static/js/logs.js
new file mode 100644
index 0000000..9055f55
--- /dev/null
+++ b/staticbak/static/js/logs.js
@@ -0,0 +1,1692 @@
+// logs.js - 查询日志页面功能
+
+// 全局变量
+let currentPage = 1;
+let totalPages = 1;
+let logsPerPage = 30; // 默认显示30条记录
+let currentFilter = '';
+let currentSearch = '';
+let logsChart = null;
+let currentSortField = '';
+let currentSortDirection = 'desc'; // 默认降序
+
+// IP地理位置缓存
+let ipGeolocationCache = {};
+const GEOLOCATION_CACHE_EXPIRY = 24 * 60 * 60 * 1000; // 缓存有效期24小时
+
+// 跟踪器数据库缓存
+let trackersDatabase = null;
+let trackersLoaded = false;
+let trackersLoading = false;
+
+// 域名信息数据库缓存
+let domainInfoDatabase = null;
+let domainInfoLoaded = false;
+let domainInfoLoading = false;
+
+// WebSocket连接和重连计时器
+let logsWsConnection = null;
+let logsWsReconnectTimer = null;
+
+// 加载跟踪器数据库
+async function loadTrackersDatabase() {
+ if (trackersLoaded) return trackersDatabase;
+ if (trackersLoading) {
+ // 等待正在进行的加载完成
+ while (trackersLoading) {
+ await new Promise(resolve => setTimeout(resolve, 100));
+ }
+ return trackersDatabase;
+ }
+
+ trackersLoading = true;
+
+ try {
+ const response = await fetch('domain-info/tracker/trackers.json');
+ if (!response.ok) {
+ console.error('加载跟踪器数据库失败:', response.statusText);
+ trackersDatabase = { trackers: {} };
+ return trackersDatabase;
+ }
+
+ trackersDatabase = await response.json();
+ trackersLoaded = true;
+ return trackersDatabase;
+ } catch (error) {
+ console.error('加载跟踪器数据库失败:', error);
+ trackersDatabase = { trackers: {} };
+ return trackersDatabase;
+ } finally {
+ trackersLoading = false;
+ }
+}
+
+// 加载域名信息数据库
+async function loadDomainInfoDatabase() {
+ console.log('开始加载域名信息数据库');
+
+ if (domainInfoLoaded) {
+ console.log('域名信息数据库已加载,直接返回');
+ return domainInfoDatabase;
+ }
+
+ if (domainInfoLoading) {
+ console.log('域名信息数据库正在加载中,等待完成');
+ // 等待正在进行的加载完成
+ while (domainInfoLoading) {
+ await new Promise(resolve => setTimeout(resolve, 100));
+ }
+ return domainInfoDatabase;
+ }
+
+ domainInfoLoading = true;
+
+ try {
+ console.log('发起请求获取域名信息数据库');
+ const response = await fetch('domain-info/domains/domain-info.json');
+
+ if (!response.ok) {
+ console.error('加载域名信息数据库失败,HTTP状态:', response.status, response.statusText);
+ console.error('请求URL:', response.url);
+ domainInfoDatabase = { domains: {}, categories: {} };
+ return domainInfoDatabase;
+ }
+
+ console.log('域名信息数据库请求成功,开始解析JSON');
+ domainInfoDatabase = await response.json();
+ console.log('域名信息数据库解析成功,包含', Object.keys(domainInfoDatabase.domains || {}).length, '个公司');
+ domainInfoLoaded = true;
+ return domainInfoDatabase;
+ } catch (error) {
+ console.error('加载域名信息数据库失败,错误信息:', error.message);
+ console.error('错误堆栈:', error.stack);
+ domainInfoDatabase = { domains: {}, categories: {} };
+ return domainInfoDatabase;
+ } finally {
+ domainInfoLoading = false;
+ console.log('域名信息数据库加载完成');
+ }
+}
+
+// 检查域名是否在跟踪器数据库中,并返回跟踪器信息
+async function isDomainInTrackerDatabase(domain) {
+ if (!trackersDatabase || !trackersLoaded) {
+ await loadTrackersDatabase();
+ }
+
+ if (!trackersDatabase || !trackersDatabase.trackers) {
+ return null;
+ }
+
+ // 检查域名是否直接作为跟踪器键存在
+ if (trackersDatabase.trackers.hasOwnProperty(domain)) {
+ return trackersDatabase.trackers[domain];
+ }
+
+ // 检查域名是否在跟踪器URL中
+ for (const trackerKey in trackersDatabase.trackers) {
+ if (trackersDatabase.trackers.hasOwnProperty(trackerKey)) {
+ const tracker = trackersDatabase.trackers[trackerKey];
+ if (tracker && tracker.url) {
+ try {
+ const trackerUrl = new URL(tracker.url);
+ if (trackerUrl.hostname === domain) {
+ return tracker;
+ }
+ } catch (e) {
+ // 忽略无效URL
+ }
+ }
+ }
+ }
+
+ return null;
+}
+
+// 根据域名查找对应的网站信息
+async function getDomainInfo(domain) {
+ console.log('开始查找域名信息,域名:', domain);
+
+ if (!domainInfoDatabase || !domainInfoLoaded) {
+ console.log('域名信息数据库未加载,调用loadDomainInfoDatabase');
+ await loadDomainInfoDatabase();
+ }
+
+ if (!domainInfoDatabase || !domainInfoDatabase.domains) {
+ console.error('域名信息数据库无效或为空');
+ return null;
+ }
+
+ // 规范化域名,移除可能的端口号
+ const normalizedDomain = domain.replace(/:\d+$/, '').toLowerCase();
+ console.log('规范化后的域名:', normalizedDomain);
+
+ // 遍历所有公司
+ console.log('开始遍历公司,总公司数:', Object.keys(domainInfoDatabase.domains).length);
+ for (const companyKey in domainInfoDatabase.domains) {
+ if (domainInfoDatabase.domains.hasOwnProperty(companyKey)) {
+ console.log('检查公司:', companyKey);
+ const companyData = domainInfoDatabase.domains[companyKey];
+ const companyName = companyData.company || companyKey;
+
+ // 遍历公司下的所有网站
+ for (const websiteKey in companyData) {
+ if (companyData.hasOwnProperty(websiteKey) && websiteKey !== 'company') {
+ console.log(' 检查网站:', websiteKey);
+ const website = companyData[websiteKey];
+
+ // 检查域名是否匹配网站的URL
+ if (website.url) {
+ // 处理字符串类型的URL
+ if (typeof website.url === 'string') {
+ console.log(' 检查字符串URL:', website.url);
+ if (isDomainMatch(website.url, normalizedDomain)) {
+ console.log(' 匹配成功,返回网站信息');
+ return {
+ name: website.name,
+ icon: website.icon,
+ categoryId: website.categoryId,
+ categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
+ company: companyName
+ };
+ }
+ }
+ // 处理对象类型的URL
+ else if (typeof website.url === 'object') {
+ console.log(' 检查对象类型URL,包含', Object.keys(website.url).length, '个URL');
+ for (const urlKey in website.url) {
+ if (website.url.hasOwnProperty(urlKey)) {
+ const urlValue = website.url[urlKey];
+ console.log(' 检查URL', urlKey, ':', urlValue);
+ if (isDomainMatch(urlValue, normalizedDomain)) {
+ console.log(' 匹配成功,返回网站信息');
+ return {
+ name: website.name,
+ icon: website.icon,
+ categoryId: website.categoryId,
+ categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
+ company: companyName
+ };
+ }
+ }
+ }
+ }
+ } else {
+ console.log(' 网站没有URL属性');
+ }
+ }
+ }
+ }
+ }
+
+ console.log('未找到匹配的域名信息');
+ return null;
+}
+
+// 检查域名是否匹配
+function isDomainMatch(urlValue, targetDomain) {
+ console.log(' 开始匹配URL:', urlValue, '目标域名:', targetDomain);
+
+ try {
+ // 尝试将URL值解析为完整URL
+ console.log(' 尝试解析URL为完整URL');
+ const url = new URL(urlValue);
+ const hostname = url.hostname.toLowerCase();
+ console.log(' 解析成功,主机名:', hostname);
+
+ // 只匹配完整域名,不进行主域名匹配
+ // 这是为了避免同一个公司下的不同网站(如微信和腾讯视频)因为主域名相同而错误匹配
+ if (hostname === targetDomain) {
+ console.log(' 完整域名匹配成功');
+ return true;
+ } else {
+ console.log(' 完整域名不匹配');
+ return false;
+ }
+ } catch (e) {
+ console.log(' 解析URL失败,将其视为纯域名处理,错误信息:', e.message);
+ // 如果是纯域名而不是完整URL
+ const urlDomain = urlValue.toLowerCase();
+ console.log(' 处理为纯域名:', urlDomain);
+
+ // 只匹配完整域名,不进行主域名匹配
+ if (urlDomain === targetDomain) {
+ console.log(' 完整域名匹配成功');
+ return true;
+ } else {
+ console.log(' 完整域名不匹配');
+ return false;
+ }
+ }
+}
+
+// 提取主域名
+function extractPrimaryDomain(domain) {
+ console.log(' 开始提取主域名,原始域名:', domain);
+
+ const parts = domain.split('.');
+ console.log(' 域名分割为:', parts);
+
+ if (parts.length <= 2) {
+ console.log(' 域名长度小于等于2,直接返回:', domain);
+ return domain;
+ }
+
+ // 处理常见的三级域名
+ const commonSubdomains = ['www', 'mail', 'news', 'map', 'image', 'video', 'cdn', 'api', 'blog', 'shop', 'cloud', 'docs', 'help', 'support', 'dev', 'test', 'staging'];
+ console.log(' 检查是否为常见三级域名');
+
+ if (commonSubdomains.includes(parts[0])) {
+ const result = parts.slice(1).join('.');
+ console.log(' 是常见三级域名,返回:', result);
+ return result;
+ }
+
+ // 处理特殊情况,如co.uk, co.jp等
+ const countryTLDs = ['co.uk', 'co.jp', 'co.kr', 'co.in', 'co.ca', 'co.au', 'co.nz', 'co.th', 'co.sg', 'co.my', 'co.id', 'co.za', 'com.cn', 'org.cn', 'net.cn', 'gov.cn', 'edu.cn'];
+ console.log(' 检查是否为特殊国家TLD');
+
+ for (const tld of countryTLDs) {
+ if (domain.endsWith('.' + tld)) {
+ const mainParts = domain.split('.');
+ const result = mainParts.slice(-tld.split('.').length - 1).join('.');
+ console.log(' 是特殊国家TLD,返回:', result);
+ return result;
+ }
+ }
+
+ // 默认情况:返回最后两个部分
+ const result = parts.slice(-2).join('.');
+ console.log(' 默认情况,返回最后两个部分:', result);
+ return result;
+}
+
+// 初始化查询日志页面
+function initLogsPage() {
+ console.log('初始化查询日志页面');
+
+ // 加载日志统计数据
+ loadLogsStats();
+
+ // 加载日志详情
+ loadLogs();
+
+ // 初始化图表
+ initLogsChart();
+
+ // 绑定事件
+ bindLogsEvents();
+
+ // 初始化日志详情弹窗
+ initLogDetailModal();
+
+ // 建立WebSocket连接,用于实时更新统计数据和图表
+ connectLogsWebSocket();
+
+ // 窗口大小改变时重新加载日志表格
+ window.addEventListener('resize', handleWindowResize);
+
+ // 在页面卸载时清理资源
+ window.addEventListener('beforeunload', cleanupLogsResources);
+}
+
+// 处理窗口大小改变
+function handleWindowResize() {
+ // 重新加载日志表格,以适应新的屏幕尺寸
+ loadLogs();
+}
+
+// 清理资源
+function cleanupLogsResources() {
+ // 清除WebSocket连接
+ if (logsWsConnection) {
+ logsWsConnection.close();
+ logsWsConnection = null;
+ }
+
+ // 清除重连计时器
+ if (logsWsReconnectTimer) {
+ clearTimeout(logsWsReconnectTimer);
+ logsWsReconnectTimer = null;
+ }
+
+ // 清除窗口大小改变事件监听器
+ window.removeEventListener('resize', handleWindowResize);
+}
+
+// 绑定事件
+function bindLogsEvents() {
+ // 搜索按钮
+ const searchBtn = document.getElementById('logs-search-btn');
+ if (searchBtn) {
+ searchBtn.addEventListener('click', () => {
+ currentSearch = document.getElementById('logs-search').value;
+ currentPage = 1;
+ loadLogs();
+ });
+ }
+
+ // 搜索框回车事件
+ const searchInput = document.getElementById('logs-search');
+ if (searchInput) {
+ searchInput.addEventListener('keypress', (e) => {
+ if (e.key === 'Enter') {
+ currentSearch = searchInput.value;
+ currentPage = 1;
+ loadLogs();
+ }
+ });
+ }
+
+ // 结果过滤
+ const resultFilter = document.getElementById('logs-result-filter');
+ if (resultFilter) {
+ resultFilter.addEventListener('change', () => {
+ currentFilter = resultFilter.value;
+ currentPage = 1;
+ loadLogs();
+ });
+ }
+
+ // 自定义记录数量
+ const perPageSelect = document.getElementById('logs-per-page');
+ if (perPageSelect) {
+ perPageSelect.addEventListener('change', () => {
+ logsPerPage = parseInt(perPageSelect.value);
+ currentPage = 1;
+ loadLogs();
+ });
+ }
+
+ // 分页按钮
+ const prevBtn = document.getElementById('logs-prev-page');
+ const nextBtn = document.getElementById('logs-next-page');
+
+ if (prevBtn) {
+ prevBtn.addEventListener('click', () => {
+ if (currentPage > 1) {
+ currentPage--;
+ loadLogs();
+ }
+ });
+ }
+
+ if (nextBtn) {
+ nextBtn.addEventListener('click', () => {
+ if (currentPage < totalPages) {
+ currentPage++;
+ loadLogs();
+ }
+ });
+ }
+
+ // 页码跳转
+ const pageInput = document.getElementById('logs-page-input');
+ const goBtn = document.getElementById('logs-go-page');
+
+ if (pageInput) {
+ // 页码输入框回车事件
+ pageInput.addEventListener('keypress', (e) => {
+ if (e.key === 'Enter') {
+ const page = parseInt(pageInput.value);
+ if (page >= 1 && page <= totalPages) {
+ currentPage = page;
+ loadLogs();
+ }
+ }
+ });
+ }
+
+ if (goBtn) {
+ // 前往按钮点击事件
+ goBtn.addEventListener('click', () => {
+ const page = parseInt(pageInput.value);
+ if (page >= 1 && page <= totalPages) {
+ currentPage = page;
+ loadLogs();
+ }
+ });
+ }
+
+ // 时间范围切换
+ const timeRangeBtns = document.querySelectorAll('.time-range-btn');
+ timeRangeBtns.forEach(btn => {
+ btn.addEventListener('click', () => {
+ // 更新按钮样式
+ timeRangeBtns.forEach(b => {
+ b.classList.remove('bg-primary', 'text-white');
+ b.classList.add('bg-gray-200', 'text-gray-700');
+ });
+ btn.classList.remove('bg-gray-200', 'text-gray-700');
+ btn.classList.add('bg-primary', 'text-white');
+
+ // 更新图表
+ const range = btn.getAttribute('data-range');
+ updateLogsChart(range);
+ });
+ });
+
+ // 刷新按钮事件
+ const refreshBtn = document.getElementById('logs-refresh-btn');
+ if (refreshBtn) {
+ refreshBtn.addEventListener('click', () => {
+ // 重新加载日志
+ currentPage = 1;
+ loadLogs();
+ });
+ }
+
+ // 排序按钮事件
+ const sortHeaders = document.querySelectorAll('th[data-sort]');
+ sortHeaders.forEach(header => {
+ header.addEventListener('click', () => {
+ const sortField = header.getAttribute('data-sort');
+
+ // 如果点击的是当前排序字段,则切换排序方向
+ if (sortField === currentSortField) {
+ currentSortDirection = currentSortDirection === 'asc' ? 'desc' : 'asc';
+ } else {
+ // 否则,设置新的排序字段,默认降序
+ currentSortField = sortField;
+ currentSortDirection = 'desc';
+ }
+
+ // 更新排序图标
+ updateSortIcons();
+
+ // 重新加载日志
+ currentPage = 1;
+ loadLogs();
+ });
+ });
+}
+
+// 更新排序图标
+function updateSortIcons() {
+ const sortHeaders = document.querySelectorAll('th[data-sort]');
+ sortHeaders.forEach(header => {
+ const sortField = header.getAttribute('data-sort');
+ const icon = header.querySelector('i');
+
+ // 重置所有图标
+ icon.className = 'fa fa-sort ml-1 text-xs';
+
+ // 设置当前排序字段的图标
+ if (sortField === currentSortField) {
+ if (currentSortDirection === 'asc') {
+ icon.className = 'fa fa-sort-asc ml-1 text-xs';
+ } else {
+ icon.className = 'fa fa-sort-desc ml-1 text-xs';
+ }
+ }
+ });
+}
+
+// 加载日志统计数据
+function loadLogsStats() {
+ // 使用封装的apiRequest函数进行API调用
+ apiRequest('/logs/stats')
+ .then(data => {
+ if (data && data.error) {
+ console.error('加载日志统计数据失败:', data.error);
+ return;
+ }
+
+ // 更新统计卡片
+ document.getElementById('logs-total-queries').textContent = data.totalQueries;
+ document.getElementById('logs-avg-response-time').textContent = data.avgResponseTime.toFixed(2) + 'ms';
+ document.getElementById('logs-active-ips').textContent = data.activeIPs;
+
+ // 计算屏蔽率
+ const blockRate = data.totalQueries > 0 ? (data.blockedQueries / data.totalQueries * 100).toFixed(1) : '0';
+ document.getElementById('logs-block-rate').textContent = blockRate + '%';
+ })
+ .catch(error => {
+ console.error('加载日志统计数据失败:', error);
+ });
+}
+
+// 加载日志详情
+function loadLogs() {
+ // 显示加载状态
+ const loadingEl = document.getElementById('logs-loading');
+ if (loadingEl) {
+ loadingEl.classList.remove('hidden');
+ }
+
+ // 构建请求URL
+ let endpoint = `/logs/query?limit=${logsPerPage}&offset=${(currentPage - 1) * logsPerPage}`;
+
+ // 添加过滤条件
+ if (currentFilter) {
+ endpoint += `&result=${currentFilter}`;
+ }
+
+ // 添加搜索条件
+ if (currentSearch) {
+ endpoint += `&search=${encodeURIComponent(currentSearch)}`;
+ }
+
+ // 添加排序条件
+ if (currentSortField) {
+ endpoint += `&sort=${currentSortField}&direction=${currentSortDirection}`;
+ }
+
+ // 使用封装的apiRequest函数进行API调用
+ apiRequest(endpoint)
+ .then(data => {
+ if (data && data.error) {
+ console.error('加载日志详情失败:', data.error);
+ // 隐藏加载状态
+ if (loadingEl) {
+ loadingEl.classList.add('hidden');
+ }
+ return;
+ }
+
+ // 加载日志总数
+ return apiRequest('/logs/count').then(countData => {
+ return { logs: data, count: countData.count };
+ });
+ })
+ .then(result => {
+ if (!result || !result.logs) {
+ console.error('加载日志详情失败: 无效的响应数据');
+ // 隐藏加载状态
+ if (loadingEl) {
+ loadingEl.classList.add('hidden');
+ }
+ return;
+ }
+
+ const logs = result.logs;
+ const totalLogs = result.count;
+
+ // 计算总页数
+ totalPages = Math.ceil(totalLogs / logsPerPage);
+
+ // 更新日志表格
+ updateLogsTable(logs);
+
+ // 绑定操作按钮事件
+ bindActionButtonsEvents();
+
+ // 更新分页信息
+ updateLogsPagination();
+
+ // 隐藏加载状态
+ if (loadingEl) {
+ loadingEl.classList.add('hidden');
+ }
+ })
+ .catch(error => {
+ console.error('加载日志详情失败:', error);
+
+ // 隐藏加载状态
+ if (loadingEl) {
+ loadingEl.classList.add('hidden');
+ }
+ });
+}
+
+// 更新日志表格
+async function updateLogsTable(logs) {
+ const tableBody = document.getElementById('logs-table-body');
+ if (!tableBody) return;
+
+ // 清空表格
+ tableBody.innerHTML = '';
+
+ if (logs.length === 0) {
+ // 显示空状态
+ const emptyRow = document.createElement('tr');
+ emptyRow.innerHTML = `
+
+ `;
+ tableBody.appendChild(emptyRow);
+ return;
+ }
+
+ // 检测是否为移动设备
+ const isMobile = window.innerWidth <= 768;
+
+ // 填充表格
+ for (const log of logs) {
+ const row = document.createElement('tr');
+ row.className = 'border-b border-gray-100 hover:bg-gray-50 transition-colors';
+
+ // 格式化时间 - 两行显示,第一行显示时间,第二行显示日期
+ const time = new Date(log.timestamp);
+ const formattedDate = time.toLocaleDateString('zh-CN', {
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit'
+ });
+ const formattedTime = time.toLocaleTimeString('zh-CN', {
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit'
+ });
+
+ // 根据结果添加不同的背景色
+ let rowClass = '';
+ switch (log.result) {
+ case 'blocked':
+ rowClass = 'bg-red-50'; // 淡红色填充
+ break;
+ case 'allowed':
+ // 检查是否是规则允许项目
+ if (log.blockRule && log.blockRule.includes('allow')) {
+ rowClass = 'bg-green-50'; // 规则允许项目用淡绿色填充
+ } else {
+ rowClass = ''; // 允许的不填充
+ }
+ break;
+ default:
+ rowClass = '';
+ }
+
+ // 添加行背景色
+ if (rowClass) {
+ row.classList.add(rowClass);
+ }
+
+ // 添加被屏蔽或允许显示,并增加颜色
+ let statusText = '';
+ let statusClass = '';
+ switch (log.result) {
+ case 'blocked':
+ statusText = '被屏蔽';
+ statusClass = 'text-danger';
+ break;
+ case 'allowed':
+ statusText = '允许';
+ statusClass = 'text-success';
+ break;
+ case 'error':
+ statusText = '错误';
+ statusClass = 'text-warning';
+ break;
+ default:
+ statusText = '';
+ statusClass = '';
+ }
+
+ // 检查域名是否在跟踪器数据库中
+ const trackerInfo = await isDomainInTrackerDatabase(log.domain);
+ const isTracker = trackerInfo !== null;
+
+ // 构建行内容 - 根据设备类型决定显示内容
+ // 添加缓存状态显示
+ const cacheStatusClass = log.fromCache ? 'text-primary' : 'text-gray-500';
+ const cacheStatusText = log.fromCache ? '缓存' : '非缓存';
+
+ // 检查域名是否被拦截
+ const isBlocked = log.result === 'blocked';
+
+ // 构建跟踪器浮窗内容
+ const trackerTooltip = isTracker ? `
+
+ ` : '';
+
+ if (isMobile) {
+ // 移动设备只显示时间和请求信息
+ row.innerHTML = `
+
+ `;
+ } else {
+ // 桌面设备显示完整信息
+ row.innerHTML = `
+
+ `;
+ }
+
+ // 添加跟踪器图标悬停事件
+ if (isTracker) {
+ const iconContainer = row.querySelector('.tracker-icon-container');
+ const tooltip = iconContainer.querySelector('.tracker-tooltip');
+ if (iconContainer && tooltip) {
+ tooltip.style.display = 'none';
+
+ iconContainer.addEventListener('mouseenter', () => {
+ tooltip.style.display = 'block';
+ });
+
+ iconContainer.addEventListener('mouseleave', () => {
+ tooltip.style.display = 'none';
+ });
+ }
+ }
+
+ // 绑定按钮事件
+ const blockBtn = row.querySelector('.block-btn');
+ if (blockBtn) {
+ blockBtn.addEventListener('click', (e) => {
+ e.preventDefault();
+ const domain = e.currentTarget.dataset.domain;
+ blockDomain(domain);
+ });
+ }
+
+ const unblockBtn = row.querySelector('.unblock-btn');
+ if (unblockBtn) {
+ unblockBtn.addEventListener('click', (e) => {
+ e.preventDefault();
+ const domain = e.currentTarget.dataset.domain;
+ unblockDomain(domain);
+ });
+ }
+
+ // 绑定日志详情点击事件
+ row.addEventListener('click', (e) => {
+ // 如果点击的是按钮,不触发详情弹窗
+ if (e.target.closest('button')) {
+ return;
+ }
+ console.log('Row clicked, log object:', log);
+ showLogDetailModal(log);
+ });
+
+ tableBody.appendChild(row);
+ }
+}
+
+// 更新分页信息
+function updateLogsPagination() {
+ // 更新页码显示
+ document.getElementById('logs-current-page').textContent = currentPage;
+ document.getElementById('logs-total-pages').textContent = totalPages;
+
+ // 更新页码输入框
+ const pageInput = document.getElementById('logs-page-input');
+ if (pageInput) {
+ pageInput.max = totalPages;
+ pageInput.value = currentPage;
+ }
+
+ // 更新按钮状态
+ const prevBtn = document.getElementById('logs-prev-page');
+ const nextBtn = document.getElementById('logs-next-page');
+
+ if (prevBtn) {
+ prevBtn.disabled = currentPage === 1;
+ }
+
+ if (nextBtn) {
+ nextBtn.disabled = currentPage === totalPages;
+ }
+}
+
+// 初始化日志图表
+function initLogsChart() {
+ const ctx = document.getElementById('logs-trend-chart');
+ if (!ctx) return;
+
+ // 获取24小时统计数据
+ apiRequest('/hourly-stats')
+ .then(data => {
+ if (data && data.error) {
+ console.error('初始化日志图表失败:', data.error);
+ return;
+ }
+
+ // 创建图表
+ logsChart = new Chart(ctx, {
+ type: 'line',
+ data: {
+ labels: data.labels,
+ datasets: [{
+ label: '查询数',
+ data: data.data,
+ borderColor: '#3b82f6',
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
+ tension: 0.4,
+ fill: true
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ plugins: {
+ legend: {
+ display: true,
+ position: 'top'
+ },
+ tooltip: {
+ mode: 'index',
+ intersect: false
+ }
+ },
+ scales: {
+ y: {
+ beginAtZero: true,
+ ticks: {
+ precision: 0
+ }
+ }
+ }
+ }
+ });
+ })
+ .catch(error => {
+ console.error('初始化日志图表失败:', error);
+ });
+}
+
+// 更新日志图表
+function updateLogsChart(range) {
+ if (!logsChart) return;
+
+ let endpoint = '';
+ switch (range) {
+ case '24h':
+ endpoint = '/hourly-stats';
+ break;
+ case '7d':
+ endpoint = '/daily-stats';
+ break;
+ case '30d':
+ endpoint = '/monthly-stats';
+ break;
+ default:
+ endpoint = '/hourly-stats';
+ }
+
+ // 使用封装的apiRequest函数进行API调用
+ apiRequest(endpoint)
+ .then(data => {
+ if (data && data.error) {
+ console.error('更新日志图表失败:', data.error);
+ return;
+ }
+
+ // 更新图表数据
+ logsChart.data.labels = data.labels;
+ logsChart.data.datasets[0].data = data.data;
+ logsChart.update();
+ })
+ .catch(error => {
+ console.error('更新日志图表失败:', error);
+ });
+}
+
+// 建立WebSocket连接
+function connectLogsWebSocket() {
+ try {
+ // 构建WebSocket URL
+ const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
+ const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
+
+ console.log('正在连接WebSocket:', wsUrl);
+
+ // 创建WebSocket连接
+ logsWsConnection = new WebSocket(wsUrl);
+
+ // 连接打开事件
+ logsWsConnection.onopen = function() {
+ console.log('WebSocket连接已建立');
+ };
+
+ // 接收消息事件
+ logsWsConnection.onmessage = function(event) {
+ try {
+ const data = JSON.parse(event.data);
+
+ if (data.type === 'initial_data' || data.type === 'stats_update') {
+ console.log('收到实时数据更新');
+ // 只更新统计数据,不更新日志详情
+ updateLogsStatsFromWebSocket(data.data);
+ }
+ } catch (error) {
+ console.error('处理WebSocket消息失败:', error);
+ }
+ };
+
+ // 连接关闭事件
+ logsWsConnection.onclose = function(event) {
+ console.warn('WebSocket连接已关闭,代码:', event.code);
+ logsWsConnection = null;
+
+ // 设置重连
+ setupLogsReconnect();
+ };
+
+ // 连接错误事件
+ logsWsConnection.onerror = function(error) {
+ console.error('WebSocket连接错误:', error);
+ };
+
+ } catch (error) {
+ console.error('创建WebSocket连接失败:', error);
+ }
+}
+
+// 设置重连逻辑
+function setupLogsReconnect() {
+ if (logsWsReconnectTimer) {
+ return; // 已经有重连计时器在运行
+ }
+
+ const reconnectDelay = 5000; // 5秒后重连
+ console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
+
+ logsWsReconnectTimer = setTimeout(() => {
+ connectLogsWebSocket();
+ }, reconnectDelay);
+}
+
+// 从WebSocket更新日志统计数据
+function updateLogsStatsFromWebSocket(stats) {
+ try {
+ // 更新统计卡片
+ if (stats.dns) {
+ // 适配不同的数据结构
+ const totalQueries = stats.dns.Queries || 0;
+ const blockedQueries = stats.dns.Blocked || 0;
+ const allowedQueries = stats.dns.Allowed || 0;
+ const errorQueries = stats.dns.Errors || 0;
+ const avgResponseTime = stats.dns.AvgResponseTime || 0;
+ const activeIPs = stats.activeIPs || Object.keys(stats.dns.SourceIPs || {}).length;
+
+ // 更新统计卡片
+ document.getElementById('logs-total-queries').textContent = totalQueries;
+ document.getElementById('logs-avg-response-time').textContent = avgResponseTime.toFixed(2) + 'ms';
+ document.getElementById('logs-active-ips').textContent = activeIPs;
+
+ // 计算屏蔽率
+ const blockRate = totalQueries > 0 ? (blockedQueries / totalQueries * 100).toFixed(1) : '0';
+ document.getElementById('logs-block-rate').textContent = blockRate + '%';
+ }
+ } catch (error) {
+ console.error('从WebSocket更新日志统计数据失败:', error);
+ }
+}
+
+// 拦截域名
+async function blockDomain(domain) {
+ try {
+ console.log(`开始拦截域名: ${domain}`);
+
+ // 创建拦截规则,使用AdBlock Plus格式
+ const blockRule = `||${domain}^`;
+ console.log(`创建的拦截规则: ${blockRule}`);
+
+ // 调用API添加拦截规则
+ console.log(`调用API添加拦截规则,路径: /shield, 方法: POST`);
+ const response = await apiRequest('/shield', 'POST', { rule: blockRule });
+
+ console.log(`API响应:`, response);
+
+ // 处理不同的响应格式
+ if (response && (response.success || response.status === 'success')) {
+ // 重新加载日志,显示更新后的状态
+ loadLogs();
+
+ // 刷新规则列表
+ refreshRulesList();
+
+ // 显示成功通知
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`已成功拦截域名: ${domain}`, 'success');
+ }
+ } else {
+ const errorMsg = response ? (response.message || '添加拦截规则失败') : '添加拦截规则失败: 无效的API响应';
+ console.error(`拦截域名失败: ${errorMsg}`);
+ throw new Error(errorMsg);
+ }
+ } catch (error) {
+ console.error('拦截域名失败:', error);
+
+ // 显示错误通知
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`拦截域名失败: ${error.message}`, 'danger');
+ }
+ }
+}
+
+// 绑定操作按钮事件
+function bindActionButtonsEvents() {
+ // 绑定拦截按钮事件
+ const blockBtns = document.querySelectorAll('.block-btn');
+ blockBtns.forEach(btn => {
+ btn.addEventListener('click', async (e) => {
+ e.preventDefault();
+ const domain = e.currentTarget.dataset.domain;
+ await blockDomain(domain);
+ });
+ });
+
+ // 绑定放行按钮事件
+ const unblockBtns = document.querySelectorAll('.unblock-btn');
+ unblockBtns.forEach(btn => {
+ btn.addEventListener('click', async (e) => {
+ e.preventDefault();
+ const domain = e.currentTarget.dataset.domain;
+ await unblockDomain(domain);
+ });
+ });
+}
+
+// 刷新规则列表
+async function refreshRulesList() {
+ try {
+ // 调用API重新加载规则
+ const response = await apiRequest('/shield', 'GET');
+
+ if (response) {
+ // 处理规则列表响应
+ let allRules = [];
+ if (response && typeof response === 'object') {
+ // 合并所有类型的规则到一个数组
+ if (Array.isArray(response.domainRules)) allRules = allRules.concat(response.domainRules);
+ if (Array.isArray(response.domainExceptions)) allRules = allRules.concat(response.domainExceptions);
+ if (Array.isArray(response.regexRules)) allRules = allRules.concat(response.regexRules);
+ if (Array.isArray(response.regexExceptions)) allRules = allRules.concat(response.regexExceptions);
+ }
+
+ // 更新规则列表
+ if (window.rules) {
+ rules = allRules;
+ filteredRules = [...rules];
+
+ // 更新规则数量统计
+ if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
+ window.updateRulesCount(rules.length);
+ }
+ }
+ }
+ } catch (error) {
+ console.error('刷新规则列表失败:', error);
+ }
+}
+
+// 放行域名
+async function unblockDomain(domain) {
+ try {
+ console.log(`开始放行域名: ${domain}`);
+
+ // 创建放行规则,使用AdBlock Plus格式
+ const allowRule = `@@||${domain}^`;
+ console.log(`创建的放行规则: ${allowRule}`);
+
+ // 调用API添加放行规则
+ console.log(`调用API添加放行规则,路径: /shield, 方法: POST`);
+ const response = await apiRequest('/shield', 'POST', { rule: allowRule });
+
+ console.log(`API响应:`, response);
+
+ // 处理不同的响应格式
+ if (response && (response.success || response.status === 'success')) {
+ // 重新加载日志,显示更新后的状态
+ loadLogs();
+
+ // 刷新规则列表
+ refreshRulesList();
+
+ // 显示成功通知
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`已成功放行域名: ${domain}`, 'success');
+ }
+ } else {
+ const errorMsg = response ? (response.message || '添加放行规则失败') : '添加放行规则失败: 无效的API响应';
+ console.error(`放行域名失败: ${errorMsg}`);
+ throw new Error(errorMsg);
+ }
+ } catch (error) {
+ console.error('放行域名失败:', error);
+
+ // 显示错误通知
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`放行域名失败: ${error.message}`, 'danger');
+ }
+ }
+}
+
+// 独立的DNS记录格式化函数
+function formatDNSRecords(log, result) {
+ if (result === 'blocked') return '无';
+
+ let records = '';
+ const sources = [
+ log.answers,
+ log.answer,
+ log.Records,
+ log.records,
+ log.response
+ ];
+
+ for (const source of sources) {
+ if (records) break;
+ if (!source || source === '无') continue;
+
+ // 处理数组类型
+ if (Array.isArray(source)) {
+ records = source.map(answer => {
+ const type = answer.type || answer.Type || '未知';
+ let value = answer.value || answer.Value || answer.data || answer.Data || '未知';
+ const ttl = answer.TTL || answer.ttl || answer.expires || '未知';
+
+ // 增强的记录值提取逻辑
+ if (typeof value === 'string') {
+ value = value.trim();
+ // 处理制表符分隔的格式
+ if (value.includes('\t') || value.includes('\\t')) {
+ const parts = value.replace(/\\t/g, '\t').split('\t');
+ if (parts.length >= 4) {
+ value = parts[parts.length - 1].trim();
+ }
+ }
+ // 处理JSON格式
+ else if (value.startsWith('{') && value.endsWith('}')) {
+ try {
+ const parsed = JSON.parse(value);
+ value = parsed.data || parsed.value || value;
+ } catch (e) {}
+ }
+ }
+
+ return `${type}: ${value} (ttl=${ttl})`;
+ }).join('\n').trim();
+ }
+ // 处理字符串类型
+ else if (typeof source === 'string') {
+ // 尝试解析为JSON数组
+ if (source.startsWith('[') && source.endsWith(']')) {
+ try {
+ const parsed = JSON.parse(source);
+ if (Array.isArray(parsed)) {
+ records = parsed.map(answer => {
+ const type = answer.type || answer.Type || '未知';
+ let value = answer.value || answer.Value || answer.data || answer.Data || '未知';
+ const ttl = answer.TTL || answer.ttl || answer.expires || '未知';
+
+ if (typeof value === 'string') {
+ value = value.trim();
+ }
+
+ return `${type}: ${value} (ttl=${ttl})`;
+ }).join('\n').trim();
+ }
+ } catch (e) {
+ // 解析失败,尝试直接格式化
+ records = formatDNSString(source);
+ }
+ } else {
+ // 直接格式化字符串
+ records = formatDNSString(source);
+ }
+ }
+ }
+
+ return records || '无解析记录';
+}
+
+// 格式化DNS字符串记录
+function formatDNSString(str) {
+ // 处理可能的转义字符并分割行
+ const recordLines = str.split(/\r?\n/).map(line => line.replace(/^\s+/, '')).filter(line => line.trim() !== '');
+
+ return recordLines.map(line => {
+ // 检查是否已经是标准格式
+ if (line.includes(':') && line.includes('(')) {
+ return line;
+ }
+ // 尝试解析为标准DNS格式
+ const parts = line.split(/\s+/);
+ if (parts.length >= 5) {
+ const type = parts[3];
+ const value = parts.slice(4).join(' ');
+ const ttl = parts[1];
+ return `${type}: ${value} (ttl=${ttl})`;
+ }
+ // 无法解析,返回原始行但移除前导空格
+ return line.replace(/^\s+/, '');
+ }).join('\n');
+}
+
+// 显示日志详情弹窗
+async function showLogDetailModal(log) {
+ console.log('showLogDetailModal called with log:', JSON.stringify(log, null, 2)); // 输出完整的log对象
+
+ if (!log) {
+ console.error('No log data provided!');
+ return;
+ }
+
+ try {
+ // 安全获取log属性,提供默认值
+ const timestamp = log.timestamp ? new Date(log.timestamp) : null;
+ const dateStr = timestamp ? timestamp.toLocaleDateString() : '未知';
+ const timeStr = timestamp ? timestamp.toLocaleTimeString() : '未知';
+ const domain = log.domain || '未知';
+ const queryType = log.queryType || '未知';
+ const result = log.result || '未知';
+ const responseTime = log.responseTime || '未知';
+ const clientIP = log.clientIP || '未知';
+ const location = log.location || '未知';
+ const fromCache = log.fromCache || false;
+ const dnssec = log.dnssec || false;
+ const edns = log.edns || false;
+ const dnsServer = log.dnsServer || '无';
+ const dnssecServer = log.dnssecServer || '无';
+ const blockRule = log.blockRule || '无';
+
+ // 检查域名是否在跟踪器数据库中
+ const trackerInfo = await isDomainInTrackerDatabase(log.domain);
+ const isTracker = trackerInfo !== null;
+
+ // 获取域名信息
+ const domainInfo = await getDomainInfo(domain);
+
+ // 格式化DNS解析记录
+ const dnsRecords = formatDNSRecords(log, result);
+
+ // 创建模态框容器
+ const modalContainer = document.createElement('div');
+ modalContainer.className = 'fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4 animate-fade-in';
+ modalContainer.style.zIndex = '9999';
+
+ // 创建模态框内容
+ const modalContent = document.createElement('div');
+ modalContent.className = 'bg-white rounded-xl shadow-2xl w-full max-w-2xl max-h-[90vh] overflow-y-auto animate-slide-in';
+
+ // 创建标题栏
+ const header = document.createElement('div');
+ header.className = 'sticky top-0 bg-white border-b border-gray-200 px-6 py-4 flex justify-between items-center';
+
+ const title = document.createElement('h3');
+ title.className = 'text-xl font-semibold text-gray-900';
+ title.textContent = '日志详情';
+
+ const closeButton = document.createElement('button');
+ closeButton.innerHTML = '
';
+ closeButton.className = 'text-gray-500 hover:text-gray-700 focus:outline-none transition-colors';
+ closeButton.onclick = () => closeModal();
+
+ header.appendChild(title);
+ header.appendChild(closeButton);
+
+ // 创建内容区域
+ const content = document.createElement('div');
+ content.className = 'p-6 space-y-6';
+
+ // 基本信息部分
+ const basicInfo = document.createElement('div');
+ basicInfo.className = 'space-y-4';
+
+ const basicInfoTitle = document.createElement('h4');
+ basicInfoTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
+ basicInfoTitle.textContent = '基本信息';
+
+ const basicInfoGrid = document.createElement('div');
+ basicInfoGrid.className = 'grid grid-cols-1 md:grid-cols-2 gap-4';
+
+ // 添加基本信息项
+ basicInfoGrid.innerHTML = `
+
+ `;
+
+ // DNS特性
+ const dnsFeatures = document.createElement('div');
+ dnsFeatures.className = 'col-span-1 md:col-span-2 space-y-1';
+ dnsFeatures.innerHTML = `
+
+ `;
+
+ // 域名信息
+ const domainInfoDiv = document.createElement('div');
+ domainInfoDiv.className = 'col-span-1 md:col-span-2 space-y-1';
+ domainInfoDiv.innerHTML = `
+
+ `;
+
+ // 跟踪器信息
+ const trackerDiv = document.createElement('div');
+ trackerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
+ trackerDiv.innerHTML = `
+
+ `;
+
+ // 解析记录
+ const recordsDiv = document.createElement('div');
+ recordsDiv.className = 'col-span-1 md:col-span-2 space-y-1';
+ recordsDiv.innerHTML = `
+
+ `;
+
+ // DNS服务器
+ const dnsServerDiv = document.createElement('div');
+ dnsServerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
+ dnsServerDiv.innerHTML = `
+
+ `;
+
+ // DNSSEC专用服务器
+ const dnssecServerDiv = document.createElement('div');
+ dnssecServerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
+ dnssecServerDiv.innerHTML = `
+
+ `;
+
+ basicInfoGrid.appendChild(dnsFeatures);
+ basicInfoGrid.appendChild(domainInfoDiv);
+ basicInfoGrid.appendChild(trackerDiv);
+ basicInfoGrid.appendChild(recordsDiv);
+ basicInfoGrid.appendChild(dnsServerDiv);
+ basicInfoGrid.appendChild(dnssecServerDiv);
+
+ basicInfo.appendChild(basicInfoTitle);
+ basicInfo.appendChild(basicInfoGrid);
+
+ // 响应细节部分
+ const responseDetails = document.createElement('div');
+ responseDetails.className = 'space-y-4 pt-4 border-t border-gray-200';
+
+ const responseDetailsTitle = document.createElement('h4');
+ responseDetailsTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
+ responseDetailsTitle.textContent = '响应细节';
+
+ // 准备响应细节内容,根据条件添加规则信息
+ let responseDetailsHTML = `
+
+ `;
+
+ // 只有被屏蔽时才显示规则信息
+ if (result === 'blocked') {
+ responseDetailsHTML += `
+
+ `;
+ }
+
+ const responseGrid = document.createElement('div');
+ responseGrid.className = 'grid grid-cols-1 md:grid-cols-2 gap-4';
+ responseGrid.innerHTML = responseDetailsHTML;
+
+ responseDetails.appendChild(responseDetailsTitle);
+ responseDetails.appendChild(responseGrid);
+
+ // 客户端详情部分
+ const clientDetails = document.createElement('div');
+ clientDetails.className = 'space-y-4 pt-4 border-t border-gray-200';
+
+ const clientDetailsTitle = document.createElement('h4');
+ clientDetailsTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
+ clientDetailsTitle.textContent = '客户端详情';
+
+ const clientIPDiv = document.createElement('div');
+ clientIPDiv.className = 'space-y-1';
+ clientIPDiv.innerHTML = `
+
+ `;
+
+ clientDetails.appendChild(clientDetailsTitle);
+ clientDetails.appendChild(clientIPDiv);
+
+ // 组装内容
+ content.appendChild(basicInfo);
+ content.appendChild(responseDetails);
+ content.appendChild(clientDetails);
+
+ // 组装模态框
+ modalContent.appendChild(header);
+ modalContent.appendChild(content);
+ modalContainer.appendChild(modalContent);
+
+ // 添加到页面
+ document.body.appendChild(modalContainer);
+
+ // 关闭模态框函数
+ function closeModal() {
+ modalContainer.classList.add('animate-fade-out');
+ modalContent.classList.add('animate-slide-out');
+
+ // 等待动画结束后移除元素
+ setTimeout(() => {
+ document.body.removeChild(modalContainer);
+ }, 300);
+ }
+
+ // 点击外部关闭
+ modalContainer.addEventListener('click', (e) => {
+ if (e.target === modalContainer) {
+ closeModal();
+ }
+ });
+
+ // ESC键关闭
+ const handleEsc = (e) => {
+ if (e.key === 'Escape') {
+ closeModal();
+ document.removeEventListener('keydown', handleEsc);
+ }
+ };
+ document.addEventListener('keydown', handleEsc);
+
+ } catch (error) {
+ console.error('Error in showLogDetailModal:', error);
+
+ // 显示错误提示
+ const errorModal = document.createElement('div');
+ errorModal.className = 'fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4 animate-fade-in';
+ errorModal.style.zIndex = '9999';
+
+ const errorContent = document.createElement('div');
+ errorContent.className = 'bg-white rounded-xl shadow-2xl p-6 w-full max-w-md animate-slide-in';
+
+ errorContent.innerHTML = `
+
+ `;
+
+ errorModal.appendChild(errorContent);
+ document.body.appendChild(errorModal);
+
+ // 关闭错误模态框函数
+ function closeErrorModal() {
+ errorModal.classList.add('animate-fade-out');
+ errorContent.classList.add('animate-slide-out');
+
+ // 等待动画结束后移除元素
+ setTimeout(() => {
+ document.body.removeChild(errorModal);
+ }, 300);
+ }
+
+ // ESC键关闭错误模态框
+ const handleErrorEsc = (e) => {
+ if (e.key === 'Escape') {
+ closeErrorModal();
+ document.removeEventListener('keydown', handleErrorEsc);
+ }
+ };
+ document.addEventListener('keydown', handleErrorEsc);
+ }
+}
+
+// 关闭日志详情弹窗
+// 获取响应代码文本
+function getResponseCodeText(rcode) {
+ const rcodeMap = {
+ 0: 'NOERROR',
+ 1: 'FORMERR',
+ 2: 'SERVFAIL',
+ 3: 'NXDOMAIN',
+ 4: 'NOTIMP',
+ 5: 'REFUSED',
+ 6: 'YXDOMAIN',
+ 7: 'YXRRSET',
+ 8: 'NXRRSET',
+ 9: 'NOTAUTH',
+ 10: 'NOTZONE'
+ };
+ return rcodeMap[rcode] || `UNKNOWN(${rcode})`;
+}
+
+function closeLogDetailModal() {
+ const modal = document.getElementById('log-detail-modal');
+ modal.classList.add('hidden');
+}
+
+// 初始化日志详情弹窗事件
+function initLogDetailModal() {
+ // 关闭按钮事件
+ const closeBtn = document.getElementById('close-log-modal-btn');
+ if (closeBtn) {
+ closeBtn.addEventListener('click', closeLogDetailModal);
+ }
+
+ // 点击模态框外部关闭
+ const modal = document.getElementById('log-detail-modal');
+ if (modal) {
+ modal.addEventListener('click', (e) => {
+ if (e.target === modal) {
+ closeLogDetailModal();
+ }
+ });
+ }
+
+ // ESC键关闭
+ document.addEventListener('keydown', (e) => {
+ if (e.key === 'Escape') {
+ closeLogDetailModal();
+ }
+ });
+}
+
+// 定期更新日志统计数据(备用方案)
+setInterval(() => {
+ // 只有在查询日志页面时才更新
+ if (window.location.hash === '#logs') {
+ loadLogsStats();
+ // 不自动更新日志详情,只更新统计数据
+ }
+}, 30000); // 每30秒更新一次
diff --git a/staticbak/static/js/main.js b/staticbak/static/js/main.js
new file mode 100644
index 0000000..ef1daad
--- /dev/null
+++ b/staticbak/static/js/main.js
@@ -0,0 +1,405 @@
+// main.js - 主脚本文件
+
+// 页面导航功能
+function setupNavigation() {
+ // 侧边栏菜单项
+ const menuItems = document.querySelectorAll('nav a');
+ const contentSections = [
+ document.getElementById('dashboard-content'),
+ document.getElementById('shield-content'),
+ document.getElementById('hosts-content'),
+ document.getElementById('query-content'),
+ document.getElementById('logs-content'),
+ document.getElementById('config-content')
+ ];
+ const pageTitle = document.getElementById('page-title');
+
+ menuItems.forEach((item, index) => {
+ item.addEventListener('click', (e) => {
+ // 允许浏览器自动更新地址栏中的hash,不阻止默认行为
+
+ // 移动端点击菜单项后自动关闭侧边栏
+ if (window.innerWidth < 768) {
+ closeSidebar();
+ }
+ });
+ });
+
+ // 移动端侧边栏切换
+ const toggleSidebar = document.getElementById('toggle-sidebar');
+ const closeSidebarBtn = document.getElementById('close-sidebar');
+ const sidebar = document.getElementById('mobile-sidebar');
+ const sidebarOverlay = document.getElementById('sidebar-overlay');
+
+ // 打开侧边栏函数
+ function openSidebar() {
+ console.log('Opening sidebar...');
+ if (sidebar) {
+ sidebar.classList.remove('-translate-x-full');
+ sidebar.classList.add('translate-x-0');
+ }
+ if (sidebarOverlay) {
+ sidebarOverlay.classList.remove('hidden');
+ sidebarOverlay.classList.add('block');
+ }
+ // 防止页面滚动
+ document.body.style.overflow = 'hidden';
+ console.log('Sidebar opened successfully');
+ }
+
+ // 关闭侧边栏函数
+ function closeSidebar() {
+ console.log('Closing sidebar...');
+ if (sidebar) {
+ sidebar.classList.add('-translate-x-full');
+ sidebar.classList.remove('translate-x-0');
+ }
+ if (sidebarOverlay) {
+ sidebarOverlay.classList.add('hidden');
+ sidebarOverlay.classList.remove('block');
+ }
+ // 恢复页面滚动
+ document.body.style.overflow = '';
+ console.log('Sidebar closed successfully');
+ }
+
+ // 切换侧边栏函数
+ function toggleSidebarVisibility() {
+ console.log('Toggling sidebar visibility...');
+ console.log('Current sidebar classes:', sidebar ? sidebar.className : 'sidebar not found');
+ if (sidebar && sidebar.classList.contains('-translate-x-full')) {
+ console.log('Sidebar is hidden, opening...');
+ openSidebar();
+ } else {
+ console.log('Sidebar is visible, closing...');
+ closeSidebar();
+ }
+ }
+
+ // 绑定切换按钮事件
+ if (toggleSidebar) {
+ toggleSidebar.addEventListener('click', toggleSidebarVisibility);
+ }
+
+ // 绑定关闭按钮事件
+ if (closeSidebarBtn) {
+ closeSidebarBtn.addEventListener('click', closeSidebar);
+ }
+
+ // 绑定遮罩层点击事件
+ if (sidebarOverlay) {
+ sidebarOverlay.addEventListener('click', closeSidebar);
+ }
+
+ // 移动端点击菜单项后自动关闭侧边栏
+ menuItems.forEach(item => {
+ item.addEventListener('click', () => {
+ // 检查是否是移动设备视图
+ if (window.innerWidth < 768) {
+ closeSidebar();
+ }
+ });
+ });
+
+ // 添加键盘事件监听,按ESC键关闭侧边栏
+ document.addEventListener('keydown', (e) => {
+ if (e.key === 'Escape') {
+ closeSidebar();
+ }
+ });
+}
+
+// 页面初始化函数 - 根据当前hash值初始化对应页面
+function initPageByHash() {
+ const hash = window.location.hash.substring(1);
+
+ // 隐藏所有内容区域
+ const contentSections = [
+ document.getElementById('dashboard-content'),
+ document.getElementById('shield-content'),
+ document.getElementById('hosts-content'),
+ document.getElementById('query-content'),
+ document.getElementById('logs-content'),
+ document.getElementById('config-content')
+ ];
+
+ contentSections.forEach(section => {
+ if (section) {
+ section.classList.add('hidden');
+ }
+ });
+
+ // 显示当前页面内容
+ const currentSection = document.getElementById(`${hash}-content`);
+ if (currentSection) {
+ currentSection.classList.remove('hidden');
+ }
+
+ // 更新页面标题
+ const pageTitle = document.getElementById('page-title');
+ if (pageTitle) {
+ const titles = {
+ 'dashboard': '仪表盘',
+ 'shield': '屏蔽管理',
+ 'hosts': 'Hosts管理',
+ 'query': 'DNS屏蔽查询',
+ 'logs': '查询日志',
+ 'config': '系统设置'
+ };
+ pageTitle.textContent = titles[hash] || '仪表盘';
+ }
+
+ // 页面特定初始化 - 使用setTimeout延迟调用,确保所有脚本文件都已加载完成
+ if (hash === 'shield') {
+ setTimeout(() => {
+ if (typeof initShieldPage === 'function') {
+ initShieldPage();
+ }
+ }, 0);
+ } else if (hash === 'hosts') {
+ setTimeout(() => {
+ if (typeof initHostsPage === 'function') {
+ initHostsPage();
+ }
+ }, 0);
+ } else if (hash === 'logs') {
+ setTimeout(() => {
+ if (typeof initLogsPage === 'function') {
+ initLogsPage();
+ }
+ }, 0);
+ } else if (hash === 'dashboard') {
+ setTimeout(() => {
+ if (typeof loadDashboardData === 'function') {
+ loadDashboardData();
+ }
+ }, 0);
+ }
+}
+
+// 初始化函数
+function init() {
+ // 设置导航
+ setupNavigation();
+
+ // 初始化页面
+ initPageByHash();
+
+ // 添加hashchange事件监听,处理浏览器前进/后退按钮
+ window.addEventListener('hashchange', initPageByHash);
+
+ // 定期更新系统状态
+ setInterval(updateSystemStatus, 5000);
+}
+
+// 更新系统状态
+function updateSystemStatus() {
+ fetch('/api/status')
+ .then(response => response.json())
+ .then(data => {
+ const uptimeElement = document.getElementById('uptime');
+ if (uptimeElement) {
+ uptimeElement.textContent = `正常运行中 | ${formatUptime(data.uptime)}`;
+ }
+ })
+ .catch(error => {
+ console.error('更新系统状态失败:', error);
+ const uptimeElement = document.getElementById('uptime');
+ if (uptimeElement) {
+ uptimeElement.textContent = '连接异常';
+ uptimeElement.classList.add('text-danger');
+ }
+ });
+}
+
+// 格式化运行时间
+function formatUptime(milliseconds) {
+ // 简化版的格式化,实际使用时需要根据API返回的数据格式调整
+ const seconds = Math.floor(milliseconds / 1000);
+ const minutes = Math.floor(seconds / 60);
+ const hours = Math.floor(minutes / 60);
+ const days = Math.floor(hours / 24);
+
+ if (days > 0) {
+ return `${days}天${hours % 24}小时`;
+ } else if (hours > 0) {
+ return `${hours}小时${minutes % 60}分钟`;
+ } else if (minutes > 0) {
+ return `${minutes}分钟${seconds % 60}秒`;
+ } else {
+ return `${seconds}秒`;
+ }
+}
+
+// 账户功能 - 下拉菜单、注销和修改密码
+function setupAccountFeatures() {
+ // 下拉菜单功能
+ const accountDropdown = document.getElementById('account-dropdown');
+ const accountMenu = document.getElementById('account-menu');
+ const changePasswordBtn = document.getElementById('change-password-btn');
+ const logoutBtn = document.getElementById('logout-btn');
+ const changePasswordModal = document.getElementById('change-password-modal');
+ const closeModalBtn = document.getElementById('close-modal-btn');
+ const cancelChangePasswordBtn = document.getElementById('cancel-change-password');
+ const changePasswordForm = document.getElementById('change-password-form');
+ const passwordMismatch = document.getElementById('password-mismatch');
+ const newPassword = document.getElementById('new-password');
+ const confirmPassword = document.getElementById('confirm-password');
+
+ // 点击外部关闭下拉菜单
+ document.addEventListener('click', (e) => {
+ if (accountDropdown && !accountDropdown.contains(e.target)) {
+ accountMenu.classList.add('hidden');
+ }
+ });
+
+ // 点击账户区域切换下拉菜单
+ if (accountDropdown) {
+ accountDropdown.addEventListener('click', (e) => {
+ e.stopPropagation();
+ accountMenu.classList.toggle('hidden');
+ });
+ }
+
+ // 打开修改密码模态框
+ if (changePasswordBtn) {
+ changePasswordBtn.addEventListener('click', () => {
+ accountMenu.classList.add('hidden');
+ changePasswordModal.classList.remove('hidden');
+ document.body.style.overflow = 'hidden';
+ });
+ }
+
+ // 关闭修改密码模态框
+ function closeModal() {
+ changePasswordModal.classList.add('hidden');
+ document.body.style.overflow = '';
+ changePasswordForm.reset();
+ passwordMismatch.classList.add('hidden');
+ }
+
+ // 绑定关闭模态框事件
+ if (closeModalBtn) {
+ closeModalBtn.addEventListener('click', closeModal);
+ }
+
+ if (cancelChangePasswordBtn) {
+ cancelChangePasswordBtn.addEventListener('click', closeModal);
+ }
+
+ // 点击模态框外部关闭模态框
+ if (changePasswordModal) {
+ changePasswordModal.addEventListener('click', (e) => {
+ if (e.target === changePasswordModal) {
+ closeModal();
+ }
+ });
+ }
+
+ // 按ESC键关闭模态框
+ document.addEventListener('keydown', (e) => {
+ if (e.key === 'Escape' && !changePasswordModal.classList.contains('hidden')) {
+ closeModal();
+ }
+ });
+
+ // 密码匹配验证
+ if (newPassword && confirmPassword) {
+ confirmPassword.addEventListener('input', () => {
+ if (newPassword.value !== confirmPassword.value) {
+ passwordMismatch.classList.remove('hidden');
+ } else {
+ passwordMismatch.classList.add('hidden');
+ }
+ });
+
+ newPassword.addEventListener('input', () => {
+ if (newPassword.value !== confirmPassword.value) {
+ passwordMismatch.classList.remove('hidden');
+ } else {
+ passwordMismatch.classList.add('hidden');
+ }
+ });
+ }
+
+ // 修改密码表单提交
+ if (changePasswordForm) {
+ changePasswordForm.addEventListener('submit', async (e) => {
+ e.preventDefault();
+
+ // 验证密码匹配
+ if (newPassword.value !== confirmPassword.value) {
+ passwordMismatch.classList.remove('hidden');
+ return;
+ }
+
+ const formData = new FormData(changePasswordForm);
+ const data = {
+ currentPassword: formData.get('currentPassword'),
+ newPassword: formData.get('newPassword')
+ };
+
+ try {
+ const response = await fetch('/api/change-password', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(data)
+ });
+
+ const result = await response.json();
+
+ if (response.ok && result.status === 'success') {
+ // 密码修改成功
+ alert('密码修改成功');
+ closeModal();
+ } else {
+ // 密码修改失败
+ alert(result.error || '密码修改失败');
+ }
+ } catch (error) {
+ console.error('修改密码失败:', error);
+ alert('修改密码失败,请稍后重试');
+ }
+ });
+ }
+
+ // 注销功能
+ if (logoutBtn) {
+ logoutBtn.addEventListener('click', async () => {
+ try {
+ await fetch('/api/logout', {
+ method: 'POST'
+ });
+
+ // 重定向到登录页面
+ window.location.href = '/login';
+ } catch (error) {
+ console.error('注销失败:', error);
+ alert('注销失败,请稍后重试');
+ }
+ });
+ }
+}
+
+// 初始化函数
+function init() {
+ // 设置导航
+ setupNavigation();
+
+ // 设置账户功能
+ setupAccountFeatures();
+
+ // 初始化页面
+ initPageByHash();
+
+ // 添加hashchange事件监听,处理浏览器前进/后退按钮
+ window.addEventListener('hashchange', initPageByHash);
+
+ // 定期更新系统状态
+ setInterval(updateSystemStatus, 5000);
+}
+
+// 页面加载完成后执行初始化
+window.addEventListener('DOMContentLoaded', init);
\ No newline at end of file
diff --git a/staticbak/static/js/modules/blacklists.js b/staticbak/static/js/modules/blacklists.js
new file mode 100644
index 0000000..2f1cfb1
--- /dev/null
+++ b/staticbak/static/js/modules/blacklists.js
@@ -0,0 +1,255 @@
+// 初始化远程黑名单面板
+function initBlacklistsPanel() {
+ // 加载远程黑名单列表
+ loadBlacklists();
+
+ // 初始化事件监听器
+ initBlacklistsEventListeners();
+}
+
+// 初始化事件监听器
+function initBlacklistsEventListeners() {
+ // 添加黑名单按钮
+ document.getElementById('add-blacklist').addEventListener('click', addBlacklist);
+
+ // 更新所有黑名单按钮
+ document.getElementById('update-all-blacklists').addEventListener('click', updateAllBlacklists);
+
+ // 按Enter键添加黑名单
+ document.getElementById('blacklist-url').addEventListener('keypress', function(e) {
+ if (e.key === 'Enter') {
+ addBlacklist();
+ }
+ });
+}
+
+// 加载远程黑名单列表
+function loadBlacklists() {
+ const tbody = document.getElementById('blacklists-table').querySelector('tbody');
+ showLoading(tbody);
+
+ apiRequest('/api/shield/blacklists')
+ .then(data => {
+ // 直接渲染返回的blacklists数组
+ renderBlacklists(data);
+ })
+ .catch(error => {
+ console.error('获取远程黑名单列表失败:', error);
+ showError(tbody, '获取远程黑名单列表失败');
+ window.showNotification('获取远程黑名单列表失败', 'error');
+ });
+}
+
+// 渲染远程黑名单表格
+function renderBlacklists(blacklists) {
+ const tbody = document.getElementById('blacklists-table').querySelector('tbody');
+ if (!tbody) return;
+
+ if (!blacklists || blacklists.length === 0) {
+ showEmpty(tbody, '暂无远程黑名单');
+ return;
+ }
+
+ tbody.innerHTML = '';
+
+ blacklists.forEach(list => {
+ addBlacklistToTable(list);
+ });
+
+ // 初始化表格排序
+ initTableSort('blacklists-table');
+
+ // 初始化操作按钮监听器
+ initBlacklistsActionListeners();
+}
+
+// 添加黑名单到表格
+function addBlacklistToTable(list) {
+ const tbody = document.getElementById('blacklists-table').querySelector('tbody');
+ const row = document.createElement('tr');
+
+ const statusClass = list.status === 'success' ? 'status-success' :
+ list.status === 'error' ? 'status-error' : 'status-pending';
+
+ const statusText = list.status === 'success' ? '正常' :
+ list.status === 'error' ? '错误' : '等待中';
+
+ const lastUpdate = list.lastUpdate ? new Date(list.lastUpdate).toLocaleString() : '从未';
+
+ row.innerHTML = `
+
+ `;
+
+ tbody.appendChild(row);
+}
+
+// 添加远程黑名单
+function addBlacklist() {
+ const nameInput = document.getElementById('blacklist-name');
+ const urlInput = document.getElementById('blacklist-url');
+
+ const name = nameInput.value.trim();
+ const url = urlInput.value.trim();
+
+ if (!name) {
+ window.showNotification('请输入黑名单名称', 'warning');
+ nameInput.focus();
+ return;
+ }
+
+ if (!url) {
+ window.showNotification('请输入黑名单URL', 'warning');
+ urlInput.focus();
+ return;
+ }
+
+ // 简单的URL格式验证
+ if (!isValidUrl(url)) {
+ window.showNotification('请输入有效的URL', 'warning');
+ urlInput.focus();
+ return;
+ }
+
+ apiRequest('/api/shield/blacklists', 'POST', { name: name, url: url })
+ .then(data => {
+ // 检查响应中是否有status字段
+ if (!data || typeof data === 'undefined') {
+ window.showNotification('远程黑名单添加失败: 无效的响应', 'error');
+ return;
+ }
+
+ if (data.status === 'success') {
+ window.showNotification('远程黑名单添加成功', 'success');
+ nameInput.value = '';
+ urlInput.value = '';
+ loadBlacklists();
+ } else {
+ window.showNotification(`添加失败: ${data.message || '未知错误'}`, 'error');
+ }
+ })
+ .catch(error => {
+ console.error('添加远程黑名单失败:', error);
+ window.showNotification('添加远程黑名单失败', 'error');
+ });
+}
+
+// 更新远程黑名单
+function updateBlacklist(id) {
+ apiRequest(`/api/shield/blacklists/${id}/update`, 'POST')
+ .then(data => {
+ // 检查响应中是否有status字段
+ if (!data || typeof data === 'undefined') {
+ window.showNotification('远程黑名单更新失败: 无效的响应', 'error');
+ return;
+ }
+
+ if (data.status === 'success') {
+ window.showNotification('远程黑名单更新成功', 'success');
+ loadBlacklists();
+ } else {
+ window.showNotification(`更新失败: ${data.message || '未知错误'}`, 'error');
+ }
+ })
+ .catch(error => {
+ console.error('更新远程黑名单失败:', error);
+ window.showNotification('更新远程黑名单失败', 'error');
+ });
+}
+
+// 更新所有远程黑名单
+function updateAllBlacklists() {
+ confirmAction(
+ '确定要更新所有远程黑名单吗?这可能需要一些时间。',
+ () => {
+ apiRequest('/api/shield/blacklists', 'PUT')
+ .then(data => {
+ // 检查响应中是否有status字段
+ if (!data || typeof data === 'undefined') {
+ window.showNotification('所有远程黑名单更新失败: 无效的响应', 'error');
+ return;
+ }
+
+ if (data.status === 'success') {
+ window.showNotification('所有远程黑名单更新成功', 'success');
+ loadBlacklists();
+ } else {
+ window.showNotification(`更新失败: ${data.message || '未知错误'}`, 'error');
+ }
+ })
+ .catch(error => {
+ console.error('更新所有远程黑名单失败:', error);
+ window.showNotification('更新所有远程黑名单失败', 'error');
+ });
+ }
+ );
+}
+
+// 删除远程黑名单
+function deleteBlacklist(id) {
+ apiRequest(`/api/shield/blacklists/${id}`, 'DELETE')
+ .then(data => {
+ // 检查响应中是否有status字段
+ if (!data || typeof data === 'undefined') {
+ window.showNotification('远程黑名单删除失败: 无效的响应', 'error');
+ return;
+ }
+
+ if (data.status === 'success') {
+ window.showNotification('远程黑名单删除成功', 'success');
+ loadBlacklists();
+ } else {
+ window.showNotification(`删除失败: ${data.message || '未知错误'}`, 'error');
+ }
+ })
+ .catch(error => {
+ console.error('删除远程黑名单失败:', error);
+ window.showNotification('删除远程黑名单失败', 'error');
+ });
+}
+
+// 为操作按钮添加事件监听器
+function initBlacklistsActionListeners() {
+ // 更新按钮
+ document.querySelectorAll('.update-blacklist').forEach(button => {
+ button.addEventListener('click', function() {
+ const id = this.getAttribute('data-id');
+ updateBlacklist(id);
+ });
+ });
+
+ // 删除按钮
+ document.querySelectorAll('.delete-blacklist').forEach(button => {
+ button.addEventListener('click', function() {
+ const id = this.getAttribute('data-id');
+
+ confirmAction(
+ '确定要删除这条远程黑名单吗?',
+ () => deleteBlacklist(id)
+ );
+ });
+ });
+}
+
+// 验证URL格式
+function isValidUrl(url) {
+ try {
+ new URL(url);
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/config.js b/staticbak/static/js/modules/config.js
new file mode 100644
index 0000000..3d4e5db
--- /dev/null
+++ b/staticbak/static/js/modules/config.js
@@ -0,0 +1,125 @@
+// 初始化配置管理面板
+function initConfigPanel() {
+ // 加载当前配置
+ loadConfig();
+
+ // 初始化事件监听器
+ initConfigEventListeners();
+}
+
+// 初始化事件监听器
+function initConfigEventListeners() {
+ // 保存配置按钮
+ document.getElementById('save-config').addEventListener('click', saveConfig);
+
+ // 屏蔽方法变更
+ document.getElementById('block-method').addEventListener('change', updateCustomBlockIpVisibility);
+}
+
+// 加载当前配置
+function loadConfig() {
+ apiRequest('/config')
+ .then(config => {
+ renderConfig(config);
+ })
+ .catch(error => {
+ console.error('获取配置失败:', error);
+ window.showNotification('获取配置失败', 'error');
+ });
+}
+
+// 渲染配置表单
+function renderConfig(config) {
+ if (!config) return;
+
+ // 设置屏蔽方法
+ const blockMethodSelect = document.getElementById('block-method');
+ if (config.shield && config.shield.blockMethod) {
+ blockMethodSelect.value = config.shield.blockMethod;
+ }
+
+ // 设置自定义屏蔽IP
+ const customBlockIpInput = document.getElementById('custom-block-ip');
+ if (config.shield && config.shield.customBlockIP) {
+ customBlockIpInput.value = config.shield.customBlockIP;
+ }
+
+ // 设置远程规则更新间隔
+ const updateIntervalInput = document.getElementById('update-interval');
+ if (config.shield && config.shield.updateInterval) {
+ updateIntervalInput.value = config.shield.updateInterval;
+ }
+
+ // 更新自定义屏蔽IP的可见性
+ updateCustomBlockIpVisibility();
+}
+
+// 更新自定义屏蔽IP输入框的可见性
+function updateCustomBlockIpVisibility() {
+ const blockMethod = document.getElementById('block-method').value;
+ const customBlockIpContainer = document.getElementById('custom-block-ip').closest('.form-group');
+
+ if (blockMethod === 'customIP') {
+ customBlockIpContainer.style.display = 'block';
+ } else {
+ customBlockIpContainer.style.display = 'none';
+ }
+}
+
+// 保存配置
+function saveConfig() {
+ // 收集表单数据
+ const configData = {
+ shield: {
+ blockMethod: document.getElementById('block-method').value,
+ updateInterval: parseInt(document.getElementById('update-interval').value)
+ }
+ };
+
+ // 如果选择了自定义IP,添加到配置中
+ if (configData.shield.blockMethod === 'customIP') {
+ const customBlockIp = document.getElementById('custom-block-ip').value.trim();
+
+ // 验证自定义IP格式
+ if (!isValidIp(customBlockIp)) {
+ window.showNotification('请输入有效的自定义屏蔽IP', 'warning');
+ return;
+ }
+
+ configData.shield.customBlockIP = customBlockIp;
+ }
+
+ // 验证更新间隔
+ if (isNaN(configData.shield.updateInterval) || configData.shield.updateInterval < 60) {
+ window.showNotification('更新间隔必须大于等于60秒', 'warning');
+ return;
+ }
+
+ // 保存配置
+ apiRequest('/config', 'PUT', configData)
+ .then(response => {
+ if (response.success) {
+ window.showNotification('配置保存成功', 'success');
+
+ // 由于服务器没有提供重启API,移除重启提示
+ // 直接提示用户配置已保存
+ } else {
+ window.showNotification(`保存失败: ${response.message || '未知错误'}`, 'error');
+ }
+ })
+ .catch(error => {
+ console.error('保存配置失败:', error);
+ window.showNotification('保存配置失败', 'error');
+ });
+}
+
+// 服务重启功能已移除,因为服务器没有提供对应的API端点
+
+// 验证IP地址格式
+function isValidIp(ip) {
+ // 支持IPv4和IPv6简单验证
+ const ipv4Regex = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
+ const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}$/;
+
+ return ipv4Regex.test(ip) || ipv6Regex.test(ip);
+}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/dashboard.js b/staticbak/static/js/modules/dashboard.js
new file mode 100644
index 0000000..5a15e09
--- /dev/null
+++ b/staticbak/static/js/modules/dashboard.js
@@ -0,0 +1,1220 @@
+// 全局变量
+let domainDataCache = {
+ blocked: null,
+ resolved: null
+};
+let domainUpdateTimer = null;
+const DOMAIN_UPDATE_INTERVAL = 5000; // 域名排行更新间隔,设为5秒,比统计数据更新慢一些
+
+// 初始化小型图表 - 修复Canvas重用问题
+function initMiniCharts() {
+ // 获取所有图表容器
+ const chartContainers = document.querySelectorAll('.chart-card canvas');
+
+ // 全局图表实例存储
+ window.chartInstances = window.chartInstances || {};
+
+ chartContainers.forEach(canvas => {
+ // 获取图表数据属性
+ const chartId = canvas.id;
+ const chartType = canvas.dataset.chartType || 'line';
+ const chartData = JSON.parse(canvas.dataset.chartData || '{}');
+
+ // 设置图表上下文
+ const ctx = canvas.getContext('2d');
+
+ // 销毁已存在的图表实例,避免Canvas重用错误
+ if (window.chartInstances[chartId]) {
+ window.chartInstances[chartId].destroy();
+ }
+
+ // 创建新图表
+ window.chartInstances[chartId] = new Chart(ctx, {
+ type: chartType,
+ data: chartData,
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ plugins: {
+ legend: {
+ display: false
+ },
+ tooltip: {
+ backgroundColor: 'rgba(0, 0, 0, 0.7)',
+ padding: 10,
+ cornerRadius: 4
+ }
+ },
+ scales: {
+ x: {
+ grid: {
+ display: false
+ }
+ },
+ y: {
+ beginAtZero: true,
+ grid: {
+ color: 'rgba(0, 0, 0, 0.05)'
+ }
+ }
+ },
+ animation: {
+ duration: 1000,
+ easing: 'easeOutQuart'
+ }
+ }
+ });
+ });
+}
+
+// 初始化仪表盘面板
+function initDashboardPanel() {
+ // 初始化小型图表
+ if (typeof initMiniCharts === 'function') {
+ initMiniCharts();
+ }
+ // 加载统计数据
+ loadDashboardData();
+ // 启动实时更新
+ if (typeof startRealTimeUpdate === 'function') {
+ startRealTimeUpdate();
+ }
+ // 启动域名排行的独立更新
+ startDomainUpdate();
+
+ // 初始化响应式侧边栏
+ initResponsiveSidebar();
+}
+
+// 初始化响应式侧边栏
+function initResponsiveSidebar() {
+ // 创建侧边栏切换按钮
+ const toggleBtn = document.createElement('button');
+ toggleBtn.className = 'sidebar-toggle';
+ toggleBtn.innerHTML = '
';
+ document.body.appendChild(toggleBtn);
+
+ // 侧边栏切换逻辑
+ toggleBtn.addEventListener('click', function() {
+ const sidebar = document.querySelector('.sidebar');
+ sidebar.classList.toggle('open');
+
+ // 更新按钮图标
+ const icon = toggleBtn.querySelector('i');
+ if (sidebar.classList.contains('open')) {
+ icon.className = 'fas fa-times';
+ } else {
+ icon.className = 'fas fa-bars';
+ }
+ });
+
+ // 在侧边栏打开时点击内容区域关闭侧边栏
+ const content = document.querySelector('.content');
+ content.addEventListener('click', function() {
+ const sidebar = document.querySelector('.sidebar');
+ const toggleBtn = document.querySelector('.sidebar-toggle');
+ if (sidebar.classList.contains('open') && window.innerWidth <= 768) {
+ sidebar.classList.remove('open');
+ if (toggleBtn) {
+ const icon = toggleBtn.querySelector('i');
+ icon.className = 'fas fa-bars';
+ }
+ }
+ });
+
+ // 窗口大小变化时调整侧边栏状态
+ window.addEventListener('resize', function() {
+ const sidebar = document.querySelector('.sidebar');
+ const toggleBtn = document.querySelector('.sidebar-toggle');
+
+ if (window.innerWidth > 768) {
+ sidebar.classList.remove('open');
+ if (toggleBtn) {
+ const icon = toggleBtn.querySelector('i');
+ icon.className = 'fas fa-bars';
+ }
+ }
+ });
+}
+
+// 加载仪表盘数据
+function loadDashboardData() {
+ // 加载统计卡片数据
+ updateStatCards();
+
+ // 首次加载时获取域名排行数据
+ if (!domainDataCache.blocked) {
+ loadTopBlockedDomains();
+ }
+ if (!domainDataCache.resolved) {
+ loadTopResolvedDomains();
+ }
+}
+
+// 启动域名排行的独立更新
+function startDomainUpdate() {
+ if (domainUpdateTimer) {
+ clearInterval(domainUpdateTimer);
+ }
+
+ // 立即执行一次更新
+ updateDomainRankings();
+
+ // 设置定时器
+ domainUpdateTimer = setInterval(() => {
+ // 仅当当前面板是仪表盘时更新数据
+ if (document.getElementById('dashboard') && document.getElementById('dashboard').classList.contains('active')) {
+ updateDomainRankings();
+ }
+ }, DOMAIN_UPDATE_INTERVAL);
+}
+
+// 停止域名排行更新
+function stopDomainUpdate() {
+ if (domainUpdateTimer) {
+ clearInterval(domainUpdateTimer);
+ domainUpdateTimer = null;
+ }
+}
+
+// 更新域名排行数据
+function updateDomainRankings() {
+ // 使用Promise.all并行加载,提高效率
+ Promise.all([
+ loadTopBlockedDomains(true),
+ loadTopResolvedDomains(true)
+ ]).catch(error => {
+ console.error('更新域名排行数据失败:', error);
+ });
+}
+
+// 更新统计卡片数据
+function updateStatCards() {
+ // 获取所有统计数据
+ apiRequest('/api/stats')
+ .then(data => {
+ // 更新请求统计
+ if (data && data.dns) {
+ // 屏蔽请求
+ const blockedCount = data.dns.Blocked || data.dns.blocked || 0;
+ smoothUpdateStatCard('blocked-count', blockedCount);
+
+ // 允许请求
+ const allowedCount = data.dns.Allowed || data.dns.allowed || 0;
+ smoothUpdateStatCard('allowed-count', allowedCount);
+
+ // 错误请求
+ const errorCount = data.dns.Errors || data.dns.errors || 0;
+ smoothUpdateStatCard('error-count', errorCount);
+
+ // 总请求数
+ const totalCount = blockedCount + allowedCount + errorCount;
+ smoothUpdateStatCard('total-queries', totalCount);
+
+ // 更新数据历史记录和小型图表
+ if (typeof updateDataHistory === 'function') {
+ updateDataHistory('blocked', blockedCount);
+ updateDataHistory('query', totalCount);
+ }
+
+ // 更新小型图表
+ if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
+ updateMiniChart('blocked-chart', dataHistory.blocked);
+ updateMiniChart('query-chart', dataHistory.query);
+ }
+ } else {
+ // 处理其他可能的数据格式
+ const blockedValue = data && (data.Blocked !== undefined ? data.Blocked : (data.blocked !== undefined ? data.blocked : 0));
+ const allowedValue = data && (data.Allowed !== undefined ? data.Allowed : (data.allowed !== undefined ? data.allowed : 0));
+ const errorValue = data && (data.Errors !== undefined ? data.Errors : (data.errors !== undefined ? data.errors : 0));
+ smoothUpdateStatCard('blocked-count', blockedValue);
+ smoothUpdateStatCard('allowed-count', allowedValue);
+ smoothUpdateStatCard('error-count', errorValue);
+ const totalCount = blockedValue + allowedValue + errorValue;
+ smoothUpdateStatCard('total-queries', totalCount);
+ }
+ })
+ .catch(error => {
+ console.error('获取统计数据失败:', error);
+ });
+
+ // 获取规则数
+ apiRequest('/api/shield')
+ .then(data => {
+ let rulesCount = 0;
+
+ // 增强的数据格式处理,确保能正确处理各种返回格式
+ if (Array.isArray(data)) {
+ rulesCount = data.length;
+ } else if (data && data.rules && Array.isArray(data.rules)) {
+ rulesCount = data.rules.length;
+ } else if (data && data.domainRules) {
+ // 处理可能的规则分类格式
+ let domainRulesCount = 0;
+ let regexRulesCount = 0;
+
+ if (Array.isArray(data.domainRules)) {
+ domainRulesCount = data.domainRules.length;
+ } else if (typeof data.domainRules === 'object') {
+ domainRulesCount = Object.keys(data.domainRules).length;
+ }
+
+ if (data.regexRules && Array.isArray(data.regexRules)) {
+ regexRulesCount = data.regexRules.length;
+ }
+
+ rulesCount = domainRulesCount + regexRulesCount;
+ }
+
+ // 确保至少显示0而不是--
+ smoothUpdateStatCard('rules-count', rulesCount);
+
+ // 更新数据历史记录和小型图表
+ if (typeof updateDataHistory === 'function') {
+ updateDataHistory('rules', rulesCount);
+ }
+
+ if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
+ updateMiniChart('rules-chart', dataHistory.rules);
+ }
+ })
+ .catch(error => {
+ console.error('获取规则数失败:', error);
+ // 即使出错也要设置为0,避免显示--
+ smoothUpdateStatCard('rules-count', 0);
+ });
+
+ // 获取Hosts条目数量
+ apiRequest('/api/shield/hosts')
+ .then(data => {
+ let hostsCount = 0;
+
+ // 处理各种可能的数据格式
+ if (Array.isArray(data)) {
+ hostsCount = data.length;
+ } else if (data && data.hosts && Array.isArray(data.hosts)) {
+ hostsCount = data.hosts.length;
+ } else if (data && typeof data === 'object' && data !== null) {
+ // 如果是对象格式,计算键的数量
+ hostsCount = Object.keys(data).length;
+ }
+
+ // 确保至少显示0而不是--
+ smoothUpdateStatCard('hosts-count', hostsCount);
+
+ // 更新数据历史记录和小型图表
+ if (typeof updateDataHistory === 'function') {
+ updateDataHistory('hosts', hostsCount);
+ }
+
+ if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
+ updateMiniChart('hosts-chart', dataHistory.hosts);
+ }
+ })
+ .catch(error => {
+ console.error('获取Hosts数量失败:', error);
+ // 即使出错也要设置为0,避免显示--
+ smoothUpdateStatCard('hosts-count', 0);
+ });
+
+ // 获取Hosts条目数
+ apiRequest('/api/shield/hosts')
+ .then(data => {
+ let hostsCount = 0;
+ if (Array.isArray(data)) {
+ hostsCount = data.length;
+ } else if (data && data.hosts && Array.isArray(data.hosts)) {
+ hostsCount = data.hosts.length;
+ }
+
+ smoothUpdateStatCard('hosts-count', hostsCount);
+
+ // 更新数据历史记录和小型图表
+ if (typeof updateDataHistory === 'function') {
+ updateDataHistory('hosts', hostsCount);
+ }
+
+ if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
+ updateMiniChart('hosts-chart', dataHistory.hosts);
+ }
+ })
+ .catch(error => {
+ console.error('获取Hosts条目数失败:', error);
+ });
+}
+
+
+// 更新单个统计卡片
+function updateStatCard(elementId, value) {
+ const element = document.getElementById(elementId);
+ if (!element) return;
+
+ // 格式化为可读数字
+ const formattedValue = formatNumber(value);
+
+ // 更新显示
+ element.textContent = formattedValue;
+
+ // 使用全局checkAndAnimate函数检测变化并添加光晕效果
+ if (typeof checkAndAnimate === 'function') {
+ checkAndAnimate(elementId, value);
+ }
+}
+
+// 平滑更新统计卡片(数字递增动画)
+function smoothUpdateStatCard(elementId, newValue) {
+ const element = document.getElementById(elementId);
+ if (!element) return;
+
+ // 获取旧值
+ const oldValue = previousStats[elementId] || 0;
+
+ // 如果值相同,不更新
+ if (newValue === oldValue) return;
+
+ // 如果是初始值,直接更新
+ if (oldValue === 0 || oldValue === '--') {
+ updateStatCard(elementId, newValue);
+ return;
+ }
+
+ // 设置动画持续时间
+ const duration = 500; // 500ms
+ const startTime = performance.now();
+
+ // 动画函数
+ function animate(currentTime) {
+ const elapsedTime = currentTime - startTime;
+ const progress = Math.min(elapsedTime / duration, 1);
+
+ // 使用缓动函数
+ const easeOutQuad = 1 - (1 - progress) * (1 - progress);
+
+ // 计算当前值
+ const currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutQuad);
+
+ // 更新显示
+ element.textContent = formatNumber(currentValue);
+
+ // 继续动画
+ if (progress < 1) {
+ requestAnimationFrame(animate);
+ } else {
+ // 动画完成,设置最终值
+ element.textContent = formatNumber(newValue);
+ // 添加光晕效果
+ element.classList.add('update');
+ setTimeout(() => {
+ element.classList.remove('update');
+ }, 1000);
+ // 更新记录
+ previousStats[elementId] = newValue;
+ }
+ }
+
+ // 开始动画
+ requestAnimationFrame(animate);
+}
+
+// 加载24小时统计数据
+function loadHourlyStats() {
+ apiRequest('/hourly-stats')
+ .then(data => {
+ // 检查数据是否变化,避免不必要的重绘
+ if (typeof previousChartData !== 'undefined' &&
+ JSON.stringify(previousChartData) === JSON.stringify(data)) {
+ return; // 数据未变化,无需更新图表
+ }
+
+ previousChartData = JSON.parse(JSON.stringify(data));
+
+ // 处理不同可能的数据格式
+ if (data) {
+ // 优先处理用户提供的实际数据格式 {data: [], labels: []}
+ if (data.labels && data.data && Array.isArray(data.labels) && Array.isArray(data.data)) {
+ // 确保labels和data数组长度一致
+ if (data.labels.length === data.data.length) {
+ // 假设data数组包含的是屏蔽请求数据,允许请求设为0
+ renderHourlyChart(data.labels, data.data, Array(data.data.length).fill(0));
+ return;
+ }
+ }
+
+ // 处理其他可能的数据格式
+ if (data.labels && data.blocked && data.allowed) {
+ // 完整数据格式:分别有屏蔽和允许的数据
+ renderHourlyChart(data.labels, data.blocked, data.allowed);
+ } else if (data.labels && data.data) {
+ // 简化数据格式:只有一组数据
+ renderHourlyChart(data.labels, data.data, Array(data.data.length).fill(0));
+ } else {
+ // 尝试直接使用数据对象的属性
+ const hours = [];
+ const blocked = [];
+ const allowed = [];
+
+ // 假设数据是按小时组织的对象
+ for (const key in data) {
+ if (data.hasOwnProperty(key)) {
+ hours.push(key);
+ // 尝试不同的数据结构访问方式
+ if (typeof data[key] === 'object' && data[key] !== null) {
+ blocked.push(data[key].Blocked || data[key].blocked || 0);
+ allowed.push(data[key].Allowed || data[key].allowed || 0);
+ } else {
+ blocked.push(data[key]);
+ allowed.push(0);
+ }
+ }
+ }
+
+ // 只在有数据时渲染
+ if (hours.length > 0) {
+ renderHourlyChart(hours, blocked, allowed);
+ }
+ }
+ }
+ })
+ .catch(error => {
+ console.error('获取24小时统计失败:', error);
+ // 显示默认空数据,避免图表区域空白
+ const emptyHours = Array.from({length: 24}, (_, i) => `${i}:00`);
+ const emptyData = Array(24).fill(0);
+ renderHourlyChart(emptyHours, emptyData, emptyData);
+ });
+}
+
+// 渲染24小时统计图表 - 使用ECharts重新设计
+function renderHourlyChart(hours, blocked, allowed) {
+ const chartContainer = document.getElementById('hourly-chart');
+ if (!chartContainer) return;
+
+ // 销毁现有ECharts实例
+ if (window.hourlyChart) {
+ window.hourlyChart.dispose();
+ }
+
+ // 创建ECharts实例
+ window.hourlyChart = echarts.init(chartContainer);
+
+ // 计算24小时内的最大请求数,为Y轴设置合适的上限
+ const maxRequests = Math.max(...blocked, ...allowed);
+ const yAxisMax = maxRequests > 0 ? Math.ceil(maxRequests * 1.2) : 10;
+
+ // 设置ECharts配置
+ const option = {
+ title: {
+ text: '24小时请求统计',
+ left: 'center',
+ textStyle: {
+ fontSize: 16,
+ fontWeight: 'normal'
+ }
+ },
+ tooltip: {
+ trigger: 'axis',
+ backgroundColor: 'rgba(255, 255, 255, 0.95)',
+ borderColor: '#ddd',
+ borderWidth: 1,
+ textStyle: {
+ color: '#333'
+ },
+ formatter: function(params) {
+ let result = params[0].name + '
';
+ params.forEach(param => {
+ result += param.marker + param.seriesName + ': ' + param.value + '
';
+ });
+ return result;
+ }
+ },
+ legend: {
+ data: ['屏蔽请求', '允许请求'],
+ top: '10%',
+ textStyle: {
+ color: '#666'
+ }
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '10%',
+ top: '25%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: hours,
+ axisLabel: {
+ color: '#666',
+ interval: 1, // 每隔一个小时显示一个标签,避免拥挤
+ rotate: 30 // 标签旋转30度,提高可读性
+ },
+ axisLine: {
+ lineStyle: {
+ color: '#ddd'
+ }
+ },
+ axisTick: {
+ show: false
+ }
+ },
+ yAxis: {
+ type: 'value',
+ min: 0,
+ max: yAxisMax,
+ axisLabel: {
+ color: '#666',
+ formatter: '{value}'
+ },
+ axisLine: {
+ lineStyle: {
+ color: '#ddd'
+ }
+ },
+ splitLine: {
+ lineStyle: {
+ color: '#f0f0f0',
+ type: 'dashed'
+ }
+ }
+ },
+ series: [
+ {
+ name: '屏蔽请求',
+ type: 'line',
+ smooth: true, // 平滑曲线
+ symbol: 'circle', // 拐点形状
+ symbolSize: 6, // 拐点大小
+ data: blocked,
+ itemStyle: {
+ color: '#e74c3c'
+ },
+ areaStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ { offset: 0, color: 'rgba(231, 76, 60, 0.3)' },
+ { offset: 1, color: 'rgba(231, 76, 60, 0.05)' }
+ ])
+ },
+ emphasis: {
+ focus: 'series',
+ itemStyle: {
+ borderWidth: 2,
+ borderColor: '#fff',
+ shadowBlur: 10,
+ shadowColor: 'rgba(231, 76, 60, 0.5)'
+ }
+ },
+ animationDuration: 800,
+ animationEasing: 'cubicOut'
+ },
+ {
+ name: '允许请求',
+ type: 'line',
+ smooth: true,
+ symbol: 'circle',
+ symbolSize: 6,
+ data: allowed,
+ itemStyle: {
+ color: '#2ecc71'
+ },
+ areaStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ { offset: 0, color: 'rgba(46, 204, 113, 0.3)' },
+ { offset: 1, color: 'rgba(46, 204, 113, 0.05)' }
+ ])
+ },
+ emphasis: {
+ focus: 'series',
+ itemStyle: {
+ borderWidth: 2,
+ borderColor: '#fff',
+ shadowBlur: 10,
+ shadowColor: 'rgba(46, 204, 113, 0.5)'
+ }
+ },
+ animationDuration: 800,
+ animationEasing: 'cubicOut'
+ }
+ ],
+ // 添加数据提示功能
+ toolbox: {
+ feature: {
+ dataZoom: {
+ yAxisIndex: 'none'
+ },
+ dataView: {
+ readOnly: false
+ },
+ magicType: {
+ type: ['line', 'bar']
+ },
+ restore: {},
+ saveAsImage: {}
+ },
+ top: '15%'
+ },
+ // 添加数据缩放功能
+ dataZoom: [
+ {
+ type: 'inside',
+ start: 0,
+ end: 100
+ },
+ {
+ start: 0,
+ end: 100,
+ handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23.1h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
+ handleSize: '80%',
+ handleStyle: {
+ color: '#fff',
+ shadowBlur: 3,
+ shadowColor: 'rgba(0, 0, 0, 0.6)',
+ shadowOffsetX: 2,
+ shadowOffsetY: 2
+ }
+ }
+ ]
+ };
+
+ // 应用配置项
+ window.hourlyChart.setOption(option);
+
+ // 添加窗口大小变化时的自适应
+ window.addEventListener('resize', function() {
+ if (window.hourlyChart) {
+ window.hourlyChart.resize();
+ }
+ });
+}
+
+// 加载请求类型分布 - 注意:后端可能没有这个API,暂时注释掉
+function loadRequestsDistribution() {
+ // 后端没有对应的API路由,暂时跳过
+ console.log('请求类型分布API暂不可用');
+ return Promise.resolve()
+ .then(data => {
+ // 检查数据是否变化,避免不必要的重绘
+ if (typeof previousFullData !== 'undefined' &&
+ JSON.stringify(previousFullData) === JSON.stringify(data)) {
+ return; // 数据未变化,无需更新图表
+ }
+
+ previousFullData = JSON.parse(JSON.stringify(data));
+
+ // 构造饼图所需的数据,支持多种数据格式
+ const labels = ['允许请求', '屏蔽请求', '错误请求'];
+ let requestData = [0, 0, 0]; // 默认值
+
+ if (data) {
+ // 尝试多种可能的数据结构
+ if (data.dns) {
+ // 主要数据结构
+ requestData = [
+ data.dns.Allowed || data.dns.allowed || 0,
+ data.dns.Blocked || data.dns.blocked || 0,
+ data.dns.Errors || data.dns.errors || 0
+ ];
+ } else if (data.Allowed !== undefined || data.Blocked !== undefined) {
+ // 直接在顶级对象中
+ requestData = [
+ data.Allowed || data.allowed || 0,
+ data.Blocked || data.blocked || 0,
+ data.Errors || data.errors || 0
+ ];
+ } else if (data.requests) {
+ // 可能在requests属性中
+ requestData = [
+ data.requests.Allowed || data.requests.allowed || 0,
+ data.requests.Blocked || data.requests.blocked || 0,
+ data.requests.Errors || data.requests.errors || 0
+ ];
+ }
+ }
+
+ // 渲染图表,即使数据全为0也渲染,避免空白
+ renderRequestsPieChart(labels, requestData);
+ })
+ .catch(error => {
+ console.error('获取请求类型分布失败:', error);
+ // 显示默认空数据的图表
+ const labels = ['允许请求', '屏蔽请求', '错误请求'];
+ const defaultData = [0, 0, 0];
+ renderRequestsPieChart(labels, defaultData);
+ });
+}
+
+// 渲染请求类型饼图
+function renderRequestsPieChart(labels, data) {
+ const ctx = document.getElementById('requests-pie-chart');
+ if (!ctx) return;
+
+ // 销毁现有图表
+ if (window.requestsPieChart) {
+ window.requestsPieChart.destroy();
+ }
+
+ // 创建新图表
+ window.requestsPieChart = new Chart(ctx, {
+ type: 'doughnut',
+ data: {
+ labels: labels,
+ datasets: [{
+ data: data,
+ backgroundColor: [
+ '#2ecc71', // 允许
+ '#e74c3c', // 屏蔽
+ '#f39c12', // 错误
+ '#9b59b6' // 其他
+ ],
+ borderWidth: 2,
+ borderColor: '#fff'
+ }]
+ },
+ options: {
+ responsive: true,
+ maintainAspectRatio: false,
+ plugins: {
+ legend: {
+ position: 'right',
+ },
+ tooltip: {
+ callbacks: {
+ label: function(context) {
+ const label = context.label || '';
+ const value = context.raw || 0;
+ const total = context.dataset.data.reduce((a, b) => a + b, 0);
+ const percentage = ((value / total) * 100).toFixed(1);
+ return `${label}: ${value} (${percentage}%)`;
+ }
+ }
+ }
+ },
+ cutout: '60%',
+ animation: {
+ duration: 500 // 快速动画,提升实时更新体验
+ }
+ }
+ });
+}
+
+// 辅助函数:深度比较两个对象是否相等
+function isEqual(obj1, obj2) {
+ // 处理null或undefined情况
+ if (obj1 === obj2) return true;
+ if (obj1 == null || obj2 == null) return false;
+
+ // 确保都是数组
+ if (!Array.isArray(obj1) || !Array.isArray(obj2)) return false;
+ if (obj1.length !== obj2.length) return false;
+
+ // 比较数组中每个元素
+ for (let i = 0; i < obj1.length; i++) {
+ const a = obj1[i];
+ const b = obj2[i];
+
+ // 比较域名和计数
+ if (a.domain !== b.domain || a.count !== b.count) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+// 加载最常屏蔽的域名
+function loadTopBlockedDomains(isUpdate = false) {
+ // 首先获取表格元素并显示加载状态
+ const topBlockedTable = document.getElementById('top-blocked-table');
+ const tbody = topBlockedTable ? topBlockedTable.querySelector('tbody') : null;
+
+ // 非更新操作时显示加载状态
+ if (tbody && !isUpdate) {
+ // 显示加载中状态
+ tbody.innerHTML = `
`;
+ }
+
+ return apiRequest('/api/top-blocked')
+ .then(data => {
+ // 处理多种可能的数据格式,特别优化对用户提供格式的支持
+ let processedData = [];
+
+ if (Array.isArray(data)) {
+ // 数组格式:直接使用,并过滤出有效的域名数据
+ processedData = data.filter(item => item && (item.domain || item.name || item.Domain || item.Name) && (item.count !== undefined || item.Count !== undefined || item.hits !== undefined || item.Hits !== undefined));
+ } else if (data && data.domains && Array.isArray(data.domains)) {
+ // 嵌套在domains属性中
+ processedData = data.domains;
+ } else if (data && typeof data === 'object') {
+ // 对象格式:转换为数组
+ processedData = Object.keys(data).map(key => ({
+ domain: key,
+ count: data[key]
+ }));
+ }
+
+ // 计算最大值用于百分比计算
+ if (processedData.length > 0) {
+ const maxCount = Math.max(...processedData.map(item => {
+ return item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+ }));
+ // 为每个项目添加百分比
+ processedData.forEach(item => {
+ const count = item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+ item.percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
+ });
+ }
+
+ // 数据变化检测
+ const hasDataChanged = !isEqual(domainDataCache.blocked, processedData);
+
+ // 只在数据发生变化或不是更新操作时重新渲染
+ if (hasDataChanged || !isUpdate) {
+ // 更新缓存
+ domainDataCache.blocked = JSON.parse(JSON.stringify(processedData));
+ // 渲染最常屏蔽的域名表格
+ smoothRenderTable('top-blocked-table', processedData, renderDomainRow);
+ }
+ })
+ .catch(error => {
+ console.error('获取最常屏蔽域名失败:', error);
+ // 显示默认空数据而不是错误消息,保持界面一致性
+ const tbody = document.getElementById('top-blocked-table').querySelector('tbody');
+ if (tbody) {
+ showEmpty(tbody, '获取数据失败');
+ }
+
+ // 使用全局通知功能
+ if (typeof showNotification === 'function') {
+ showNotification('danger', '获取最常屏蔽域名失败');
+ }
+ });
+}
+
+// 加载最常解析的域名
+function loadTopResolvedDomains(isUpdate = false) {
+ // 首先获取表格元素
+ const topResolvedTable = document.getElementById('top-resolved-table');
+ const tbody = topResolvedTable ? topResolvedTable.querySelector('tbody') : null;
+
+ // 非更新操作时显示加载状态
+ if (tbody && !isUpdate) {
+ // 显示加载中状态
+ tbody.innerHTML = `
`;
+ }
+
+ return apiRequest('/api/top-resolved')
+ .then(data => {
+ // 处理多种可能的数据格式
+ let processedData = [];
+
+ if (Array.isArray(data)) {
+ // 数组格式:直接使用
+ processedData = data;
+ } else if (data && data.domains && Array.isArray(data.domains)) {
+ // 嵌套在domains属性中
+ processedData = data.domains;
+ } else if (data && typeof data === 'object') {
+ // 对象格式:转换为数组
+ processedData = Object.keys(data).map(key => ({
+ domain: key,
+ count: data[key]
+ }));
+ }
+
+ // 计算最大值用于百分比计算
+ if (processedData.length > 0) {
+ const maxCount = Math.max(...processedData.map(item => {
+ return item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+ }));
+ // 为每个项目添加百分比
+ processedData.forEach(item => {
+ const count = item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+ item.percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
+ });
+ }
+
+ // 数据变化检测
+ const hasDataChanged = !isEqual(domainDataCache.resolved, processedData);
+
+ // 只在数据发生变化或不是更新操作时重新渲染
+ if (hasDataChanged || !isUpdate) {
+ // 更新缓存
+ domainDataCache.resolved = JSON.parse(JSON.stringify(processedData));
+ // 渲染最常解析的域名表格
+ smoothRenderTable('top-resolved-table', processedData, renderDomainRow);
+ }
+ })
+ .catch(error => {
+ console.error('获取最常解析域名失败:', error);
+ // 显示默认空数据而不是错误消息,保持界面一致性
+ const tbody = document.getElementById('top-resolved-table').querySelector('tbody');
+ if (tbody) {
+ showEmpty(tbody, '暂无解析记录');
+ }
+
+ // 使用全局通知功能
+ if (typeof showNotification === 'function') {
+ showNotification('danger', '获取最常解析域名失败');
+ }
+ });
+}
+
+// 渲染域名行
+function renderDomainRow(item, index) {
+ if (!item) return null;
+
+ // 支持不同的字段名和格式
+ const domainName = item.domain || item.name || item.Domain || item.Name || '未知域名';
+ const count = item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+ const percentage = item.percentage || 0;
+
+ const row = document.createElement('tr');
+ row.className = 'fade-in'; // 添加淡入动画类
+ row.dataset.domain = domainName;
+ row.dataset.count = count;
+ row.dataset.percentage = percentage;
+
+ // 为不同类型的排行使用不同的进度条颜色
+ let barColor = '#3498db'; // 默认蓝色
+ if (item.domain && item.domain.includes('microsoft.com')) {
+ barColor = '#2ecc71'; // 绿色
+ } else if (item.domain && item.domain.includes('tencent.com')) {
+ barColor = '#e74c3c'; // 红色
+ }
+
+ row.innerHTML = `
+
+ `;
+
+ // 设置动画延迟,创建级联效果
+ row.style.animationDelay = `${index * 50}ms`;
+
+ return row;
+}
+
+// 平滑渲染表格数据
+function smoothRenderTable(tableId, newData, rowRenderer) {
+ const table = document.getElementById(tableId);
+ const tbody = table ? table.querySelector('tbody') : null;
+ if (!tbody) return;
+
+ // 添加过渡类,用于CSS动画支持
+ tbody.classList.add('table-transition');
+
+ if (!newData || newData.length === 0) {
+ showEmpty(tbody, '暂无数据记录');
+ // 移除过渡类
+ setTimeout(() => tbody.classList.remove('table-transition'), 300);
+ return;
+ }
+
+ // 创建映射以提高查找效率
+ const oldRows = Array.from(tbody.querySelectorAll('tr'));
+ const rowMap = new Map();
+
+ oldRows.forEach(row => {
+ if (!row.querySelector('td:first-child')) return;
+ const key = row.dataset.domain || row.querySelector('td:first-child').textContent;
+ rowMap.set(key, row);
+ });
+
+ // 准备新的数据行
+ const newRows = [];
+ const updatedRows = new Set();
+
+ // 处理每一条新数据
+ newData.forEach((item, index) => {
+ const key = item.domain || item.name || item.Domain || item.Name || '未知域名';
+
+ if (rowMap.has(key)) {
+ // 数据项已存在,更新它
+ const existingRow = rowMap.get(key);
+ const oldCount = parseInt(existingRow.dataset.count) || 0;
+ const count = item.count !== undefined ? item.count :
+ (item.Count !== undefined ? item.Count :
+ (item.hits !== undefined ? item.hits :
+ (item.Hits !== undefined ? item.Hits : 0)));
+
+ // 更新数据属性
+ existingRow.dataset.count = count;
+
+ // 添加高亮效果,用于CSS过渡
+ existingRow.classList.add('table-row-highlight');
+ setTimeout(() => {
+ existingRow.classList.remove('table-row-highlight');
+ }, 1000);
+
+ // 如果计数变化,应用平滑更新
+ if (oldCount !== count) {
+ const countCell = existingRow.querySelector('.count-cell');
+ if (countCell) {
+ smoothUpdateNumber(countCell, oldCount, count);
+ }
+ }
+
+ // 更新位置
+ existingRow.style.animationDelay = `${index * 50}ms`;
+ newRows.push(existingRow);
+ updatedRows.add(key);
+ } else {
+ // 新数据项,创建新行
+ const newRow = rowRenderer(item, index);
+ if (newRow) {
+ // 添加淡入动画类
+ newRow.classList.add('table-row-fade-in');
+ // 先设置透明度为0,避免在错误位置闪烁
+ newRow.style.opacity = '0';
+ newRows.push(newRow);
+ }
+ }
+ });
+
+ // 移除不再存在的数据行
+ oldRows.forEach(row => {
+ if (!row.querySelector('td:first-child')) return;
+ const key = row.dataset.domain || row.querySelector('td:first-child').textContent;
+ if (!updatedRows.has(key)) {
+ // 添加淡出动画
+ row.classList.add('table-row-fade-out');
+ setTimeout(() => {
+ if (row.parentNode === tbody) {
+ tbody.removeChild(row);
+ }
+ }, 300);
+ }
+ });
+
+ // 批量更新表格内容,减少重排
+ requestAnimationFrame(() => {
+ // 保留未移除的行并按新顺序插入
+ const fragment = document.createDocumentFragment();
+
+ newRows.forEach(row => {
+ // 如果是新行,添加到文档片段
+ if (!row.parentNode || row.parentNode !== tbody) {
+ fragment.appendChild(row);
+ }
+ // 如果是已有行,移除它以便按新顺序重新插入
+ else if (tbody.contains(row)) {
+ tbody.removeChild(row);
+ fragment.appendChild(row);
+ }
+ });
+
+ // 将文档片段添加到表格
+ tbody.appendChild(fragment);
+
+ // 触发动画
+ setTimeout(() => {
+ newRows.forEach(row => {
+ row.style.opacity = '1';
+ });
+
+ // 移除过渡类和动画类
+ setTimeout(() => {
+ tbody.querySelectorAll('.table-row-fade-in').forEach(row => {
+ row.classList.remove('table-row-fade-in');
+ });
+ tbody.classList.remove('table-transition');
+ }, 300);
+ }, 10);
+
+ // 初始化表格排序
+ if (typeof initTableSort === 'function') {
+ initTableSort(tableId);
+ }
+ });
+}
+
+// 平滑更新数字
+function smoothUpdateNumber(element, oldValue, newValue) {
+ // 如果值相同,不更新
+ if (oldValue === newValue || !element) return;
+
+ // 根据数值差动态调整持续时间
+ const valueDiff = Math.abs(newValue - oldValue);
+ const baseDuration = 400;
+ const maxDuration = 1000;
+ // 数值变化越大,动画时间越长,但不超过最大值
+ const duration = Math.min(baseDuration + Math.log10(valueDiff + 1) * 200, maxDuration);
+
+ const startTime = performance.now();
+
+ function animate(currentTime) {
+ const elapsedTime = currentTime - startTime;
+ const progress = Math.min(elapsedTime / duration, 1);
+
+ // 使用easeOutQuart缓动函数,使动画更自然
+ let easeOutProgress;
+ if (progress < 1) {
+ // 四阶缓动函数:easeOutQuart
+ easeOutProgress = 1 - Math.pow(1 - progress, 4);
+ } else {
+ easeOutProgress = 1;
+ }
+
+ // 根据不同的数值范围使用不同的插值策略
+ let currentValue;
+ if (valueDiff < 10) {
+ // 小数值变化,使用线性插值
+ currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutProgress);
+ } else if (valueDiff < 100) {
+ // 中等数值变化,使用四舍五入
+ currentValue = Math.round(oldValue + (newValue - oldValue) * easeOutProgress);
+ } else {
+ // 大数值变化,使用更平滑的插值
+ currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutProgress);
+ }
+
+ // 更新显示
+ element.textContent = formatNumber(currentValue);
+
+ // 添加微小的缩放动画效果
+ const scaleFactor = 1 + 0.05 * Math.sin(progress * Math.PI);
+ element.style.transform = `scale(${scaleFactor})`;
+
+ // 继续动画
+ if (progress < 1) {
+ requestAnimationFrame(animate);
+ } else {
+ // 动画完成
+ element.textContent = formatNumber(newValue);
+ // 重置缩放
+ element.style.transform = 'scale(1)';
+
+ // 触发最终的高亮效果
+ element.classList.add('number-update-complete');
+ setTimeout(() => {
+ element.classList.remove('number-update-complete');
+ }, 300);
+ }
+ }
+
+ // 重置元素样式
+ element.style.transform = 'scale(1)';
+ // 开始动画
+ requestAnimationFrame(animate);
+}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/hosts.js b/staticbak/static/js/modules/hosts.js
new file mode 100644
index 0000000..7c0f374
--- /dev/null
+++ b/staticbak/static/js/modules/hosts.js
@@ -0,0 +1,308 @@
+// 初始化Hosts面板
+function initHostsPanel() {
+ // 加载Hosts列表
+ loadHosts();
+
+ // 初始化事件监听器
+ initHostsEventListeners();
+}
+
+// 初始化事件监听器
+function initHostsEventListeners() {
+ // 添加Hosts按钮
+ document.getElementById('add-hosts').addEventListener('click', addHostsEntry);
+
+ // Hosts过滤
+ document.getElementById('hosts-filter').addEventListener('input', filterHosts);
+
+ // 按Enter键添加Hosts
+ document.getElementById('hosts-domain').addEventListener('keypress', function(e) {
+ if (e.key === 'Enter') {
+ addHostsEntry();
+ }
+ });
+}
+
+// 加载Hosts列表
+function loadHosts() {
+ const tbody = document.getElementById('hosts-table').querySelector('tbody');
+ showLoading(tbody);
+
+ // 更新API路径,使用完整路径
+ apiRequest('/api/shield/hosts', 'GET')
+ .then(data => {
+ // 处理不同格式的响应数据
+ let hostsData;
+ if (Array.isArray(data)) {
+ hostsData = data;
+ } else if (data && data.hosts) {
+ hostsData = data.hosts;
+ } else {
+ hostsData = [];
+ }
+
+ renderHosts(hostsData);
+
+ // 更新Hosts数量统计
+ if (window.updateHostsCount && typeof window.updateHostsCount === 'function') {
+ window.updateHostsCount(hostsData.length);
+ }
+ })
+ .catch(error => {
+ console.error('获取Hosts列表失败:', error);
+
+ if (tbody) {
+ tbody.innerHTML = '
';
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('获取Hosts列表失败', 'danger');
+ }
+ });
+}
+
+// 渲染Hosts表格
+function renderHosts(hosts) {
+ const tbody = document.getElementById('hosts-table').querySelector('tbody');
+ if (!tbody) return;
+
+ if (!hosts || hosts.length === 0) {
+ // 使用更友好的空状态显示
+ tbody.innerHTML = '
';
+ return;
+ }
+
+ tbody.innerHTML = '';
+
+ hosts.forEach(entry => {
+ addHostsToTable(entry.ip, entry.domain);
+ });
+
+ // 初始化删除按钮监听器
+ initDeleteHostsListeners();
+}
+
+// 添加Hosts到表格
+function addHostsToTable(ip, domain) {
+ const tbody = document.getElementById('hosts-table').querySelector('tbody');
+ const row = document.createElement('tr');
+
+ row.innerHTML = `
+
+ `;
+
+ // 添加行动画效果
+ row.style.opacity = '0';
+ row.style.transform = 'translateY(10px)';
+ tbody.appendChild(row);
+
+ // 使用requestAnimationFrame确保动画平滑
+ requestAnimationFrame(() => {
+ row.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
+ row.style.opacity = '1';
+ row.style.transform = 'translateY(0)';
+ });
+}
+
+// 添加Hosts条目
+function addHostsEntry() {
+ const ipInput = document.getElementById('hosts-ip');
+ const domainInput = document.getElementById('hosts-domain');
+
+ const ip = ipInput.value.trim();
+ const domain = domainInput.value.trim();
+
+ if (!ip) {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('请输入IP地址', 'warning');
+ }
+ ipInput.focus();
+ return;
+ }
+
+ if (!domain) {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('请输入域名', 'warning');
+ }
+ domainInput.focus();
+ return;
+ }
+
+ // 简单的IP地址格式验证
+ if (!isValidIp(ip)) {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('请输入有效的IP地址', 'warning');
+ }
+ ipInput.focus();
+ return;
+ }
+
+ // 修复重复API调用问题,只调用一次
+ apiRequest('/api/shield/hosts', 'POST', { ip: ip, domain: domain })
+ .then(data => {
+ // 处理不同的响应格式
+ if (data.success || data.status === 'success') {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('Hosts条目添加成功', 'success');
+ }
+
+ // 清空输入框并聚焦到域名输入
+ ipInput.value = '';
+ domainInput.value = '';
+ domainInput.focus();
+
+ // 重新加载Hosts列表
+ loadHosts();
+
+ // 触发数据刷新事件
+ if (typeof window.triggerDataRefresh === 'function') {
+ window.triggerDataRefresh('hosts');
+ }
+ } else {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`添加失败: ${data.message || '未知错误'}`, 'danger');
+ }
+ }
+ })
+ .catch(error => {
+ console.error('添加Hosts条目失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('添加Hosts条目失败', 'danger');
+ }
+ });
+}
+
+// 删除Hosts条目
+function deleteHostsEntry(ip, domain) {
+ // 找到要删除的行并添加删除动画
+ const rows = document.querySelectorAll('#hosts-table tbody tr');
+ let targetRow = null;
+
+ rows.forEach(row => {
+ if (row.cells[0].textContent === ip && row.cells[1].textContent === domain) {
+ targetRow = row;
+ }
+ });
+
+ if (targetRow) {
+ targetRow.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
+ targetRow.style.opacity = '0';
+ targetRow.style.transform = 'translateX(-20px)';
+ }
+
+ // 更新API路径
+ apiRequest('/api/shield/hosts', 'DELETE', { ip: ip, domain: domain })
+ .then(data => {
+ // 处理不同的响应格式
+ if (data.success || data.status === 'success') {
+ // 等待动画完成后重新加载列表
+ setTimeout(() => {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('Hosts条目删除成功', 'success');
+ }
+ loadHosts();
+
+ // 触发数据刷新事件
+ if (typeof window.triggerDataRefresh === 'function') {
+ window.triggerDataRefresh('hosts');
+ }
+ }, 300);
+ } else {
+ // 恢复行样式
+ if (targetRow) {
+ targetRow.style.opacity = '1';
+ targetRow.style.transform = 'translateX(0)';
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification(`删除失败: ${data.message || '未知错误'}`, 'danger');
+ }
+ }
+ })
+ .catch(error => {
+ // 恢复行样式
+ if (targetRow) {
+ targetRow.style.opacity = '1';
+ targetRow.style.transform = 'translateX(0)';
+ }
+
+ console.error('删除Hosts条目失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('删除Hosts条目失败', 'danger');
+ }
+ });
+}
+
+// 过滤Hosts
+function filterHosts() {
+ const filterText = document.getElementById('hosts-filter').value.toLowerCase();
+ const rows = document.querySelectorAll('#hosts-table tbody tr');
+
+ rows.forEach(row => {
+ const ip = row.cells[0].textContent.toLowerCase();
+ const domain = row.cells[1].textContent.toLowerCase();
+
+ row.style.display = (ip.includes(filterText) || domain.includes(filterText)) ? '' : 'none';
+ });
+}
+
+// 为删除按钮添加事件监听器
+function initDeleteHostsListeners() {
+ document.querySelectorAll('.delete-hosts').forEach(button => {
+ button.addEventListener('click', function() {
+ const ip = this.getAttribute('data-ip');
+ const domain = this.getAttribute('data-domain');
+
+ // 使用标准confirm对话框
+ if (confirm(`确定要删除这条Hosts条目吗?\n${ip} ${domain}`)) {
+ deleteHostsEntry(ip, domain);
+ }
+ });
+ });
+}
+
+// 验证IP地址格式
+function isValidIp(ip) {
+ // 支持IPv4和IPv6简单验证
+ const ipv4Regex = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
+ const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}$/;
+
+ return ipv4Regex.test(ip) || ipv6Regex.test(ip);
+}
+
+// 导出函数,供其他模块调用
+window.updateHostsCount = function(count) {
+ const hostsCountElement = document.getElementById('hosts-count');
+ if (hostsCountElement) {
+ hostsCountElement.textContent = count;
+ }
+}
+
+// 导出初始化函数
+window.initHostsPanel = initHostsPanel;
+
+// 注册到面板导航系统
+if (window.registerPanelModule) {
+ window.registerPanelModule('hosts-panel', {
+ init: initHostsPanel,
+ refresh: loadHosts
+ });
+}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/query.js b/staticbak/static/js/modules/query.js
new file mode 100644
index 0000000..77ce7b1
--- /dev/null
+++ b/staticbak/static/js/modules/query.js
@@ -0,0 +1,294 @@
+// 初始化DNS查询面板
+function initQueryPanel() {
+ // 初始化事件监听器
+ initQueryEventListeners();
+
+ // 确保结果容器默认隐藏
+ const resultContainer = document.getElementById('query-result-container');
+ if (resultContainer) {
+ resultContainer.classList.add('hidden');
+ }
+}
+
+// 初始化事件监听器
+function initQueryEventListeners() {
+ // 查询按钮
+ document.getElementById('run-query').addEventListener('click', runDnsQuery);
+
+ // 按Enter键执行查询
+ document.getElementById('query-domain').addEventListener('keypress', function(e) {
+ if (e.key === 'Enter') {
+ runDnsQuery();
+ }
+ });
+}
+
+// 执行DNS查询
+function runDnsQuery() {
+ const domainInput = document.getElementById('query-domain');
+ const domain = domainInput.value.trim();
+
+ if (!domain) {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('请输入要查询的域名', 'warning');
+ }
+ domainInput.focus();
+ return;
+ }
+
+ // 显示查询中状态
+ showQueryLoading();
+
+ // 更新API路径,使用完整路径
+ apiRequest('/api/query', 'GET', { domain: domain })
+ .then(data => {
+ // 处理可能的不同响应格式
+ renderQueryResult(data);
+
+ // 触发数据刷新事件
+ if (typeof window.triggerDataRefresh === 'function') {
+ window.triggerDataRefresh('query');
+ }
+ })
+ .catch(error => {
+ console.error('DNS查询失败:', error);
+ showQueryError('查询失败,请稍后重试');
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('DNS查询失败', 'danger');
+ }
+ });
+}
+
+// 显示查询加载状态
+function showQueryLoading() {
+ const resultContainer = document.getElementById('query-result-container');
+ if (!resultContainer) return;
+
+ // 添加加载动画类
+ resultContainer.classList.add('loading-animation');
+ resultContainer.classList.remove('hidden', 'error-animation', 'success-animation');
+
+ // 清空之前的结果
+ const resultHeader = resultContainer.querySelector('.result-header h3');
+ const resultContent = resultContainer.querySelector('.result-content');
+
+ if (resultHeader) resultHeader.textContent = '查询中...';
+ if (resultContent) {
+ resultContent.innerHTML = '
';
+ }
+}
+
+// 显示查询错误
+function showQueryError(message) {
+ const resultContainer = document.getElementById('query-result-container');
+ if (!resultContainer) return;
+
+ // 添加错误动画类
+ resultContainer.classList.add('error-animation');
+ resultContainer.classList.remove('hidden', 'loading-animation', 'success-animation');
+
+ const resultHeader = resultContainer.querySelector('.result-header h3');
+ const resultContent = resultContainer.querySelector('.result-content');
+
+ if (resultHeader) resultHeader.textContent = '查询错误';
+ if (resultContent) {
+ resultContent.innerHTML = `
`;
+ }
+}
+
+// 渲染查询结果
+function renderQueryResult(result) {
+ const resultContainer = document.getElementById('query-result-container');
+ if (!resultContainer) return;
+
+ // 添加成功动画类
+ resultContainer.classList.add('success-animation');
+ resultContainer.classList.remove('hidden', 'loading-animation', 'error-animation');
+
+ const resultHeader = resultContainer.querySelector('.result-header h3');
+ const resultContent = resultContainer.querySelector('.result-content');
+
+ if (resultHeader) resultHeader.textContent = '查询结果';
+ if (!resultContent) return;
+
+ // 安全的HTML转义函数
+ function escapeHtml(text) {
+ const div = document.createElement('div');
+ div.textContent = text || '';
+ return div.innerHTML;
+ }
+
+ // 根据查询结果构建内容
+ let content = '
'; // 结束result-grid
+
+ // DNS响应(如果有)
+ if (result.dnsResponse) {
+ content += '
`;
+
+ resultContent.innerHTML = content;
+
+ // 通知用户查询成功
+ if (typeof window.showNotification === 'function') {
+ const statusMsg = isBlocked ? '查询完成,该域名被屏蔽' :
+ isAllowed ? '查询完成,该域名允许访问' : '查询完成';
+ window.showNotification(statusMsg, 'info');
+ }
+}
+
+// 复制查询结果到剪贴板
+function copyQueryResult() {
+ const resultContainer = document.getElementById('query-result-container');
+ if (!resultContainer) return;
+
+ // 收集关键信息
+ const domain = document.getElementById('result-domain')?.textContent || '未知域名';
+ const status = document.getElementById('result-status')?.textContent || '未知状态';
+ const ruleType = document.getElementById('result-rule-type')?.textContent || '无规则类型';
+ const matchedRule = document.getElementById('result-rule')?.textContent || '无匹配规则';
+ const queryTime = document.getElementById('result-time')?.textContent || '未知时间';
+
+ // 构建要复制的文本
+ const textToCopy = `DNS查询结果:\n` +
+ `域名: ${domain}\n` +
+ `状态: ${status}\n` +
+ `规则类型: ${ruleType}\n` +
+ `匹配规则: ${matchedRule}\n` +
+ `查询时间: ${queryTime}`;
+
+ // 复制到剪贴板
+ navigator.clipboard.writeText(textToCopy)
+ .then(() => {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('查询结果已复制到剪贴板', 'success');
+ }
+ })
+ .catch(err => {
+ console.error('复制失败:', err);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('复制失败,请手动复制', 'warning');
+ }
+ });
+}
+
+// 导出函数,供其他模块调用
+window.initQueryPanel = initQueryPanel;
+window.runDnsQuery = runDnsQuery;
+
+// 注册到面板导航系统
+if (window.registerPanelModule) {
+ window.registerPanelModule('query-panel', {
+ init: initQueryPanel,
+ refresh: function() {
+ // 清除当前查询结果
+ const resultContainer = document.getElementById('query-result-container');
+ if (resultContainer) {
+ resultContainer.classList.add('hidden');
+ }
+ }
+ });
+}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/rules.js b/staticbak/static/js/modules/rules.js
new file mode 100644
index 0000000..30d2c3c
--- /dev/null
+++ b/staticbak/static/js/modules/rules.js
@@ -0,0 +1,422 @@
+// 屏蔽规则管理模块
+
+// 全局变量
+let rules = [];
+let currentPage = 1;
+let itemsPerPage = 50; // 默认每页显示50条规则
+let filteredRules = [];
+
+// 初始化屏蔽规则面板
+function initRulesPanel() {
+ // 加载规则列表
+ loadRules();
+
+ // 绑定添加规则按钮事件
+ document.getElementById('add-rule-btn').addEventListener('click', addNewRule);
+
+ // 绑定刷新规则按钮事件
+ document.getElementById('reload-rules-btn').addEventListener('click', reloadRules);
+
+ // 绑定搜索框事件
+ document.getElementById('rule-search').addEventListener('input', filterRules);
+
+ // 绑定每页显示数量变更事件
+ document.getElementById('items-per-page').addEventListener('change', () => {
+ itemsPerPage = parseInt(document.getElementById('items-per-page').value);
+ currentPage = 1; // 重置为第一页
+ renderRulesList();
+ });
+
+ // 绑定分页按钮事件
+ document.getElementById('prev-page-btn').addEventListener('click', goToPreviousPage);
+ document.getElementById('next-page-btn').addEventListener('click', goToNextPage);
+ document.getElementById('first-page-btn').addEventListener('click', goToFirstPage);
+ document.getElementById('last-page-btn').addEventListener('click', goToLastPage);
+}
+
+// 加载规则列表
+async function loadRules() {
+ try {
+ const rulesPanel = document.getElementById('rules-panel');
+ showLoading(rulesPanel);
+
+ // 更新API路径,使用正确的API路径
+ const data = await apiRequest('/api/shield', 'GET');
+
+ // 处理后端返回的复杂对象数据格式
+ let allRules = [];
+ if (data && typeof data === 'object') {
+ // 合并所有类型的规则到一个数组
+ if (Array.isArray(data.domainRules)) allRules = allRules.concat(data.domainRules);
+ if (Array.isArray(data.domainExceptions)) allRules = allRules.concat(data.domainExceptions);
+ if (Array.isArray(data.regexRules)) allRules = allRules.concat(data.regexRules);
+ if (Array.isArray(data.regexExceptions)) allRules = allRules.concat(data.regexExceptions);
+ }
+
+ rules = allRules;
+ filteredRules = [...rules];
+ currentPage = 1; // 重置为第一页
+ renderRulesList();
+
+ // 更新规则数量统计卡片
+ if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
+ window.updateRulesCount(rules.length);
+ }
+ } catch (error) {
+ console.error('加载规则失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('加载规则失败', 'danger');
+ }
+ } finally {
+ const rulesPanel = document.getElementById('rules-panel');
+ hideLoading(rulesPanel);
+ }
+}
+
+// 渲染规则列表
+function renderRulesList() {
+ const rulesList = document.getElementById('rules-list');
+ const paginationInfo = document.getElementById('pagination-info');
+
+ // 清空列表
+ rulesList.innerHTML = '';
+
+ if (filteredRules.length === 0) {
+ // 使用更友好的空状态显示
+ rulesList.innerHTML = '
';
+ paginationInfo.textContent = '共0条规则';
+ updatePaginationButtons();
+ return;
+ }
+
+ // 计算分页数据
+ const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
+ const startIndex = (currentPage - 1) * itemsPerPage;
+ const endIndex = Math.min(startIndex + itemsPerPage, filteredRules.length);
+ const currentRules = filteredRules.slice(startIndex, endIndex);
+
+ // 渲染当前页的规则
+ currentRules.forEach((rule, index) => {
+ const row = document.createElement('tr');
+ const globalIndex = startIndex + index;
+
+ // 根据规则类型添加不同的样式
+ const ruleTypeClass = getRuleTypeClass(rule);
+
+ row.innerHTML = `
+
+ `;
+
+ // 添加行动画效果
+ row.style.opacity = '0';
+ row.style.transform = 'translateY(10px)';
+ rulesList.appendChild(row);
+
+ // 使用requestAnimationFrame确保动画平滑
+ requestAnimationFrame(() => {
+ row.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
+ row.style.opacity = '1';
+ row.style.transform = 'translateY(0)';
+ });
+ });
+
+ // 绑定删除按钮事件
+ document.querySelectorAll('.delete-rule').forEach(button => {
+ button.addEventListener('click', (e) => {
+ const index = parseInt(e.currentTarget.dataset.index);
+ deleteRule(index);
+ });
+ });
+
+ // 更新分页信息
+ paginationInfo.textContent = `显示 ${startIndex + 1}-${endIndex} 条,共 ${filteredRules.length} 条规则,第 ${currentPage}/${totalPages} 页`;
+
+ // 更新分页按钮状态
+ updatePaginationButtons();
+}
+
+// 更新分页按钮状态
+function updatePaginationButtons() {
+ const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
+ const prevBtn = document.getElementById('prev-page-btn');
+ const nextBtn = document.getElementById('next-page-btn');
+ const firstBtn = document.getElementById('first-page-btn');
+ const lastBtn = document.getElementById('last-page-btn');
+
+ prevBtn.disabled = currentPage === 1;
+ nextBtn.disabled = currentPage === totalPages || totalPages === 0;
+ firstBtn.disabled = currentPage === 1;
+ lastBtn.disabled = currentPage === totalPages || totalPages === 0;
+}
+
+// 上一页
+function goToPreviousPage() {
+ if (currentPage > 1) {
+ currentPage--;
+ renderRulesList();
+ }
+}
+
+// 下一页
+function goToNextPage() {
+ const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
+ if (currentPage < totalPages) {
+ currentPage++;
+ renderRulesList();
+ }
+}
+
+// 第一页
+function goToFirstPage() {
+ currentPage = 1;
+ renderRulesList();
+}
+
+// 最后一页
+function goToLastPage() {
+ currentPage = Math.ceil(filteredRules.length / itemsPerPage);
+ renderRulesList();
+}
+
+// 添加新规则
+async function addNewRule() {
+ const ruleInput = document.getElementById('rule-input');
+ const rule = ruleInput.value.trim();
+
+ if (!rule) {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('请输入规则内容', 'warning');
+ }
+ return;
+ }
+
+ try {
+ // 预处理规则,支持AdGuardHome格式
+ const processedRule = preprocessRule(rule);
+
+ // 使用正确的API路径
+ const response = await apiRequest('/api/shield', 'POST', { rule: processedRule });
+
+ // 处理不同的响应格式
+ if (response.success || response.status === 'success') {
+ rules.push(processedRule);
+ filteredRules = [...rules];
+ ruleInput.value = '';
+
+ // 添加后跳转到最后一页,显示新添加的规则
+ currentPage = Math.ceil(filteredRules.length / itemsPerPage);
+ renderRulesList();
+
+ // 更新规则数量统计
+ if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
+ window.updateRulesCount(rules.length);
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('规则添加成功', 'success');
+ }
+ } else {
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('规则添加失败:' + (response.message || '未知错误'), 'danger');
+ }
+ }
+ } catch (error) {
+ console.error('添加规则失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('添加规则失败', 'danger');
+ }
+ }
+}
+
+// 删除规则
+async function deleteRule(index) {
+ if (!confirm('确定要删除这条规则吗?')) {
+ return;
+ }
+
+ try {
+ const rule = filteredRules[index];
+ const rowElement = document.querySelectorAll('#rules-list tr')[index];
+
+ // 添加删除动画
+ if (rowElement) {
+ rowElement.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
+ rowElement.style.opacity = '0';
+ rowElement.style.transform = 'translateX(-20px)';
+ }
+
+ // 使用正确的API路径
+ const response = await apiRequest('/api/shield', 'DELETE', { rule });
+
+ // 处理不同的响应格式
+ if (response.success || response.status === 'success') {
+ // 在原规则列表中找到并删除
+ const originalIndex = rules.indexOf(rule);
+ if (originalIndex !== -1) {
+ rules.splice(originalIndex, 1);
+ }
+
+ // 在过滤后的列表中删除
+ filteredRules.splice(index, 1);
+
+ // 如果当前页没有数据了,回到上一页
+ const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
+ if (currentPage > totalPages && totalPages > 0) {
+ currentPage = totalPages;
+ }
+
+ // 等待动画完成后重新渲染列表
+ setTimeout(() => {
+ renderRulesList();
+
+ // 更新规则数量统计
+ if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
+ window.updateRulesCount(rules.length);
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('规则删除成功', 'success');
+ }
+ }, 300);
+ } else {
+ // 恢复行样式
+ if (rowElement) {
+ rowElement.style.opacity = '1';
+ rowElement.style.transform = 'translateX(0)';
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('规则删除失败:' + (response.message || '未知错误'), 'danger');
+ }
+ }
+ } catch (error) {
+ console.error('删除规则失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('删除规则失败', 'danger');
+ }
+ }
+}
+
+// 重新加载规则
+async function reloadRules() {
+ if (!confirm('确定要重新加载所有规则吗?这将覆盖当前内存中的规则。')) {
+ return;
+ }
+
+ try {
+ const rulesPanel = document.getElementById('rules-panel');
+ showLoading(rulesPanel);
+
+ // 使用正确的API路径和方法 - PUT请求到/api/shield
+ await apiRequest('/api/shield', 'PUT');
+
+ // 重新加载规则列表
+ await loadRules();
+
+ // 触发数据刷新事件,通知其他模块数据已更新
+ if (typeof window.triggerDataRefresh === 'function') {
+ window.triggerDataRefresh('rules');
+ }
+
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('规则重新加载成功', 'success');
+ }
+ } catch (error) {
+ console.error('重新加载规则失败:', error);
+ if (typeof window.showNotification === 'function') {
+ window.showNotification('重新加载规则失败', 'danger');
+ }
+ } finally {
+ const rulesPanel = document.getElementById('rules-panel');
+ hideLoading(rulesPanel);
+ }
+}
+
+// 过滤规则
+function filterRules() {
+ const searchTerm = document.getElementById('rule-search').value.toLowerCase();
+
+ if (searchTerm) {
+ filteredRules = rules.filter(rule => rule.toLowerCase().includes(searchTerm));
+ } else {
+ filteredRules = [...rules];
+ }
+
+ currentPage = 1; // 重置为第一页
+ renderRulesList();
+}
+
+// HTML转义,防止XSS攻击
+function escapeHtml(text) {
+ const map = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+ };
+ return text.replace(/[&<>'"]/g, m => map[m]);
+}
+
+// 根据规则类型返回对应的CSS类名
+function getRuleTypeClass(rule) {
+ // 简单的规则类型判断
+ if (rule.startsWith('||') || rule.startsWith('|http')) {
+ return 'rule-type-url';
+ } else if (rule.startsWith('@@')) {
+ return 'rule-type-exception';
+ } else if (rule.startsWith('#')) {
+ return 'rule-type-comment';
+ } else if (rule.includes('$')) {
+ return 'rule-type-filter';
+ }
+ return 'rule-type-standard';
+}
+
+// 预处理规则,支持多种规则格式
+function preprocessRule(rule) {
+ // 移除首尾空白字符
+ let processed = rule.trim();
+
+ // 处理AdGuardHome格式的规则
+ if (processed.startsWith('0.0.0.0 ') || processed.startsWith('127.0.0.1 ')) {
+ const parts = processed.split(' ');
+ if (parts.length >= 2) {
+ // 转换为AdBlock Plus格式
+ processed = '||' + parts[1] + '^';
+ }
+ }
+
+ return processed;
+}
+
+// 导出函数,供其他模块调用
+window.updateRulesCount = function(count) {
+ const rulesCountElement = document.getElementById('rules-count');
+ if (rulesCountElement) {
+ rulesCountElement.textContent = count;
+ }
+}
+
+// 导出初始化函数
+window.initRulesPanel = initRulesPanel;
+
+// 注册到面板导航系统
+if (window.registerPanelModule) {
+ window.registerPanelModule('rules-panel', {
+ init: initRulesPanel,
+ refresh: loadRules
+ });
+}
\ No newline at end of file
diff --git a/staticbak/static/js/query.js b/staticbak/static/js/query.js
new file mode 100644
index 0000000..6c9a764
--- /dev/null
+++ b/staticbak/static/js/query.js
@@ -0,0 +1,301 @@
+// DNS查询页面功能实现
+
+// 初始化查询页面
+function initQueryPage() {
+ console.log('初始化DNS查询页面...');
+ setupQueryEventListeners();
+ loadQueryHistory();
+}
+
+// 执行DNS查询
+async function handleDNSQuery() {
+ const domainInput = document.getElementById('dns-query-domain');
+ const resultDiv = document.getElementById('query-result');
+
+ if (!domainInput || !resultDiv) {
+ console.error('找不到必要的DOM元素');
+ return;
+ }
+
+ const domain = domainInput.value.trim();
+ if (!domain) {
+ showErrorMessage('请输入域名');
+ return;
+ }
+
+ try {
+ const response = await fetch(`/api/query?domain=${encodeURIComponent(domain)}`);
+ if (!response.ok) {
+ throw new Error('查询失败');
+ }
+
+ const result = await response.json();
+ displayQueryResult(result, domain);
+ saveQueryHistory(domain, result);
+ loadQueryHistory();
+ } catch (error) {
+ console.error('DNS查询出错:', error);
+ showErrorMessage('查询失败,请稍后重试');
+ }
+}
+
+// 显示查询结果
+function displayQueryResult(result, domain) {
+ const resultDiv = document.getElementById('query-result');
+ if (!resultDiv) return;
+
+ // 显示结果容器
+ resultDiv.classList.remove('hidden');
+
+ // 解析结果
+ const status = result.blocked ? '被屏蔽' : '正常';
+ const statusClass = result.blocked ? 'text-danger' : 'text-success';
+ const blockType = result.blocked ? result.blockRuleType || '未知' : '正常';
+ const blockRule = result.blocked ? result.blockRule || '未知' : '无';
+ const blockSource = result.blocked ? result.blocksource || '未知' : '无';
+ const timestamp = new Date(result.timestamp).toLocaleString();
+
+ // 更新结果显示
+ document.getElementById('result-domain').textContent = domain;
+ document.getElementById('result-status').innerHTML = `
`;
+ document.getElementById('result-type').textContent = blockType;
+
+ // 检查是否存在屏蔽规则显示元素,如果不存在则创建
+ let blockRuleElement = document.getElementById('result-block-rule');
+ if (!blockRuleElement) {
+ // 创建屏蔽规则显示区域
+ const grid = resultDiv.querySelector('.grid');
+ if (grid) {
+ const newGridItem = document.createElement('div');
+ newGridItem.className = 'bg-gray-50 p-4 rounded-lg';
+ newGridItem.innerHTML = `
+
+ `;
+ grid.appendChild(newGridItem);
+ blockRuleElement = document.getElementById('result-block-rule');
+ }
+ }
+
+ // 更新屏蔽规则显示
+ if (blockRuleElement) {
+ blockRuleElement.textContent = blockRule;
+ }
+
+ // 检查是否存在屏蔽来源显示元素,如果不存在则创建
+ let blockSourceElement = document.getElementById('result-block-source');
+ if (!blockSourceElement) {
+ // 创建屏蔽来源显示区域
+ const grid = resultDiv.querySelector('.grid');
+ if (grid) {
+ const newGridItem = document.createElement('div');
+ newGridItem.className = 'bg-gray-50 p-4 rounded-lg';
+ newGridItem.innerHTML = `
+
+ `;
+ grid.appendChild(newGridItem);
+ blockSourceElement = document.getElementById('result-block-source');
+ }
+ }
+
+ // 更新屏蔽来源显示
+ if (blockSourceElement) {
+ blockSourceElement.textContent = blockSource;
+ }
+
+ document.getElementById('result-time').textContent = timestamp;
+ document.getElementById('result-details').textContent = JSON.stringify(result, null, 2);
+}
+
+// 保存查询历史
+function saveQueryHistory(domain, result) {
+ // 获取现有历史记录
+ let history = JSON.parse(localStorage.getItem('dnsQueryHistory') || '[]');
+
+ // 创建历史记录项
+ const historyItem = {
+ domain: domain,
+ timestamp: new Date().toISOString(),
+ result: {
+ blocked: result.blocked,
+ blockRuleType: result.blockRuleType,
+ blockRule: result.blockRule,
+ blocksource: result.blocksource
+ }
+ };
+
+ // 添加到历史记录开头
+ history.unshift(historyItem);
+
+ // 限制历史记录数量
+ if (history.length > 20) {
+ history = history.slice(0, 20);
+ }
+
+ // 保存到本地存储
+ localStorage.setItem('dnsQueryHistory', JSON.stringify(history));
+}
+
+// 加载查询历史
+function loadQueryHistory() {
+ const historyDiv = document.getElementById('query-history');
+ if (!historyDiv) return;
+
+ // 获取历史记录
+ const history = JSON.parse(localStorage.getItem('dnsQueryHistory') || '[]');
+
+ if (history.length === 0) {
+ historyDiv.innerHTML = '
';
+ return;
+ }
+
+ // 生成历史记录HTML
+ const historyHTML = history.map(item => {
+ const statusClass = item.result.blocked ? 'text-danger' : 'text-success';
+ const statusText = item.result.blocked ? '被屏蔽' : '正常';
+ const blockType = item.result.blocked ? item.result.blockRuleType : '正常';
+ const blockRule = item.result.blocked ? item.result.blockRule : '无';
+ const blockSource = item.result.blocked ? item.result.blocksource : '无';
+ const formattedTime = new Date(item.timestamp).toLocaleString();
+
+ return `
+
+ `;
+ }).join('');
+
+ historyDiv.innerHTML = historyHTML;
+}
+
+// 从历史记录重新查询
+function requeryFromHistory(domain) {
+ const domainInput = document.getElementById('dns-query-domain');
+ if (domainInput) {
+ domainInput.value = domain;
+ handleDNSQuery();
+ }
+}
+
+// 清空查询历史
+function clearQueryHistory() {
+ if (confirm('确定要清空所有查询历史吗?')) {
+ localStorage.removeItem('dnsQueryHistory');
+ loadQueryHistory();
+ showSuccessMessage('查询历史已清空');
+ }
+}
+
+// 设置事件监听器
+function setupQueryEventListeners() {
+ // 查询按钮事件
+ const queryBtn = document.getElementById('dns-query-btn');
+ if (queryBtn) {
+ queryBtn.addEventListener('click', handleDNSQuery);
+ }
+
+ // 输入框回车键事件
+ const domainInput = document.getElementById('dns-query-domain');
+ if (domainInput) {
+ domainInput.addEventListener('keypress', (e) => {
+ if (e.key === 'Enter') {
+ e.preventDefault();
+ handleDNSQuery();
+ }
+ });
+ }
+
+ // 清空历史按钮事件
+ const clearHistoryBtn = document.getElementById('clear-history-btn');
+ if (clearHistoryBtn) {
+ clearHistoryBtn.addEventListener('click', clearQueryHistory);
+ }
+}
+
+
+
+// 显示成功消息
+function showSuccessMessage(message) {
+ showNotification(message, 'success');
+}
+
+// 显示错误消息
+function showErrorMessage(message) {
+ showNotification(message, 'error');
+}
+
+// 显示通知
+function showNotification(message, type = 'info') {
+ // 移除现有通知
+ const existingNotification = document.querySelector('.notification');
+ if (existingNotification) {
+ existingNotification.remove();
+ }
+
+ // 创建新通知
+ const notification = document.createElement('div');
+ notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
+
+ // 设置通知样式
+ if (type === 'success') {
+ notification.classList.add('bg-green-500', 'text-white');
+ } else if (type === 'error') {
+ notification.classList.add('bg-red-500', 'text-white');
+ } else {
+ notification.classList.add('bg-blue-500', 'text-white');
+ }
+
+ notification.innerHTML = `
+
+ `;
+
+ document.body.appendChild(notification);
+
+ // 显示通知
+ setTimeout(() => {
+ notification.classList.remove('opacity-0');
+ notification.classList.add('opacity-100');
+ }, 10);
+
+ // 3秒后隐藏通知
+ setTimeout(() => {
+ notification.classList.remove('opacity-100');
+ notification.classList.add('opacity-0');
+ setTimeout(() => {
+ notification.remove();
+ }, 300);
+ }, 3000);
+}
+
+// 页面加载完成后初始化
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initQueryPage);
+} else {
+ initQueryPage();
+}
+
+// 当切换到DNS查询页面时重新加载数据
+document.addEventListener('DOMContentLoaded', () => {
+ // 监听hash变化,当切换到DNS查询页面时重新加载数据
+ window.addEventListener('hashchange', () => {
+ if (window.location.hash === '#query') {
+ initQueryPage();
+ }
+ });
+});
\ No newline at end of file
diff --git a/staticbak/static/js/server-status.js b/staticbak/static/js/server-status.js
new file mode 100644
index 0000000..fa2d8c0
--- /dev/null
+++ b/staticbak/static/js/server-status.js
@@ -0,0 +1,305 @@
+// 服务器状态组件 - 显示CPU使用率和查询统计
+
+// 全局变量
+let serverStatusUpdateTimer = null;
+let previousServerData = {
+ cpu: 0,
+ queries: 0
+};
+
+// 初始化服务器状态组件
+function initServerStatusWidget() {
+ // 确保DOM元素存在
+ const widget = document.getElementById('server-status-widget');
+ if (!widget) return;
+
+ // 初始化页面类型检测
+ updateWidgetDisplayByPageType();
+
+ // 设置页面切换事件监听
+ handlePageSwitchEvents();
+
+ // 设置WebSocket监听(如果可用)
+ setupWebSocketListeners();
+
+ // 立即加载一次数据
+ loadServerStatusData();
+
+ // 设置定时更新(每5秒更新一次)
+ serverStatusUpdateTimer = setInterval(loadServerStatusData, 5000);
+}
+
+// 判断当前页面是否为仪表盘
+function isCurrentPageDashboard() {
+ // 方法1:检查侧边栏激活状态
+ const dashboardLink = document.querySelector('.sidebar a[href="#dashboard"]');
+ if (dashboardLink && dashboardLink.classList.contains('active')) {
+ return true;
+ }
+
+ // 方法2:检查仪表盘特有元素
+ const dashboardElements = [
+ '#dashboard-container',
+ '.dashboard-summary',
+ '#dashboard-stats'
+ ];
+
+ for (const selector of dashboardElements) {
+ if (document.querySelector(selector)) {
+ return true;
+ }
+ }
+
+ // 方法3:检查URL哈希值
+ if (window.location.hash === '#dashboard' || window.location.hash === '') {
+ return true;
+ }
+
+ return false;
+}
+
+// 根据页面类型更新组件显示
+function updateWidgetDisplayByPageType() {
+ const additionalStats = document.getElementById('server-additional-stats');
+ if (!additionalStats) return;
+
+ // 如果当前页面是仪表盘,隐藏额外统计指标
+ if (isCurrentPageDashboard()) {
+ additionalStats.classList.add('hidden');
+ } else {
+ // 非仪表盘页面,显示额外统计指标
+ additionalStats.classList.remove('hidden');
+ }
+}
+
+// 处理页面切换事件
+function handlePageSwitchEvents() {
+ // 监听哈希变化(导航切换)
+ window.addEventListener('hashchange', updateWidgetDisplayByPageType);
+
+ // 监听侧边栏点击事件
+ const sidebarLinks = document.querySelectorAll('.sidebar a');
+ sidebarLinks.forEach(link => {
+ link.addEventListener('click', function() {
+ // 延迟检查,确保页面已切换
+ setTimeout(updateWidgetDisplayByPageType, 100);
+ });
+ });
+
+ // 监听导航菜单点击事件
+ const navLinks = document.querySelectorAll('nav a');
+ navLinks.forEach(link => {
+ link.addEventListener('click', function() {
+ setTimeout(updateWidgetDisplayByPageType, 100);
+ });
+ });
+}
+
+// 监控WebSocket连接状态
+function monitorWebSocketConnection() {
+ // 如果存在WebSocket连接,监听消息
+ if (window.socket) {
+ window.socket.addEventListener('message', function(event) {
+ try {
+ const data = JSON.parse(event.data);
+ if (data.type === 'status_update') {
+ updateServerStatusWidget(data.payload);
+ }
+ } catch (error) {
+ console.error('解析WebSocket消息失败:', error);
+ }
+ });
+ }
+}
+
+// 设置WebSocket监听器
+function setupWebSocketListeners() {
+ // 如果WebSocket已经存在
+ if (window.socket) {
+ monitorWebSocketConnection();
+ } else {
+ // 监听socket初始化事件
+ window.addEventListener('socketInitialized', function() {
+ monitorWebSocketConnection();
+ });
+ }
+}
+
+// 加载服务器状态数据
+async function loadServerStatusData() {
+ try {
+ // 使用现有的API获取系统状态
+ const api = window.api || {};
+ const getStatusFn = api.getStatus || function() { return Promise.resolve({}); };
+ const statusData = await getStatusFn();
+ if (statusData && !statusData.error) {
+ updateServerStatusWidget(statusData);
+ }
+ } catch (error) {
+ console.error('加载服务器状态数据失败:', error);
+ }
+}
+
+// 更新服务器状态组件
+function updateServerStatusWidget(stats) {
+ // 确保组件存在
+ const widget = document.getElementById('server-status-widget');
+ if (!widget) return;
+
+ // 确保stats存在
+ stats = stats || {};
+
+ // 提取CPU使用率
+ let cpuUsage = 0;
+ if (stats.system && typeof stats.system.cpu === 'number') {
+ cpuUsage = stats.system.cpu;
+ } else if (typeof stats.cpuUsage === 'number') {
+ cpuUsage = stats.cpuUsage;
+ }
+
+ // 提取查询统计数据
+ let totalQueries = 0;
+ let blockedQueries = 0;
+ let allowedQueries = 0;
+
+ if (stats.dns) {
+ const allowed = typeof stats.dns.Allowed === 'number' ? stats.dns.Allowed : 0;
+ const blocked = typeof stats.dns.Blocked === 'number' ? stats.dns.Blocked : 0;
+ const errors = typeof stats.dns.Errors === 'number' ? stats.dns.Errors : 0;
+ totalQueries = allowed + blocked + errors;
+ blockedQueries = blocked;
+ allowedQueries = allowed;
+ } else {
+ totalQueries = typeof stats.totalQueries === 'number' ? stats.totalQueries : 0;
+ blockedQueries = typeof stats.blockedQueries === 'number' ? stats.blockedQueries : 0;
+ allowedQueries = typeof stats.allowedQueries === 'number' ? stats.allowedQueries : 0;
+ }
+
+ // 更新CPU使用率
+ const cpuValueElement = document.getElementById('server-cpu-value');
+ if (cpuValueElement) {
+ cpuValueElement.textContent = cpuUsage.toFixed(1) + '%';
+ }
+
+ const cpuBarElement = document.getElementById('server-cpu-bar');
+ if (cpuBarElement) {
+ cpuBarElement.style.width = Math.min(cpuUsage, 100) + '%';
+
+ // 根据CPU使用率改变颜色
+ if (cpuUsage > 80) {
+ cpuBarElement.className = 'h-full bg-danger rounded-full';
+ } else if (cpuUsage > 50) {
+ cpuBarElement.className = 'h-full bg-warning rounded-full';
+ } else {
+ cpuBarElement.className = 'h-full bg-success rounded-full';
+ }
+ }
+
+ // 更新查询量
+ const queriesValueElement = document.getElementById('server-queries-value');
+ if (queriesValueElement) {
+ queriesValueElement.textContent = formatNumber(totalQueries);
+ }
+
+ // 计算查询量百分比(假设最大查询量为10000)
+ const queryPercentage = Math.min((totalQueries / 10000) * 100, 100);
+ const queriesBarElement = document.getElementById('server-queries-bar');
+ if (queriesBarElement) {
+ queriesBarElement.style.width = queryPercentage + '%';
+ }
+
+ // 更新额外统计指标
+ const totalQueriesElement = document.getElementById('server-total-queries');
+ if (totalQueriesElement) {
+ totalQueriesElement.textContent = formatNumber(totalQueries);
+ }
+
+ const blockedQueriesElement = document.getElementById('server-blocked-queries');
+ if (blockedQueriesElement) {
+ blockedQueriesElement.textContent = formatNumber(blockedQueries);
+ }
+
+ const allowedQueriesElement = document.getElementById('server-allowed-queries');
+ if (allowedQueriesElement) {
+ allowedQueriesElement.textContent = formatNumber(allowedQueries);
+ }
+
+ // 添加光晕提示效果
+ if (previousServerData.cpu !== cpuUsage || previousServerData.queries !== totalQueries) {
+ addGlowEffect();
+ }
+
+ // 更新服务器状态指示器
+ const statusIndicator = document.getElementById('server-status-indicator');
+ if (statusIndicator) {
+ // 检查系统状态
+ if (stats.system && stats.system.status === 'error') {
+ statusIndicator.className = 'inline-block w-2 h-2 bg-danger rounded-full';
+ } else {
+ statusIndicator.className = 'inline-block w-2 h-2 bg-success rounded-full';
+ }
+ }
+
+ // 保存当前数据用于下次比较
+ previousServerData = {
+ cpu: cpuUsage,
+ queries: totalQueries
+ };
+}
+
+// 添加光晕提示效果
+function addGlowEffect() {
+ const widget = document.getElementById('server-status-widget');
+ if (!widget) return;
+
+ // 添加光晕类
+ widget.classList.add('glow-effect');
+
+ // 2秒后移除光晕
+ setTimeout(function() {
+ widget.classList.remove('glow-effect');
+ }, 2000);
+}
+
+// 格式化数字
+function formatNumber(num) {
+ // 显示完整数字的最大长度阈值
+ const MAX_FULL_LENGTH = 5;
+
+ // 先获取完整数字字符串
+ const fullNumStr = num.toString();
+
+ // 如果数字长度小于等于阈值,直接返回完整数字
+ if (fullNumStr.length <= MAX_FULL_LENGTH) {
+ return fullNumStr;
+ }
+
+ // 否则使用缩写格式
+ if (num >= 1000000) {
+ return (num / 1000000).toFixed(1) + 'M';
+ } else if (num >= 1000) {
+ return (num / 1000).toFixed(1) + 'K';
+ }
+
+ return fullNumStr;
+}
+
+// 在DOM加载完成后初始化
+window.addEventListener('DOMContentLoaded', function() {
+ // 延迟初始化,确保页面完全加载
+ setTimeout(initServerStatusWidget, 500);
+});
+
+// 在页面卸载时清理资源
+window.addEventListener('beforeunload', function() {
+ if (serverStatusUpdateTimer) {
+ clearInterval(serverStatusUpdateTimer);
+ serverStatusUpdateTimer = null;
+ }
+});
+
+// 导出函数供其他模块使用
+window.serverStatusWidget = {
+ init: initServerStatusWidget,
+ update: updateServerStatusWidget
+};
\ No newline at end of file
diff --git a/staticbak/static/js/shield.js b/staticbak/static/js/shield.js
new file mode 100644
index 0000000..a9ec599
--- /dev/null
+++ b/staticbak/static/js/shield.js
@@ -0,0 +1,1302 @@
+// 屏蔽管理页面功能实现
+
+// 初始化屏蔽管理页面
+async function initShieldPage() {
+ // 并行加载所有数据
+ await Promise.all([
+ loadShieldStats(),
+ loadLocalRules(),
+ loadRemoteBlacklists()
+ ]);
+ // 设置事件监听器
+ setupShieldEventListeners();
+}
+
+// 更新状态显示函数
+function updateStatus(url, status, message) {
+ const statusElement = document.getElementById(`update-status-${encodeURIComponent(url)}`);
+ if (!statusElement) return;
+
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ let statusHTML = '';
+
+ switch (status) {
+ case 'loading':
+ statusHTML = '
';
+ }
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 设置新的HTML内容
+ statusElement.innerHTML = statusHTML;
+
+ // 添加过渡类和对应状态类
+ statusElement.classList.add('status-transition');
+
+ // 如果不是默认状态,添加淡入动画和对应状态类
+ if (status !== 'default') {
+ statusElement.classList.add('status-fade-in');
+ statusElement.classList.add(`status-${status}`);
+ }
+
+ // 如果是成功或失败状态,3秒后渐变消失
+ if (status === 'success' || status === 'error') {
+ setTimeout(() => {
+ // 添加淡出类
+ statusElement.classList.add('status-fade-out');
+
+ // 等待淡出动画完成后切换到默认状态
+ setTimeout(() => {
+ // 清除所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+ // 设置默认状态
+ statusElement.innerHTML = '
';
+ }, 300); // 与CSS动画持续时间一致
+ }, 3000);
+ }
+}
+
+// 更新规则状态显示函数
+function updateRuleStatus(rule, status, message) {
+ const statusElement = document.getElementById(`rule-status-${encodeURIComponent(rule)}`);
+ if (!statusElement) return;
+
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ let statusHTML = '';
+
+ switch (status) {
+ case 'loading':
+ statusHTML = '
';
+ }
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 设置新的HTML内容
+ statusElement.innerHTML = statusHTML;
+
+ // 添加过渡类和对应状态类
+ statusElement.classList.add('status-transition');
+
+ // 如果不是默认状态,添加淡入动画和对应状态类
+ if (status !== 'default') {
+ statusElement.classList.add('status-fade-in');
+ statusElement.classList.add(`status-${status}`);
+ }
+
+ // 如果是成功或失败状态,3秒后渐变消失
+ if (status === 'success' || status === 'error') {
+ setTimeout(() => {
+ // 添加淡出类
+ statusElement.classList.add('status-fade-out');
+
+ // 等待淡出动画完成后切换到默认状态
+ setTimeout(() => {
+ // 清除所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+ // 设置默认状态
+ statusElement.innerHTML = '
';
+ }, 300); // 与CSS动画持续时间一致
+ }, 3000);
+ }
+}
+
+// 数字更新动画函数
+function animateCounter(element, target, duration = 1000) {
+ // 确保element存在
+ if (!element) return;
+
+ // 清除元素上可能存在的现有定时器
+ if (element.animationTimer) {
+ clearInterval(element.animationTimer);
+ }
+
+ // 确保target是数字
+ const targetNum = typeof target === 'number' ? target : parseInt(target) || 0;
+
+ // 获取起始值,使用更安全的方法
+ const startText = element.textContent.replace(/[^0-9]/g, '');
+ const start = parseInt(startText) || 0;
+
+ // 如果起始值和目标值相同,直接返回
+ if (start === targetNum) {
+ element.textContent = targetNum;
+ return;
+ }
+
+ let current = start;
+ const increment = (targetNum - start) / (duration / 16); // 16ms per frame
+
+ // 使用requestAnimationFrame实现更平滑的动画
+ let startTime = null;
+
+ function updateCounter(timestamp) {
+ if (!startTime) startTime = timestamp;
+ const elapsed = timestamp - startTime;
+ const progress = Math.min(elapsed / duration, 1);
+
+ // 使用缓动函数使动画更自然
+ const easeOutQuad = progress * (2 - progress);
+ current = start + (targetNum - start) * easeOutQuad;
+
+ // 根据方向使用floor或ceil确保平滑过渡
+ const displayValue = targetNum > start ? Math.floor(current) : Math.ceil(current);
+ element.textContent = displayValue;
+
+ if (progress < 1) {
+ // 继续动画
+ element.animationTimer = requestAnimationFrame(updateCounter);
+ } else {
+ // 动画结束,确保显示准确值
+ element.textContent = targetNum;
+ // 清除定时器引用
+ element.animationTimer = null;
+ }
+ }
+
+ // 开始动画
+ element.animationTimer = requestAnimationFrame(updateCounter);
+}
+
+// 加载屏蔽规则统计信息
+async function loadShieldStats() {
+ try {
+ // 获取屏蔽规则统计信息
+ const shieldResponse = await fetch('/api/shield');
+
+ if (!shieldResponse.ok) {
+ throw new Error(`加载屏蔽统计失败: ${shieldResponse.status}`);
+ }
+
+ const stats = await shieldResponse.json();
+
+ // 获取黑名单列表,计算禁用数量
+ const blacklistsResponse = await fetch('/api/shield/blacklists');
+
+ if (!blacklistsResponse.ok) {
+ throw new Error(`加载黑名单列表失败: ${blacklistsResponse.status}`);
+ }
+
+ const blacklists = await blacklistsResponse.json();
+ const disabledBlacklistCount = blacklists.filter(blacklist => !blacklist.enabled).length;
+
+ // 更新统计信息
+ const elements = [
+ { id: 'domain-rules-count', value: stats.domainRulesCount },
+ { id: 'domain-exceptions-count', value: stats.domainExceptionsCount },
+ { id: 'regex-rules-count', value: stats.regexRulesCount },
+ { id: 'regex-exceptions-count', value: stats.regexExceptionsCount },
+ { id: 'hosts-rules-count', value: stats.hostsRulesCount },
+ { id: 'blacklist-count', value: stats.blacklistCount }
+ ];
+
+ elements.forEach(item => {
+ const element = document.getElementById(item.id);
+ if (element) {
+ animateCounter(element, item.value || 0);
+ }
+ });
+
+ // 更新禁用黑名单数量
+ const disabledBlacklistElement = document.getElementById('blacklist-disabled-count');
+ if (disabledBlacklistElement) {
+ animateCounter(disabledBlacklistElement, disabledBlacklistCount);
+ }
+ } catch (error) {
+ console.error('加载屏蔽规则统计信息失败:', error);
+ showNotification('加载屏蔽规则统计信息失败', 'error');
+ }
+}
+
+// 加载自定义规则
+async function loadLocalRules() {
+ try {
+ const response = await fetch('/api/shield/localrules');
+
+ if (!response.ok) {
+ throw new Error(`加载失败: ${response.status}`);
+ }
+
+ const data = await response.json();
+
+ // 更新自定义规则数量显示
+ if (document.getElementById('local-rules-count')) {
+ document.getElementById('local-rules-count').textContent = data.localRulesCount || 0;
+ }
+
+ // 设置当前规则类型
+ currentRulesType = 'local';
+
+ // 合并所有自定义规则
+ let rules = [];
+ // 添加域名规则
+ if (Array.isArray(data.domainRules)) {
+ rules = rules.concat(data.domainRules);
+ }
+ // 添加域名排除规则
+ if (Array.isArray(data.domainExceptions)) {
+ rules = rules.concat(data.domainExceptions);
+ }
+ // 添加正则规则
+ if (Array.isArray(data.regexRules)) {
+ rules = rules.concat(data.regexRules);
+ }
+ // 添加正则排除规则
+ if (Array.isArray(data.regexExceptions)) {
+ rules = rules.concat(data.regexExceptions);
+ }
+
+ updateRulesTable(rules);
+ } catch (error) {
+ console.error('加载自定义规则失败:', error);
+ showNotification('加载自定义规则失败', 'error');
+ }
+}
+
+// 加载远程规则
+async function loadRemoteRules() {
+ try {
+ // 设置当前规则类型
+ currentRulesType = 'remote';
+ const response = await fetch('/api/shield/remoterules');
+
+ if (!response.ok) {
+ throw new Error(`加载失败: ${response.status}`);
+ }
+
+ const data = await response.json();
+
+ // 更新远程规则数量显示
+ if (document.getElementById('remote-rules-count')) {
+ document.getElementById('remote-rules-count').textContent = data.remoteRulesCount || 0;
+ }
+
+ // 合并所有远程规则
+ let rules = [];
+ // 添加域名规则
+ if (Array.isArray(data.domainRules)) {
+ rules = rules.concat(data.domainRules);
+ }
+ // 添加域名排除规则
+ if (Array.isArray(data.domainExceptions)) {
+ rules = rules.concat(data.domainExceptions);
+ }
+ // 添加正则规则
+ if (Array.isArray(data.regexRules)) {
+ rules = rules.concat(data.regexRules);
+ }
+ // 添加正则排除规则
+ if (Array.isArray(data.regexExceptions)) {
+ rules = rules.concat(data.regexExceptions);
+ }
+
+ updateRulesTable(rules);
+ } catch (error) {
+ console.error('加载远程规则失败:', error);
+ showNotification('加载远程规则失败', 'error');
+ }
+}
+
+// 更新规则表格
+function updateRulesTable(rules) {
+ const tbody = document.getElementById('rules-table-body');
+
+ // 清空表格
+ tbody.innerHTML = '';
+
+ if (rules.length === 0) {
+ const emptyRow = document.createElement('tr');
+ emptyRow.innerHTML = '
';
+ tbody.appendChild(emptyRow);
+ return;
+ }
+
+ // 对于大量规则,限制显示数量
+ const maxRulesToShow = 1000; // 限制最大显示数量
+ const rulesToShow = rules.length > maxRulesToShow ? rules.slice(0, maxRulesToShow) : rules;
+
+ // 使用DocumentFragment提高性能
+ const fragment = document.createDocumentFragment();
+
+ rulesToShow.forEach(rule => {
+ const tr = document.createElement('tr');
+ tr.className = 'border-b border-gray-200';
+
+ const tdRule = document.createElement('td');
+ tdRule.className = 'py-3 px-4';
+ tdRule.textContent = rule;
+
+ const tdStatus = document.createElement('td');
+ tdStatus.className = 'py-3 px-4 text-center';
+ tdStatus.id = `rule-status-${encodeURIComponent(rule)}`;
+ tdStatus.innerHTML = '
';
+
+ const tdAction = document.createElement('td');
+ tdAction.className = 'py-3 px-4 text-right';
+
+ const deleteBtn = document.createElement('button');
+ deleteBtn.className = 'delete-rule-btn px-3 py-1 bg-danger text-white rounded-md hover:bg-danger/90 transition-colors text-sm';
+ deleteBtn.dataset.rule = rule;
+
+ // 创建删除图标
+ const deleteIcon = document.createElement('i');
+ deleteIcon.className = 'fa fa-trash';
+ deleteIcon.style.pointerEvents = 'none'; // 防止图标拦截点击事件
+
+ deleteBtn.appendChild(deleteIcon);
+
+ // 使用普通函数,确保this指向按钮元素
+ deleteBtn.onclick = function(e) {
+ e.stopPropagation(); // 阻止事件冒泡
+ handleDeleteRule(e);
+ };
+
+ tdAction.appendChild(deleteBtn);
+
+ tr.appendChild(tdRule);
+ tr.appendChild(tdStatus);
+ tr.appendChild(tdAction);
+ fragment.appendChild(tr);
+ });
+
+ // 一次性添加所有行到DOM
+ tbody.appendChild(fragment);
+
+ // 如果有更多规则,添加提示
+ if (rules.length > maxRulesToShow) {
+ const infoRow = document.createElement('tr');
+ infoRow.innerHTML = `
`;
+ tbody.appendChild(infoRow);
+ }
+}
+
+// 处理删除规则
+async function handleDeleteRule(e) {
+ console.log('Delete button clicked');
+ let deleteBtn;
+
+ // 尝试从事件目标获取按钮元素
+ deleteBtn = e.target.closest('.delete-rule-btn');
+ console.log('Delete button from event target:', deleteBtn);
+
+ // 尝试从this获取按钮元素(备用方案)
+ if (!deleteBtn && this && typeof this.classList === 'object' && this.classList) {
+ if (this.classList.contains('delete-rule-btn')) {
+ deleteBtn = this;
+ console.log('Delete button from this:', deleteBtn);
+ }
+ }
+
+ if (!deleteBtn) {
+ console.error('Delete button not found');
+ return;
+ }
+
+ const rule = deleteBtn.dataset.rule;
+ console.log('Rule to delete:', rule);
+
+ if (!rule) {
+ console.error('Rule not found in data-rule attribute');
+ return;
+ }
+
+ try {
+ // 显示加载状态
+ updateRuleStatus(rule, 'loading');
+
+ console.log('Sending DELETE request to /api/shield');
+ const response = await fetch('/api/shield', {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ rule })
+ });
+
+ console.log('Response status:', response.status);
+ console.log('Response ok:', response.ok);
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await response.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ console.log('Response data:', responseData);
+
+ // 根据服务器响应判断是否成功
+ if (response.ok && responseData.status === 'success') {
+ // 显示成功状态
+ updateRuleStatus(rule, 'success', '已删除');
+
+ showNotification('规则删除成功', 'success');
+ console.log('Current rules type:', currentRulesType);
+
+ // 延迟重新加载规则列表和统计信息,让用户能看到成功状态
+ setTimeout(() => {
+ // 根据当前显示的规则类型重新加载对应的规则列表
+ if (currentRulesType === 'local') {
+ console.log('Reloading local rules');
+ loadLocalRules();
+ } else {
+ console.log('Reloading remote rules');
+ loadRemoteRules();
+ }
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ } else {
+ const errorMessage = responseData.error || responseData.message || `删除规则失败: ${response.status}`;
+ // 显示错误状态
+ updateRuleStatus(rule, 'error', errorMessage);
+ throw new Error(errorMessage);
+ }
+ } catch (error) {
+ console.error('Error deleting rule:', error);
+ // 显示错误状态
+ updateRuleStatus(rule, 'error', error.message);
+ showNotification('删除规则失败: ' + error.message, 'error');
+ }
+}
+
+// 添加新规则
+async function handleAddRule() {
+ const rule = document.getElementById('new-rule').value.trim();
+ const statusElement = document.getElementById('save-rule-status');
+
+ if (!rule) {
+ showNotification('规则不能为空', 'error');
+ return;
+ }
+
+ try {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示加载状态
+ statusElement.innerHTML = '
正在添加...';
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和加载状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-loading');
+
+ const response = await fetch('/api/shield', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ rule })
+ });
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await response.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ // 根据服务器响应判断是否成功
+ if (response.ok && responseData.status === 'success') {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示成功状态
+ statusElement.innerHTML = '
';
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和成功状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-success');
+
+ showNotification('规则添加成功', 'success');
+ // 清空输入框
+ document.getElementById('new-rule').value = '';
+
+ // 延迟重新加载规则和统计信息,让用户能看到成功状态
+ setTimeout(() => {
+ // 重新加载规则
+ loadLocalRules();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ } else {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示失败状态
+ const errorMessage = responseData.error || responseData.message || '添加规则失败';
+ statusElement.innerHTML = `
`;
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和错误状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
+
+ showNotification(errorMessage, 'error');
+ }
+ } catch (error) {
+ console.error('Error adding rule:', error);
+
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示错误状态
+ const errorMessage = error.message || '添加规则失败';
+ statusElement.innerHTML = `
`;
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和错误状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
+
+ showNotification(errorMessage, 'error');
+ } finally {
+ // 3秒后渐变消失
+ setTimeout(() => {
+ // 添加淡出类
+ statusElement.classList.add('status-fade-out');
+
+ // 等待淡出动画完成后清除状态
+ setTimeout(() => {
+ // 清除所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+ // 清空状态显示
+ statusElement.innerHTML = '';
+ }, 300); // 与CSS动画持续时间一致
+ }, 3000);
+ }
+}
+
+// 加载远程黑名单
+async function loadRemoteBlacklists() {
+ try {
+ const response = await fetch('/api/shield/blacklists');
+
+ if (!response.ok) {
+ throw new Error(`加载失败: ${response.status}`);
+ }
+
+ const blacklists = await response.json();
+
+ // 确保blacklists是数组
+ const blacklistArray = Array.isArray(blacklists) ? blacklists : [];
+ updateBlacklistsTable(blacklistArray);
+ } catch (error) {
+ console.error('加载远程黑名单失败:', error);
+ showNotification('加载远程黑名单失败', 'error');
+ }
+}
+
+// 判断黑名单是否过期(超过24小时未更新视为过期)
+function isBlacklistExpired(lastUpdateTime) {
+ if (!lastUpdateTime) {
+ return true; // 从未更新过,视为过期
+ }
+
+ const lastUpdate = new Date(lastUpdateTime);
+ const now = new Date();
+ const hoursDiff = (now - lastUpdate) / (1000 * 60 * 60);
+
+ return hoursDiff > 24; // 超过24小时视为过期
+}
+
+// 更新黑名单表格
+function updateBlacklistsTable(blacklists) {
+ const tbody = document.getElementById('blacklists-table-body');
+
+ // 清空表格
+ tbody.innerHTML = '';
+
+ // 检查黑名单数据是否为空
+ if (!blacklists || blacklists.length === 0) {
+ const emptyRow = document.createElement('tr');
+ emptyRow.innerHTML = '
';
+ tbody.appendChild(emptyRow);
+ return;
+ }
+
+ // 对于大量黑名单,限制显示数量
+ const maxBlacklistsToShow = 100; // 限制最大显示数量
+ const blacklistsToShow = blacklists.length > maxBlacklistsToShow ? blacklists.slice(0, maxBlacklistsToShow) : blacklists;
+
+ // 使用DocumentFragment提高性能
+ const fragment = document.createDocumentFragment();
+
+ blacklistsToShow.forEach(blacklist => {
+ const tr = document.createElement('tr');
+ tr.className = 'border-b border-gray-200 hover:bg-gray-50';
+
+ // 名称单元格
+ const tdName = document.createElement('td');
+ tdName.className = 'py-3 px-4';
+ tdName.textContent = blacklist.name || '未命名';
+
+ // URL单元格
+ const tdUrl = document.createElement('td');
+ tdUrl.className = 'py-3 px-4 truncate max-w-xs';
+ tdUrl.textContent = blacklist.url;
+
+ // 状态单元格
+ const tdStatus = document.createElement('td');
+ tdStatus.className = 'py-3 px-4 text-center';
+
+ // 判断状态颜色:绿色(启用)、灰色(禁用)
+ let statusColor = 'bg-gray-300'; // 默认禁用
+ let statusText = '禁用';
+
+ if (blacklist.enabled) {
+ statusColor = 'bg-success'; // 绿色表示启用
+ statusText = '启用';
+ }
+
+ const statusContainer = document.createElement('div');
+ statusContainer.className = 'flex items-center justify-center';
+
+ const statusDot = document.createElement('span');
+ statusDot.className = `inline-block w-3 h-3 rounded-full ${statusColor}`;
+ statusDot.title = statusText;
+
+ const statusTextSpan = document.createElement('span');
+ statusTextSpan.className = 'text-sm ml-2';
+ statusTextSpan.textContent = statusText;
+
+ statusContainer.appendChild(statusDot);
+ statusContainer.appendChild(statusTextSpan);
+ tdStatus.appendChild(statusContainer);
+
+ // 更新状态单元格
+ const tdUpdateStatus = document.createElement('td');
+ tdUpdateStatus.className = 'py-3 px-4 text-center';
+ tdUpdateStatus.id = `update-status-${encodeURIComponent(blacklist.url)}`;
+ tdUpdateStatus.innerHTML = '
';
+
+ // 操作单元格
+ const tdActions = document.createElement('td');
+ tdActions.className = 'py-3 px-4 text-right space-x-2';
+
+ // 启用/禁用按钮
+ const toggleBtn = document.createElement('button');
+ toggleBtn.className = `toggle-blacklist-btn px-3 py-1 rounded-md transition-colors text-sm ${blacklist.enabled ? 'bg-warning text-white hover:bg-warning/90' : 'bg-success text-white hover:bg-success/90'}`;
+ toggleBtn.dataset.url = blacklist.url;
+ toggleBtn.dataset.enabled = blacklist.enabled;
+ toggleBtn.innerHTML = `
`;
+ toggleBtn.title = blacklist.enabled ? '禁用黑名单' : '启用黑名单';
+ toggleBtn.addEventListener('click', handleToggleBlacklist);
+
+ // 刷新按钮
+ const refreshBtn = document.createElement('button');
+ refreshBtn.className = 'update-blacklist-btn px-3 py-1 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors text-sm';
+ refreshBtn.dataset.url = blacklist.url;
+ refreshBtn.innerHTML = '
';
+ refreshBtn.title = '刷新黑名单';
+ refreshBtn.addEventListener('click', handleUpdateBlacklist);
+
+ // 删除按钮
+ const deleteBtn = document.createElement('button');
+ deleteBtn.className = 'delete-blacklist-btn px-3 py-1 bg-danger text-white rounded-md hover:bg-danger/90 transition-colors text-sm';
+ deleteBtn.dataset.url = blacklist.url;
+ deleteBtn.innerHTML = '
';
+ deleteBtn.title = '删除黑名单';
+ deleteBtn.addEventListener('click', handleDeleteBlacklist);
+
+ tdActions.appendChild(toggleBtn);
+ tdActions.appendChild(refreshBtn);
+ tdActions.appendChild(deleteBtn);
+
+ tr.appendChild(tdName);
+ tr.appendChild(tdUrl);
+ tr.appendChild(tdStatus);
+ tr.appendChild(tdUpdateStatus);
+ tr.appendChild(tdActions);
+ fragment.appendChild(tr);
+ });
+
+ // 一次性添加所有行到DOM
+ tbody.appendChild(fragment);
+
+ // 如果有更多黑名单,添加提示
+ if (blacklists.length > maxBlacklistsToShow) {
+ const infoRow = document.createElement('tr');
+ infoRow.innerHTML = `
`;
+ tbody.appendChild(infoRow);
+ }
+}
+
+// 处理更新单个黑名单
+async function handleUpdateBlacklist(e) {
+ // 确保获取到正确的按钮元素
+ const btn = e.target.closest('.update-blacklist-btn');
+ if (!btn) {
+ console.error('未找到更新按钮元素');
+ return;
+ }
+
+ const url = btn.dataset.url;
+
+ if (!url) {
+ showNotification('无效的黑名单URL', 'error');
+ return;
+ }
+
+ try {
+ // 显示加载状态
+ updateStatus(url, 'loading');
+
+ // 获取当前所有黑名单
+ const response = await fetch('/api/shield/blacklists');
+ if (!response.ok) {
+ throw new Error(`获取黑名单失败: ${response.status}`);
+ }
+
+ const blacklists = await response.json();
+
+ // 找到目标黑名单并更新其状态
+ const updatedBlacklists = blacklists.map(blacklist => {
+ if (blacklist.url === url) {
+ return {
+ Name: blacklist.name,
+ URL: blacklist.url,
+ Enabled: blacklist.enabled,
+ LastUpdateTime: new Date().toISOString()
+ };
+ }
+ return {
+ Name: blacklist.name,
+ URL: blacklist.url,
+ Enabled: blacklist.enabled,
+ LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
+ };
+ });
+
+ // 发送更新请求
+ const updateResponse = await fetch('/api/shield/blacklists', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(updatedBlacklists)
+ });
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await updateResponse.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ // 根据服务器响应判断是否成功
+ if (updateResponse.ok && (responseData.status === 'success' || !responseData.status)) {
+ // 显示成功状态
+ updateStatus(url, 'success');
+
+ // 显示通知
+ showNotification('黑名单更新成功', 'success');
+
+ // 延迟重新加载黑名单和统计信息,让用户能看到成功状态
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ } else {
+ // 显示失败状态
+ updateStatus(url, 'error', responseData.error || responseData.message || `更新失败: ${updateResponse.status}`);
+ showNotification(`黑名单更新失败: ${responseData.error || responseData.message || updateResponse.status}`, 'error');
+
+ // 延迟重新加载黑名单和统计信息
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ }
+ } catch (error) {
+ console.error('更新黑名单失败:', error);
+ // 显示错误状态
+ updateStatus(url, 'error', error.message);
+ showNotification('更新黑名单失败: ' + error.message, 'error');
+ }
+}
+
+// 处理删除黑名单
+async function handleDeleteBlacklist(e) {
+ // 确保获取到正确的按钮元素
+ const btn = e.target.closest('.delete-blacklist-btn');
+ if (!btn) {
+ console.error('未找到删除按钮元素');
+ return;
+ }
+
+ const url = btn.dataset.url;
+
+ if (!url) {
+ showNotification('无效的黑名单URL', 'error');
+ return;
+ }
+
+ // 确认删除
+ if (!confirm('确定要删除这个黑名单吗?删除后将无法恢复。')) {
+ return;
+ }
+
+ try {
+ // 获取当前行元素
+ const tr = btn.closest('tr');
+ if (!tr) {
+ console.error('未找到行元素');
+ return;
+ }
+
+ // 显示加载状态
+ updateStatus(url, 'loading');
+
+ // 获取当前所有黑名单
+ const response = await fetch('/api/shield/blacklists');
+ if (!response.ok) {
+ throw new Error(`获取黑名单失败: ${response.status}`);
+ }
+
+ const blacklists = await response.json();
+
+ // 过滤掉要删除的黑名单
+ const updatedBlacklists = blacklists.filter(blacklist => blacklist.url !== url);
+
+ // 发送更新请求
+ const updateResponse = await fetch('/api/shield/blacklists', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(updatedBlacklists)
+ });
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await updateResponse.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ // 根据服务器响应判断是否成功
+ if (updateResponse.ok && responseData.status === 'success') {
+ // 显示成功状态
+ updateStatus(url, 'success', '已删除');
+
+ // 显示通知
+ showNotification('黑名单删除成功', 'success');
+
+ // 延迟后渐变移除该行
+ setTimeout(() => {
+ // 添加渐变移除类
+ tr.style.transition = 'all 0.3s ease-in-out';
+ tr.style.opacity = '0';
+ tr.style.transform = 'translateX(-10px)';
+ tr.style.height = tr.offsetHeight + 'px';
+ tr.style.overflow = 'hidden';
+
+ // 等待过渡效果完成后,隐藏该行
+ setTimeout(() => {
+ tr.style.display = 'none';
+
+ // 延迟重新加载黑名单和统计信息,确保视觉效果完成
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 100);
+ }, 300);
+ }, 3000);
+ } else {
+ // 显示失败状态
+ const errorMessage = responseData.error || responseData.message || `删除失败: ${updateResponse.status}`;
+ updateStatus(url, 'error', errorMessage);
+ showNotification(errorMessage, 'error');
+
+ // 延迟重新加载黑名单和统计信息
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ }
+ } catch (error) {
+ console.error('删除黑名单失败:', error);
+ // 显示错误状态
+ updateStatus(url, 'error', error.message);
+ showNotification('删除黑名单失败: ' + error.message, 'error');
+ }
+}
+
+// 处理启用/禁用黑名单
+async function handleToggleBlacklist(e) {
+ // 确保获取到正确的按钮元素
+ const btn = e.target.closest('.toggle-blacklist-btn');
+ if (!btn) {
+ console.error('未找到启用/禁用按钮元素');
+ return;
+ }
+
+ const url = btn.dataset.url;
+ const currentEnabled = btn.dataset.enabled === 'true';
+
+ if (!url) {
+ showNotification('无效的黑名单URL', 'error');
+ return;
+ }
+
+ try {
+ // 显示加载状态
+ updateStatus(url, 'loading');
+
+ // 获取当前所有黑名单
+ const response = await fetch('/api/shield/blacklists');
+ if (!response.ok) {
+ throw new Error(`获取黑名单失败: ${response.status}`);
+ }
+
+ const blacklists = await response.json();
+
+ // 找到目标黑名单并更新其状态
+ const updatedBlacklists = blacklists.map(blacklist => {
+ if (blacklist.url === url) {
+ return {
+ Name: blacklist.name,
+ URL: blacklist.url,
+ Enabled: !currentEnabled,
+ LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
+ };
+ }
+ return {
+ Name: blacklist.name,
+ URL: blacklist.url,
+ Enabled: blacklist.enabled,
+ LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
+ };
+ });
+
+ // 发送更新请求
+ const updateResponse = await fetch('/api/shield/blacklists', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(updatedBlacklists)
+ });
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await updateResponse.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ // 根据服务器响应判断是否成功
+ if (updateResponse.ok && responseData.status === 'success') {
+ // 显示成功状态
+ updateStatus(url, 'success', currentEnabled ? '已禁用' : '已启用');
+
+ // 显示通知
+ showNotification(`黑名单已${currentEnabled ? '禁用' : '启用'}`, 'success');
+
+ // 延迟重新加载黑名单和统计信息,让用户能看到成功状态
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ } else {
+ // 显示失败状态
+ const errorMessage = responseData.error || responseData.message || `更新状态失败: ${updateResponse.status}`;
+ updateStatus(url, 'error', errorMessage);
+ showNotification(errorMessage, 'error');
+
+ // 延迟重新加载黑名单和统计信息
+ setTimeout(() => {
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ }, 3000);
+ }
+ } catch (error) {
+ console.error('启用/禁用黑名单失败:', error);
+ // 显示错误状态
+ updateStatus(url, 'error', error.message);
+ showNotification('启用/禁用黑名单失败: ' + error.message, 'error');
+ }
+}
+
+// 处理添加黑名单
+async function handleAddBlacklist(event) {
+ // 如果存在event参数,则调用preventDefault()防止表单默认提交
+ if (event && typeof event.preventDefault === 'function') {
+ event.preventDefault();
+ }
+
+ const nameInput = document.getElementById('blacklist-name');
+ const urlInput = document.getElementById('blacklist-url');
+ const statusElement = document.getElementById('save-blacklist-status');
+
+ const name = nameInput ? nameInput.value.trim() : '';
+ const url = urlInput ? urlInput.value.trim() : '';
+
+ // 简单验证
+ if (!name || !url) {
+ showNotification('名称和URL不能为空', 'error');
+ return;
+ }
+
+ // 验证URL格式
+ try {
+ new URL(url);
+ } catch (e) {
+ showNotification('URL格式不正确', 'error');
+ return;
+ }
+
+ try {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示加载状态
+ statusElement.innerHTML = '
正在添加...';
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和加载状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-loading');
+
+ // 发送添加请求
+ const response = await fetch('/api/shield/blacklists', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ name, url })
+ });
+
+ // 解析服务器响应
+ let responseData;
+ try {
+ responseData = await response.json();
+ } catch (jsonError) {
+ responseData = {};
+ }
+
+ // 根据服务器响应判断是否成功
+ if (response.ok && (responseData.status === 'success' || !responseData.status)) {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示成功状态
+ statusElement.innerHTML = '
';
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和成功状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-success');
+
+ showNotification('黑名单添加成功', 'success');
+ // 清空输入框
+ if (nameInput) nameInput.value = '';
+ if (urlInput) urlInput.value = '';
+ // 重新加载黑名单
+ loadRemoteBlacklists();
+ // 重新加载统计信息
+ loadShieldStats();
+ } else {
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示失败状态
+ const errorMessage = responseData.error || responseData.message || `添加失败: ${response.status}`;
+ statusElement.innerHTML = `
`;
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和错误状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
+
+ showNotification(errorMessage, 'error');
+ }
+ } catch (error) {
+ console.error('Error adding blacklist:', error);
+
+ // 清除之前的所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+
+ // 显示错误状态
+ const errorMessage = error.message || '添加黑名单失败';
+ statusElement.innerHTML = `
`;
+
+ // 强制重排,确保过渡效果生效
+ void statusElement.offsetWidth;
+
+ // 添加过渡类和错误状态类
+ statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
+
+ showNotification(errorMessage, 'error');
+ } finally {
+ // 3秒后渐变消失
+ setTimeout(() => {
+ // 添加淡出类
+ statusElement.classList.add('status-fade-out');
+
+ // 等待淡出动画完成后清除状态
+ setTimeout(() => {
+ // 清除所有类
+ statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
+ // 清空状态显示
+ statusElement.innerHTML = '';
+ }, 300); // 与CSS动画持续时间一致
+ }, 3000);
+ }
+}
+
+
+
+// 当前显示的规则类型:'local' 或 'remote'
+let currentRulesType = 'local';
+
+// 设置事件监听器
+function setupShieldEventListeners() {
+ // 自定义规则管理事件
+ const saveRuleBtn = document.getElementById('save-rule-btn');
+ if (saveRuleBtn) {
+ saveRuleBtn.addEventListener('click', handleAddRule);
+ }
+
+ // 远程黑名单管理事件
+ const saveBlacklistBtn = document.getElementById('save-blacklist-btn');
+ if (saveBlacklistBtn) {
+ saveBlacklistBtn.addEventListener('click', handleAddBlacklist);
+ }
+
+ // 添加切换查看自定义规则和远程规则的事件监听
+ const viewLocalRulesBtn = document.getElementById('view-local-rules-btn');
+ if (viewLocalRulesBtn) {
+ viewLocalRulesBtn.addEventListener('click', loadLocalRules);
+ }
+
+ const viewRemoteRulesBtn = document.getElementById('view-remote-rules-btn');
+ if (viewRemoteRulesBtn) {
+ viewRemoteRulesBtn.addEventListener('click', loadRemoteRules);
+ }
+}
+
+// 显示成功消息
+function showSuccessMessage(message) {
+ showNotification(message, 'success');
+}
+
+// 显示错误消息
+function showErrorMessage(message) {
+ showNotification(message, 'error');
+}
+
+
+
+// 显示通知
+function showNotification(message, type = 'info') {
+ // 移除现有通知
+ const existingNotification = document.querySelector('.notification');
+ if (existingNotification) {
+ existingNotification.remove();
+ }
+
+ // 创建新通知
+ const notification = document.createElement('div');
+ notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
+
+ // 设置通知样式
+ if (type === 'success') {
+ notification.classList.add('bg-green-500', 'text-white');
+ } else if (type === 'error') {
+ notification.classList.add('bg-red-500', 'text-white');
+ } else {
+ notification.classList.add('bg-blue-500', 'text-white');
+ }
+
+ notification.innerHTML = `
+
+ `;
+
+ document.body.appendChild(notification);
+
+ // 显示通知
+ setTimeout(() => {
+ notification.classList.remove('opacity-0');
+ notification.classList.add('opacity-100');
+ }, 10);
+
+ // 3秒后隐藏通知
+ setTimeout(() => {
+ notification.classList.remove('opacity-100');
+ notification.classList.add('opacity-0');
+ setTimeout(() => {
+ notification.remove();
+ }, 300);
+ }, 3000);
+}
+
+// 页面加载完成后初始化
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', initShieldPage);
+} else {
+ initShieldPage();
+}
+
+// 当切换到屏蔽管理页面时重新加载数据
+document.addEventListener('DOMContentLoaded', () => {
+ // 监听hash变化,当切换到屏蔽管理页面时重新加载数据
+ window.addEventListener('hashchange', () => {
+ if (window.location.hash === '#shield') {
+ initShieldPage();
+ }
+ });
+});
\ No newline at end of file
diff --git a/staticbak/static/js/vendor/chart.umd.min.js b/staticbak/static/js/vendor/chart.umd.min.js
new file mode 100644
index 0000000..eafab1b
--- /dev/null
+++ b/staticbak/static/js/vendor/chart.umd.min.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,function(){"use strict";var s=Object.freeze({__proto__:null,get Colors(){return dn},get Decimation(){return fn},get Filler(){return Dn},get Legend(){return Tn},get SubTitle(){return In},get Title(){return En},get Tooltip(){return Un}});function t(){}const F=(()=>{let t=0;return()=>t++})();function P(t){return null==t}function O(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function A(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function p(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function g(t,e){return p(t)?t:e}function T(t,e){return void 0===t?e:t}const V=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,B=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function k(t,e,i,s){let a,n,o;if(O(t))if(n=t.length,s)for(a=n-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;a