ADVERTISEMENT

Revisiting the Pi-Hole

Published Sep 5, 2018 12:00 am
By Rom Feria Screen Shot 2018-08-23 at 5.37.40 PM I recently updated my Pi-Hole instance to version 4.0, for faster FTLDNS and faster core processing. For those who are not familiar, Pi-Hole is an advert/tracker blocker for your network that runs on a small device like the Raspberry Pi. I use the Pi-Hole, in tandem with Circle with Disney and Firewalla, to protect my home network. Basically, all connections to the internet gets checked by Pi-Hole, and if an ad service, or a tracker, is detected, it prevents the device from connecting to it — leading it to a blackhole. This is similar to how you ad-blocker plug-in works on your browser, but only on a network scale. Discoveries After running it for a couple of months, I have identified the services or URLs that serve adverts, or worse, track you. Here’s a couple of these services, in no particular order: *.imrworldwide.com. This apparently gets accessed frequently by Amazon’s Kindle Fire tablets. The Pi-Hole recorded several servers from the imrworldwide.com domain, but blocking it does not hamper the Kindle Fire’s functionality. I suspect that this serves the ads on the Kindle Fire with Special Offers. I don’t mind the “special offers”, but the frequency that these devices connect to the server is annoying. .logs.roku.com. My Roku box regularly connects to this URL more than 1,000 times a day. device-metrics-us.amazon.comdevice-metrics-us-2.amazon.comamazon-adsystem.com, and data.alexa.com. I have two active Amazon Echo devices, and by design, it phones home. I know when it tries to connect since the Echo will temporarily indicate that it is offline. .crashlytics.com. This is a third-party mobile app analytics service. Normally, you use the service to gather device information when an application crashes. For some reason, it consistently connects to the server, which makes it suspect for doing some other background tasks besides the intended service. Screen Shot 2018-08-23 at 5.39.38 PM ip-api.com, *.mobileapptracking.com, .appboy.comapp-measurement.comdevice-api.urbanairship.comapptimize.com. Similar to crashlytics.com. www.baidu.com. The only Xiaomi device that I have that is constantly online is one of their cameras. googleads.g.doubleclick.netwww.googleadservices.com, .google-analytics.compagead2.googlesyndication.comfonts.googleapis.comwww.googletagservices.com. These Google trackers are blocked, too. Most of these are from browsing websites. ads.nexage.comz.moatads.com, *.wpdigital.net. Ad trackers. vortex.data.microsoft.com. One of the Kindle Fire tablets running Minecraft connects to Microsoft’s server, even when it is not being used (but online). metrics.icloud.com. This is an Apple service that I blocked. I don’t know what this collects. fbsbx.com. Facebook’s tracker. Summary The Pi-Hole effectively reduced the amount of data that gets sent out to trackers. Firewalla does the same thing, its AdBlocking feature is also turned on. The combination of browser plug-ins, Pi-Hole, Circle and Firewalla, seems to be an effective way to protect my family’s devices on our network. Exception My Macbook Pro does not use the Pi-Hole and Firewalla, but is protected by LittleSnitch (in addition to browser plug-ins uBlock Origin), which blocks all of the domains listed above. In fact, the entire Google.com/Google.com.ph domains are blocked by default. It is unblocked only when I need to use it. And no, no Facebook and Facebook services allowed, too.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.