├── .gitignore ├── scripts ├── .env example ├── data │ ├── ydns.io.json │ ├── cloudns.net.json │ ├── duiadns.net.json │ ├── gslb.me.json │ ├── dynv6.com.json │ ├── dnsexit.com.json │ ├── pubyun.com.json │ ├── dynu.com.json │ ├── now-dns.com.json │ ├── noip.com.json │ ├── changeip.com.json │ └── dyn.com.json ├── package.json ├── scrapers │ ├── dynv6.js │ ├── ydns.js │ ├── pubyun.js │ ├── dnsexit.js │ ├── dyn.js │ ├── dynu.js │ ├── cloudns.js │ ├── now-dns.js │ ├── duiadns.js │ ├── noip.js │ ├── changeip.js │ ├── gslb.js │ └── afraid.js ├── csv.js ├── main.js └── scraperUtils.js ├── .github ├── PULL_REQUEST_TEMPLATE │ ├── feature_request.md │ ├── provider_removal_request.md │ └── new_provider_request.md ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ └── daily-update.yml ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | scripts/node_modules/ 2 | scripts/.env 3 | -------------------------------------------------------------------------------- /scripts/.env example: -------------------------------------------------------------------------------- 1 | GSLB_USERNAME="" 2 | GSLB_PASSWORD="" 3 | CLOUDDNS_USERNAME="" 4 | CLOUDDNS_PASSWORD="" -------------------------------------------------------------------------------- /scripts/data/ydns.io.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "ydns.eu", 4 | "retrievedAt": "2024-02-18T17:56:25.534Z" 5 | } 6 | ] -------------------------------------------------------------------------------- /scripts/data/cloudns.net.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": ".cloudns.ph", 4 | "retrievedAt": "2023-07-13T19:50:57.060Z" 5 | }, 6 | { 7 | "domain": ".cloudns.nz", 8 | "retrievedAt": "2023-07-13T19:50:57.060Z" 9 | } 10 | ] -------------------------------------------------------------------------------- /scripts/data/duiadns.net.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "duia.eu", 4 | "retrievedAt": "2024-02-18T17:56:25.731Z" 5 | }, 6 | { 7 | "domain": "duia.ro", 8 | "retrievedAt": "2024-02-18T17:56:25.731Z" 9 | }, 10 | { 11 | "domain": "duia.us", 12 | "retrievedAt": "2024-02-18T17:56:25.731Z" 13 | } 14 | ] -------------------------------------------------------------------------------- /scripts/data/gslb.me.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "gslb.biz", 4 | "retrievedAt": "2024-02-18T17:56:29.610Z" 5 | }, 6 | { 7 | "domain": "gslb.eu", 8 | "retrievedAt": "2024-02-18T17:56:29.610Z" 9 | }, 10 | { 11 | "domain": "gslb.info", 12 | "retrievedAt": "2024-02-18T17:56:29.610Z" 13 | }, 14 | { 15 | "domain": "gslb.us", 16 | "retrievedAt": "2024-02-18T17:56:29.610Z" 17 | }, 18 | { 19 | "domain": "gslb.ws", 20 | "retrievedAt": "2024-02-18T17:56:29.610Z" 21 | } 22 | ] -------------------------------------------------------------------------------- /scripts/data/dynv6.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "dynv6.net", 4 | "retrievedAt": "2024-02-18T17:56:27.174Z" 5 | }, 6 | { 7 | "domain": "dns.army", 8 | "retrievedAt": "2024-02-18T17:56:27.174Z" 9 | }, 10 | { 11 | "domain": "dns.navy", 12 | "retrievedAt": "2024-02-18T17:56:27.174Z" 13 | }, 14 | { 15 | "domain": "v6.army", 16 | "retrievedAt": "2024-02-18T17:56:27.174Z" 17 | }, 18 | { 19 | "domain": "v6.navy", 20 | "retrievedAt": "2024-02-18T17:56:27.174Z" 21 | }, 22 | { 23 | "domain": "v6.rocks", 24 | "retrievedAt": "2024-02-18T17:56:27.174Z" 25 | } 26 | ] -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Request a feature 4 | labels: enhancement 5 | assignees: alexandrosmagos 6 | 7 | --- 8 | 9 | # Feature Request 10 | 11 | ## Feature Description 12 | 13 | Please describe the feature you would like to see. 14 | 15 | ## Motivation 16 | 17 | Why is this feature important? How can it benefit the project and its users? 18 | 19 | ## Possible Implementation 20 | 21 | (Optional) Suggest an idea for implementing the addition or change. 22 | 23 | ## Additional Context 24 | 25 | Add any other context or screenshots about the feature request here. -------------------------------------------------------------------------------- /scripts/data/dnsexit.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "publicvm.com", 4 | "retrievedAt": "2024-02-18T17:56:25.391Z" 5 | }, 6 | { 7 | "domain": "run.place", 8 | "retrievedAt": "2024-02-18T17:56:25.392Z" 9 | }, 10 | { 11 | "domain": "linkpc.net", 12 | "retrievedAt": "2024-02-18T17:56:25.392Z" 13 | }, 14 | { 15 | "domain": "line.pm", 16 | "retrievedAt": "2024-02-18T17:56:25.392Z" 17 | }, 18 | { 19 | "domain": "work.gd", 20 | "retrievedAt": "2024-02-18T17:56:25.392Z" 21 | }, 22 | { 23 | "domain": "", 24 | "retrievedAt": "2024-10-30T21:11:41.111Z" 25 | }, 26 | { 27 | "domain": "", 28 | "retrievedAt": "2024-10-30T21:11:41.111Z" 29 | } 30 | ] -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: alexandrosmagos 7 | 8 | --- 9 | 10 | # Bug Report 11 | 12 | ## Description 13 | 14 | Please provide a clear and concise description of the bug. 15 | 16 | ## Steps to Reproduce 17 | 18 | 1. 19 | 2. 20 | 3. 21 | 22 | ## Expected Behavior 23 | 24 | What you expected to happen. 25 | 26 | ## Actual Behavior 27 | 28 | What actually happened. 29 | 30 | ## Screenshots 31 | 32 | If applicable, add screenshots to help explain your problem. 33 | 34 | ## Additional Context 35 | 36 | Any additional information, configuration, or data that might be necessary to reproduce the issue. 37 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/provider_removal_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Provider Removal Request 3 | about: Request provider to be removed to the script 4 | labels: enhancement 5 | assignees: alexandrosmagos 6 | 7 | --- 8 | 9 | # Provider Removal Request 10 | 11 | ## Provider Information (Required) 12 | 13 | - Name of the Provider: 14 | - Reason for Removal: 15 | 16 | ## Impact Analysis (Optional) 17 | 18 | - Are there alternatives or replacements for this provider's functionality within the project? 19 | 20 | ## Additional Context 21 | 22 | Please provide any other information that supports the removal of this provider, including: 23 | - Any issues or problems caused by the provider. 24 | - Feedback from users regarding the provider. 25 | 26 | _Thank you for helping to maintain the quality and relevance of our project's resources._ 27 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/new_provider_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New Provider Request 3 | about: Request a new provider to be added to the script 4 | labels: enhancement 5 | assignees: alexandrosmagos 6 | 7 | --- 8 | 9 | # New Provider Request 10 | 11 | ## Provider Information (Required) 12 | 13 | - Provider's Website URL: 14 | - Documentation URL: 15 | - List of Domains/Servers: 16 | 17 | ## Reasons for Adding (Optional) 18 | 19 | - Why is this provider a valuable addition to the project? 20 | - How will it benefit the project and its users? 21 | 22 | ## Additional Context 23 | 24 | Please provide any additional information that might be helpful, such as: 25 | - Special configurations or considerations required for integrating this provider. 26 | - Any limitations or caveats that users should be aware of. 27 | 28 | _Thank you for contributing to the project by suggesting a new provider!_ -------------------------------------------------------------------------------- /scripts/data/pubyun.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "x3322.net", 4 | "retrievedAt": "2024-02-18T17:56:26.593Z" 5 | }, 6 | { 7 | "domain": "8866.org", 8 | "retrievedAt": "2024-02-18T17:56:26.593Z" 9 | }, 10 | { 11 | "domain": "9966.org", 12 | "retrievedAt": "2024-02-18T17:56:26.593Z" 13 | }, 14 | { 15 | "domain": "8800.org", 16 | "retrievedAt": "2024-02-18T17:56:26.593Z" 17 | }, 18 | { 19 | "domain": "2288.org", 20 | "retrievedAt": "2024-02-18T17:56:26.593Z" 21 | }, 22 | { 23 | "domain": "6600.org", 24 | "retrievedAt": "2024-02-18T17:56:26.593Z" 25 | }, 26 | { 27 | "domain": "7766.org", 28 | "retrievedAt": "2024-02-18T17:56:26.593Z" 29 | }, 30 | { 31 | "domain": "webok.net", 32 | "retrievedAt": "2024-02-18T17:56:26.593Z" 33 | }, 34 | { 35 | "domain": "eatuo.com", 36 | "retrievedAt": "2024-02-18T17:56:26.593Z" 37 | } 38 | ] -------------------------------------------------------------------------------- /scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dyndns", 3 | "version": "1.0.0", 4 | "description": "While working on another project, I needed a list of domains being used for dynamic DNS, and since I've lost a few hours of my life, I decided to just release the list.", 5 | "main": "index.js", 6 | "engines": { 7 | "node": ">=18.0.0" 8 | }, 9 | "scripts": { 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/alexandrosmagos/dyndns.git" 15 | }, 16 | "keywords": [], 17 | "author": "", 18 | "license": "ISC", 19 | "bugs": { 20 | "url": "https://github.com/alexandrosmagos/dyndns/issues" 21 | }, 22 | "homepage": "https://github.com/alexandrosmagos/dyndns#readme", 23 | "dependencies": { 24 | "cheerio": "^1.1.2", 25 | "csv-writer": "^1.6.0", 26 | "dotenv": "^17.2.1", 27 | "puppeteer": "^24.33.0" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /scripts/scrapers/dynv6.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const { loadData, saveDomains } = require('../scraperUtils'); 3 | 4 | const filePath = path.join(__dirname, "..", "data", "dynv6.com.json"); 5 | 6 | async function scrapeDomains(browser) { 7 | const page = await browser.newPage(); 8 | await page.goto("https://dynv6.com/"); 9 | const options = await page.evaluate(() => Array.from(document.querySelectorAll("#domain option"), option => option.textContent.trim())); 10 | 11 | const domains = options.filter(domain => domain !== "delegate your own domain …").map(domain => ({ 12 | domain: domain, 13 | retrievedAt: new Date().toISOString(), 14 | })); 15 | 16 | await page.close(); 17 | return domains; 18 | } 19 | 20 | async function scrape(browser) { 21 | let data = await loadData(filePath); 22 | const newDomains = await scrapeDomains(browser); 23 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 24 | if (uniqueNewDomains.length > 0) await saveDomains(filePath, [...data, ...uniqueNewDomains]); 25 | console.log(`Added ${uniqueNewDomains.length} new domains from https://dynv6.com`); 26 | } 27 | 28 | module.exports = { scrape }; -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /.github/workflows/daily-update.yml: -------------------------------------------------------------------------------- 1 | name: Update CSV and TXT Files 2 | 3 | on: 4 | schedule: 5 | - cron: '0 21 * * *' 6 | workflow_dispatch: 7 | 8 | jobs: 9 | update-files: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Check out repository 14 | uses: actions/checkout@v4 15 | 16 | - name: Set up Node.js 17 | uses: actions/setup-node@v4 18 | with: 19 | node-version: 20 20 | cache: 'npm' 21 | cache-dependency-path: scripts/package-lock.json 22 | 23 | - name: Change to scripts directory 24 | run: cd scripts 25 | 26 | - name: Install dependencies 27 | run: | 28 | cd scripts 29 | npm ci 30 | npm install puppeteer --force 31 | - name: Run main script 32 | run: | 33 | cd scripts 34 | node main.js 35 | env: 36 | NOIP_USERNAME: ${{ secrets.NOIP_USERNAME }} 37 | NOIP_PASSWORD: ${{ secrets.NOIP_PASSWORD }} 38 | GSLB_USERNAME: ${{ secrets.GSLB_USERNAME }} 39 | GSLB_PASSWORD: ${{ secrets.GSLB_PASSWORD }} 40 | CLOUDDNS_USERNAME: ${{ secrets.CLOUDDNS_USERNAME }} 41 | CLOUDDNS_PASSWORD: ${{ secrets.CLOUDDNS_PASSWORD }} 42 | 43 | - name: Commit and push if there are changes 44 | run: | 45 | git pull 46 | git config --global user.email "action@github.com" 47 | git config --global user.name "GitHub Action" 48 | git add -A 49 | git commit -m "Automatically update .csv and .txt files" || exit 0 50 | git commit -m "Update daily dyndns" --allow-empty 51 | git push 52 | -------------------------------------------------------------------------------- /scripts/scrapers/ydns.js: -------------------------------------------------------------------------------- 1 | const cheerio = require('cheerio'); 2 | const path = require('path'); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "ydns.io.json"); 6 | 7 | async function fetchAndParseDomains() { 8 | const response = await fetchWithRetry("https://ydns.io/domains/"); 9 | const body = await response.text(); 10 | const $ = cheerio.load(body); 11 | const domains = []; 12 | 13 | $("table.table tbody tr").each((_, element) => { 14 | const domain = $(element).find("td:first-child a").text().trim(); 15 | if (domain) { 16 | domains.push({ 17 | domain: domain, 18 | retrievedAt: new Date().toISOString(), 19 | }); 20 | } 21 | }); 22 | 23 | return domains; 24 | } 25 | 26 | async function scrape() { 27 | try { 28 | console.log("🚀 Starting ydns.io scraper..."); 29 | const data = await loadData(filePath); 30 | 31 | const newDomains = await fetchAndParseDomains(); 32 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 33 | 34 | if (uniqueNewDomains.length > 0) { 35 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 36 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://ydns.io`); 37 | } else { 38 | console.log(`ℹ️ No new domains found from https://ydns.io`); 39 | } 40 | 41 | console.log(`📊 Total domains from ydns.io: ${data.length + uniqueNewDomains.length}`); 42 | } catch (error) { 43 | console.error(`❌ Error in ydns.io scraper: ${error.message}`); 44 | throw error; 45 | } 46 | } 47 | 48 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/pubyun.js: -------------------------------------------------------------------------------- 1 | const cheerio = require("cheerio"); 2 | const path = require("path"); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "pubyun.com.json"); 6 | 7 | async function scrapeDomains() { 8 | try { 9 | const response = await fetchWithRetry("https://www.pubyun.com/products/dyndns/product/"); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const text = $("dl.dynamicDNSExp > dd:nth-child(4)").text(); 13 | const regex = /\b([a-z0-9]+(-[a-z0-9]+)*\.[a-z]{2,})\b/gi; 14 | const foundDomains = text.match(regex) || []; 15 | const domains = foundDomains.map(domain => ({ 16 | domain: domain, 17 | retrievedAt: new Date().toISOString(), 18 | })); 19 | 20 | return domains; 21 | } catch (error) { 22 | console.error('Error fetching or parsing domains:', error); 23 | throw error; 24 | } 25 | } 26 | 27 | async function scrape() { 28 | try { 29 | console.log("🚀 Starting pubyun.com scraper..."); 30 | let data = await loadData(filePath); 31 | 32 | const newDomains = await scrapeDomains(); 33 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 34 | 35 | if (uniqueNewDomains.length > 0) { 36 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 37 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://pubyun.com`); 38 | } else { 39 | console.log(`ℹ️ No new domains found from https://pubyun.com`); 40 | } 41 | 42 | console.log(`📊 Total domains from pubyun.com: ${data.length + uniqueNewDomains.length}`); 43 | } catch (error) { 44 | console.error(`❌ Error in pubyun.com scraper: ${error.message}`); 45 | throw error; 46 | } 47 | } 48 | 49 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/dnsexit.js: -------------------------------------------------------------------------------- 1 | const cheerio = require("cheerio"); 2 | const path = require("path"); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "dnsexit.com.json"); 6 | 7 | async function scrapeOptions() { 8 | try { 9 | const response = await fetchWithRetry("http://dnsexit.com/domains/free-second-level-domains/"); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const options = $("#iddomain > option"); 13 | const domains = []; 14 | 15 | options.each((_, element) => { 16 | const domain = $(element).text().trim(); 17 | domains.push({ 18 | domain: domain, 19 | retrievedAt: new Date().toISOString(), 20 | }); 21 | }); 22 | 23 | return domains; 24 | } catch (error) { 25 | console.error('Error fetching or parsing domains:', error); 26 | throw error; 27 | } 28 | } 29 | 30 | async function scrape() { 31 | try { 32 | console.log("🚀 Starting dnsexit.com scraper..."); 33 | let data = await loadData(filePath); 34 | 35 | const newDomains = await scrapeOptions(); 36 | 37 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 38 | 39 | if (uniqueNewDomains.length > 0) { 40 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 41 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from http://dnsexit.com`); 42 | } else { 43 | console.log(`ℹ️ No new domains found from http://dnsexit.com`); 44 | } 45 | 46 | console.log(`📊 Total domains from dnsexit.com: ${data.length + uniqueNewDomains.length}`); 47 | } catch (error) { 48 | console.error(`❌ Error in dnsexit.com scraper: ${error.message}`); 49 | throw error; 50 | } 51 | } 52 | 53 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/dyn.js: -------------------------------------------------------------------------------- 1 | const cheerio = require('cheerio'); 2 | const path = require('path'); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, '..', 'data', 'dyn.com.json'); 6 | 7 | async function scrapeOptions() { 8 | try { 9 | const response = await fetchWithRetry('https://account.dyn.com/'); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const options = $('#hostname-search > select > option'); 13 | const domains = []; 14 | 15 | options.each((_, element) => { 16 | const domain = $(element).attr('value'); 17 | if (domain) { 18 | domains.push({ 19 | domain: domain, 20 | retrievedAt: new Date().toISOString() 21 | }); 22 | } 23 | }); 24 | 25 | return domains; 26 | } catch (error) { 27 | console.error('Error fetching or parsing domains:', error); 28 | throw error; 29 | } 30 | } 31 | 32 | async function scrape() { 33 | try { 34 | console.log("🚀 Starting dyn.com scraper..."); 35 | let data = await loadData(filePath); 36 | 37 | const newDomains = await scrapeOptions(); 38 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 39 | 40 | if (uniqueNewDomains.length > 0) { 41 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 42 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://dyn.com`); 43 | } else { 44 | console.log(`ℹ️ No new domains found from https://dyn.com`); 45 | } 46 | 47 | console.log(`📊 Total domains from dyn.com: ${data.length + uniqueNewDomains.length}`); 48 | } catch (error) { 49 | console.error(`❌ Error in dyn.com scraper: ${error.message}`); 50 | throw error; 51 | } 52 | } 53 | 54 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/dynu.js: -------------------------------------------------------------------------------- 1 | const cheerio = require('cheerio'); 2 | const path = require('path'); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, '..', 'data', 'dynu.com.json'); 6 | 7 | async function fetchAndParseDomains() { 8 | try { 9 | const response = await fetchWithRetry('https://www.dynu.com/en-US/ControlPanel/AddDDNS'); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const domains = []; 13 | 14 | $('#Container option').each((_, element) => { 15 | let domainText = $(element).text(); 16 | 17 | domainText = domainText.replace(" - Members only", ""); 18 | 19 | domains.push({ 20 | domain: domainText, 21 | retrievedAt: new Date().toISOString() 22 | }); 23 | }); 24 | 25 | return domains; 26 | } catch (error) { 27 | console.error('Error fetching or parsing domains:', error); 28 | throw error; 29 | } 30 | } 31 | 32 | async function scrape() { 33 | try { 34 | console.log("🚀 Starting dynu.com scraper..."); 35 | let data = await loadData(filePath); 36 | 37 | const newDomains = await fetchAndParseDomains(); 38 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 39 | 40 | if (uniqueNewDomains.length > 0) { 41 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 42 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://www.dynu.com`); 43 | } else { 44 | console.log(`ℹ️ No new domains found from https://www.dynu.com`); 45 | } 46 | 47 | console.log(`📊 Total domains from dynu.com: ${data.length + uniqueNewDomains.length}`); 48 | } catch (error) { 49 | console.error(`❌ Error in dynu.com scraper: ${error.message}`); 50 | throw error; 51 | } 52 | } 53 | 54 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/cloudns.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const path = require("path"); 3 | const { loadData, saveDomains } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "cloudns.net.json"); 6 | 7 | async function loginAndScrapeDomains(browser) { 8 | const page = await browser.newPage(); 9 | await page.goto("https://www.cloudns.net/index/show/login/", { waitUntil: "networkidle0" }); 10 | 11 | try { 12 | await page.waitForSelector('iframe[src*="hcaptcha.com"]', { timeout: 5000 }); 13 | console.log("CAPTCHA found, skipping https://cloudns.net"); 14 | return []; 15 | } catch (error) { 16 | // CAPTCHA not found, continuing... 17 | } 18 | 19 | const usernameInput = await page.waitForSelector('xpath/.//*[@id="login2FAMail"]'); 20 | await usernameInput.type(process.env.CLOUDDNS_USERNAME); 21 | 22 | const passwordInput = await page.waitForSelector('xpath/.//*[@id="login2FAPassword"]'); 23 | await passwordInput.type(process.env.CLOUDDNS_PASSWORD); 24 | 25 | await passwordInput.focus(); 26 | await page.click('xpath/.//*[@id="login2faButton"]'); 27 | await page.waitForSelector("#dashboard-zones", { timeout: 0 }); 28 | 29 | await page.goto("https://www.cloudns.net/ajaxPages.php?action=newzone&show=freeZone"); 30 | 31 | const domains = await page.evaluate(() => { 32 | return Array.from(document.querySelectorAll("#freeDomain option")).map(option => option.textContent.trim()); 33 | }); 34 | 35 | await page.close(); 36 | return domains.map(domain => ({ 37 | domain: domain, 38 | retrievedAt: new Date().toISOString(), 39 | })); 40 | } 41 | 42 | async function scrape(browser) { 43 | let data = await loadData(filePath); 44 | const newDomains = await loginAndScrapeDomains(browser); 45 | const uniqueNewDomains = [...data, ...newDomains.filter(nd => !data.some(d => d.domain === nd.domain))]; 46 | if (uniqueNewDomains.length > 0) await saveDomains(filePath, uniqueNewDomains); 47 | console.log(`Added ${uniqueNewDomains.length} new domains from https://cloudns.net`); 48 | } 49 | 50 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/now-dns.js: -------------------------------------------------------------------------------- 1 | const cheerio = require("cheerio"); 2 | const path = require("path"); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "now-dns.com.json"); 6 | 7 | async function scrapeOptions() { 8 | try { 9 | const response = await fetchWithRetry("https://now-dns.com/"); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const options = $("#domainList > option"); 13 | const domains = []; 14 | 15 | options.each((_, element) => { 16 | const id = $(element).val(); 17 | const domain = $(element).text().trim().replace(/^\./, ""); 18 | domains.push({ 19 | id: id, 20 | domain: domain, 21 | retrievedAt: new Date().toISOString(), 22 | }); 23 | }); 24 | 25 | return domains; 26 | } catch (error) { 27 | console.error('Error fetching or parsing domains:', error); 28 | throw error; 29 | } 30 | } 31 | 32 | async function scrape() { 33 | try { 34 | console.log("🚀 Starting now-dns.com scraper..."); 35 | let data = await loadData(filePath); 36 | 37 | const newDomains = await scrapeOptions(); 38 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.id === nd.id)); 39 | 40 | if (uniqueNewDomains.length > 0) { 41 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 42 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://now-dns.com`); 43 | } else { 44 | console.log(`ℹ️ No new domains found from https://now-dns.com`); 45 | } 46 | 47 | console.log(`📊 Total domains from now-dns.com: ${data.length + uniqueNewDomains.length}`); 48 | } catch (error) { 49 | console.error(`❌ Error in now-dns.com scraper: ${error.message}`); 50 | throw error; 51 | } 52 | } 53 | 54 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/duiadns.js: -------------------------------------------------------------------------------- 1 | const cheerio = require("cheerio"); 2 | const path = require("path"); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "duiadns.net.json"); 6 | 7 | async function scrapeOptions() { 8 | try { 9 | const response = await fetchWithRetry("https://www.duiadns.net/register-personal"); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const options = $('select[name="d_default"] > option'); 13 | const domains = []; 14 | 15 | options.each((_, element) => { 16 | const domain = $(element).text().trim(); 17 | 18 | if (domain !== "Domain") { 19 | domains.push({ 20 | domain: domain, 21 | retrievedAt: new Date().toISOString(), 22 | }); 23 | } 24 | }); 25 | 26 | return domains; 27 | } catch (error) { 28 | console.error('Error fetching or parsing domains:', error); 29 | throw error; 30 | } 31 | } 32 | 33 | async function scrape() { 34 | try { 35 | console.log("🚀 Starting duiadns.net scraper..."); 36 | let data = await loadData(filePath); 37 | 38 | const newDomains = await scrapeOptions(); 39 | 40 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 41 | 42 | if (uniqueNewDomains.length > 0) { 43 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 44 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://duiadns.net`); 45 | } else { 46 | console.log(`ℹ️ No new domains found from https://duiadns.net`); 47 | } 48 | 49 | console.log(`📊 Total domains from duiadns.net: ${data.length + uniqueNewDomains.length}`); 50 | } catch (error) { 51 | console.error(`❌ Error in duiadns.net scraper: ${error.message}`); 52 | throw error; 53 | } 54 | } 55 | 56 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/csv.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | const createCsvWriter = require('csv-writer').createObjectCsvWriter; 4 | 5 | const dataPath = path.join(__dirname, 'data'); 6 | const csvFilePath = path.join(__dirname, '..', 'links.csv'); 7 | const txtFilePath = path.join(__dirname, '..', 'links.txt'); 8 | 9 | const files = fs.readdirSync(dataPath).filter(file => file.endsWith('.json')); 10 | 11 | const csvWriter = createCsvWriter({ 12 | path: csvFilePath, 13 | header: [ 14 | { id: 'domain', title: 'Domain' }, 15 | { id: 'retrievedAt', title: 'RetrievedAt' }, 16 | { id: 'provider', title: 'Provider' } 17 | ], 18 | append: false 19 | }); 20 | 21 | async function writeCsv(data) { 22 | 23 | } 24 | 25 | async function start() { 26 | console.log('Writing CSV and TXT files...'); 27 | 28 | // Combine data from all JSON files 29 | let combinedData = []; 30 | for (let file of files) { 31 | const provider = path.basename(file, '.json'); 32 | const filePath = path.join(dataPath, file); 33 | const rawData = fs.readFileSync(filePath, 'utf-8'); 34 | const data = JSON.parse(rawData); 35 | 36 | console.log(`${provider}: ${data.length} domains before filtering for uniqueness.`); 37 | 38 | combinedData.push(...data.map(entry => ({ 39 | domain: entry.domain, 40 | retrievedAt: entry.retrievedAt, 41 | provider: provider 42 | }))); 43 | } 44 | 45 | console.log(`Combined data size before filtering: ${combinedData.length}`); 46 | 47 | const uniqueDomains = [...new Set(combinedData.map(entry => entry.domain))]; 48 | 49 | // Write to links.txt 50 | fs.writeFileSync(txtFilePath, uniqueDomains.join('\n')); 51 | console.log(`TXT file written with ${uniqueDomains.length} unique domains.`); 52 | 53 | // Write to links.csv 54 | await csvWriter.writeRecords(combinedData) 55 | .then(() => console.log('CSV file written successfully.')) 56 | .catch(err => console.error(`Failed to write CSV: ${err}`)); 57 | } 58 | 59 | module.exports = { start }; -------------------------------------------------------------------------------- /scripts/data/dynu.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "accesscam.org", 4 | "retrievedAt": "2024-02-18T17:56:25.798Z" 5 | }, 6 | { 7 | "domain": "camdvr.org", 8 | "retrievedAt": "2024-02-18T17:56:25.798Z" 9 | }, 10 | { 11 | "domain": "casacam.net", 12 | "retrievedAt": "2024-02-18T17:56:25.798Z" 13 | }, 14 | { 15 | "domain": "ddnsfree.com", 16 | "retrievedAt": "2024-02-18T17:56:25.798Z" 17 | }, 18 | { 19 | "domain": "ddnsgeek.com", 20 | "retrievedAt": "2024-02-18T17:56:25.798Z" 21 | }, 22 | { 23 | "domain": "freeddns.org", 24 | "retrievedAt": "2024-02-18T17:56:25.798Z" 25 | }, 26 | { 27 | "domain": "giize.com", 28 | "retrievedAt": "2024-02-18T17:56:25.798Z" 29 | }, 30 | { 31 | "domain": "gleeze.com", 32 | "retrievedAt": "2024-02-18T17:56:25.798Z" 33 | }, 34 | { 35 | "domain": "kozow.com", 36 | "retrievedAt": "2024-02-18T17:56:25.798Z" 37 | }, 38 | { 39 | "domain": "loseyourip.com", 40 | "retrievedAt": "2024-02-18T17:56:25.798Z" 41 | }, 42 | { 43 | "domain": "mywire.org", 44 | "retrievedAt": "2024-02-18T17:56:25.798Z" 45 | }, 46 | { 47 | "domain": "ooguy.com", 48 | "retrievedAt": "2024-02-18T17:56:25.798Z" 49 | }, 50 | { 51 | "domain": "theworkpc.com", 52 | "retrievedAt": "2024-02-18T17:56:25.798Z" 53 | }, 54 | { 55 | "domain": "webredirect.org", 56 | "retrievedAt": "2024-02-18T17:56:25.798Z" 57 | }, 58 | { 59 | "domain": "1cooldns.com", 60 | "retrievedAt": "2024-02-18T17:56:25.798Z" 61 | }, 62 | { 63 | "domain": "4cloud.click", 64 | "retrievedAt": "2024-02-18T17:56:25.798Z" 65 | }, 66 | { 67 | "domain": "bumbleshrimp.com", 68 | "retrievedAt": "2024-02-18T17:56:25.798Z" 69 | }, 70 | { 71 | "domain": "dynuddns.com", 72 | "retrievedAt": "2024-02-18T17:56:25.798Z" 73 | }, 74 | { 75 | "domain": "dynuddns.net", 76 | "retrievedAt": "2024-02-18T17:56:25.798Z" 77 | }, 78 | { 79 | "domain": "ddnsguru.com", 80 | "retrievedAt": "2024-02-18T17:56:25.798Z" 81 | }, 82 | { 83 | "domain": "mysynology.net", 84 | "retrievedAt": "2024-02-18T17:56:25.798Z" 85 | } 86 | ] -------------------------------------------------------------------------------- /scripts/scrapers/noip.js: -------------------------------------------------------------------------------- 1 | const cheerio = require('cheerio'); 2 | const path = require('path'); 3 | const { loadData, saveDomains, fetchWithRetry } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, '..', 'data', 'noip.com.json'); 6 | 7 | async function fetchAndParseDomains() { 8 | try { 9 | const response = await fetchWithRetry('https://www.noip.com/support/faq/frequently-asked-questions'); 10 | const body = await response.text(); 11 | const $ = cheerio.load(body); 12 | const article = $('#post-450'); 13 | const domains = []; 14 | 15 | Object.entries({ 16 | 'Free Domains:': 'free', 17 | 'Enhanced Domains:': 'enhanced' 18 | }).forEach(([sectionTitle, type]) => { 19 | article.find(`h2:contains('${sectionTitle}')`).next('p').html()?.split('
').forEach(domainHtml => { 20 | const domainText = cheerio.load(domainHtml).text().trim(); 21 | if (domainText) { 22 | domains.push({ 23 | domain: domainText, 24 | type: type, 25 | retrievedAt: new Date().toISOString() 26 | }); 27 | } 28 | }); 29 | }); 30 | 31 | return domains; 32 | } catch (error) { 33 | console.error('Error fetching or parsing domains:', error); 34 | throw error; 35 | } 36 | } 37 | 38 | async function scrape() { 39 | try { 40 | console.log("🚀 Starting noip.com scraper..."); 41 | let data = await loadData(filePath); 42 | 43 | const newDomains = await fetchAndParseDomains(); 44 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain && d.type === nd.type)); 45 | 46 | if (uniqueNewDomains.length > 0) { 47 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 48 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://noip.com`); 49 | } else { 50 | console.log(`ℹ️ No new domains found from https://noip.com`); 51 | } 52 | 53 | console.log(`📊 Total domains from noip.com: ${data.length + uniqueNewDomains.length}`); 54 | } catch (error) { 55 | console.error(`❌ Error in noip.com scraper: ${error.message}`); 56 | throw error; 57 | } 58 | } 59 | 60 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/changeip.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs').promises; 2 | const path = require('path'); 3 | const { loadData, saveDomains } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, '..', 'data', 'changeip.com.json'); 6 | 7 | async function scrapeOptions(browser) { 8 | const page = await browser.newPage(); 9 | 10 | try { 11 | await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'); 12 | 13 | console.log("🔍 Navigating to changeip.com cart page..."); 14 | await page.goto('https://www.changeip.com/accounts/cart.php?a=add&bid=1', { 15 | waitUntil: 'networkidle2', 16 | timeout: 30000 17 | }); 18 | 19 | console.log("🔍 Navigating to changeip.com domains page..."); 20 | await page.goto('https://www.changeip.com/accounts/cart.php?a=confproduct&i=0', { 21 | waitUntil: 'networkidle2', 22 | timeout: 30000 23 | }); 24 | 25 | const options = await page.evaluate(() => { 26 | return Array.from(document.querySelectorAll('#free-domain option')).map(option => ({ 27 | id: option.value, 28 | domain: option.textContent.trim() 29 | })); 30 | }); 31 | 32 | return options; 33 | } catch (error) { 34 | console.error(`❌ Error scraping changeip.com options: ${error.message}`); 35 | throw error; 36 | } finally { 37 | await page.close(); 38 | } 39 | } 40 | 41 | async function scrape(browser) { 42 | try { 43 | console.log("🚀 Starting changeip.com scraper..."); 44 | let data = await loadData(filePath); 45 | 46 | const options = await scrapeOptions(browser); 47 | 48 | let uniqueNewDomains = []; 49 | for (const option of options) { 50 | const exists = data.some(entry => entry.id === option.id); 51 | if (!exists) { 52 | uniqueNewDomains.push({ 53 | id: option.id, 54 | domain: option.domain, 55 | retrievedAt: new Date().toISOString() 56 | }); 57 | } 58 | } 59 | 60 | if (uniqueNewDomains.length > 0) { 61 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 62 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://changeip.com`); 63 | } else { 64 | console.log(`ℹ️ No new domains found from https://changeip.com`); 65 | } 66 | 67 | console.log(`📊 Total domains from changeip.com: ${data.length + uniqueNewDomains.length}`); 68 | } catch (error) { 69 | console.error(`❌ Error in changeip.com scraper: ${error.message}`); 70 | throw error; 71 | } 72 | } 73 | 74 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scrapers/gslb.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const path = require("path"); 3 | const { loadData, saveDomains } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, "..", "data", "gslb.me.json"); 6 | 7 | async function loginAndScrapeDomains(browser) { 8 | try { 9 | const page = await browser.newPage(); 10 | console.log("🔍 Navigating to GSLB login page..."); 11 | 12 | await page.goto("https://gui.gslb.me/GSLB.ME-GUI/", { 13 | waitUntil: "networkidle2", 14 | timeout: 60000, // 60 seconds timeout 15 | }); 16 | 17 | console.log("✅ Login page loaded, waiting for input fields..."); 18 | await page.waitForSelector('tbody input[type="text"]', { timeout: 20000 }); 19 | await page.waitForSelector('tbody input[type="password"]', { timeout: 20000 }); 20 | 21 | console.log("🔑 Typing credentials..."); 22 | await page.type('tbody input[type="text"]', process.env.GSLB_USERNAME, { delay: 100 }); 23 | await page.type('tbody input[type="password"]', process.env.GSLB_PASSWORD, { delay: 100 }); 24 | 25 | console.log("🚀 Submitting login form..."); 26 | await Promise.all([ 27 | page.keyboard.press("Enter"), 28 | page.waitForNavigation({ waitUntil: "networkidle2", timeout: 60000 }), 29 | ]); 30 | 31 | console.log("✅ Login successful, extracting domains..."); 32 | await new Promise(resolve => setTimeout(resolve, 2000)); // Extra wait to ensure page loads 33 | 34 | const domains = await page.evaluate(() => 35 | Array.from( 36 | document.querySelectorAll(".v-tree-node-caption > div > span"), 37 | span => span.textContent.trim() 38 | ).filter(domain => /\b([a-z0-9]+(-[a-z0-9]+)*\.[a-z]{2,})\b/gi.test(domain) && !domain.includes("[")) 39 | ); 40 | 41 | await page.close(); 42 | console.log(`✅ Extracted ${domains.length} domains.`); 43 | return domains.map(domain => ({ 44 | domain: domain, 45 | retrievedAt: new Date().toISOString(), 46 | })); 47 | 48 | } catch (error) { 49 | console.error("❌ Login or scraping failed:", error); 50 | return []; // Return empty to avoid stopping execution 51 | } 52 | } 53 | 54 | async function scrape(browser) { 55 | let data = await loadData(filePath); 56 | const newDomains = await loginAndScrapeDomains(browser); 57 | 58 | if (newDomains.length > 0) { 59 | const uniqueNewDomains = newDomains.filter(nd => !data.some(d => d.domain === nd.domain)); 60 | if (uniqueNewDomains.length > 0) { 61 | await saveDomains(filePath, [...data, ...uniqueNewDomains]); 62 | console.log(`✅ Added ${uniqueNewDomains.length} new domains from https://gslb.me`); 63 | } else { 64 | console.log("⚠️ No new domains found."); 65 | } 66 | } else { 67 | console.log("⚠️ No domains extracted due to errors."); 68 | } 69 | } 70 | 71 | module.exports = { scrape }; 72 | -------------------------------------------------------------------------------- /scripts/main.js: -------------------------------------------------------------------------------- 1 | const os = require("os"); 2 | const fs = require("fs"); 3 | const puppeteer = require("puppeteer"); 4 | const path = require("path"); 5 | const { pathToFileURL } = require("url"); 6 | const csv = require("./csv"); 7 | const { updateCounts, retryWithBackoff } = require("./scraperUtils"); 8 | 9 | async function importScrapers() { 10 | const scrapersDir = path.join(__dirname, "scrapers"); 11 | const scraperFiles = fs 12 | .readdirSync(scrapersDir) 13 | .filter((file) => file.endsWith(".js")); 14 | 15 | const scrapers = []; 16 | for (const file of scraperFiles) { 17 | const scraperPath = path.join(scrapersDir, file); 18 | const fileURL = pathToFileURL(scraperPath); 19 | const scraperModule = await import(fileURL.href); 20 | scrapers.push(scraperModule); 21 | } 22 | return scrapers; 23 | } 24 | 25 | (async () => { 26 | process.env.PUPPETEER_DEBUG = "1"; // Enable debugging 27 | const startTime = new Date(); 28 | let browser; 29 | 30 | try { 31 | console.log("🚀 Launching Puppeteer..."); 32 | console.log(`🔹 OS: ${os.platform()}`); 33 | 34 | // Get Puppeteer's default Chromium path 35 | const bundledChromiumPath = puppeteer.executablePath(); 36 | console.log(`✅ Using Puppeteer's bundled Chromium: ${bundledChromiumPath}`); 37 | 38 | const launchArgs = [ 39 | "--window-size=1920,1080", 40 | "--disable-dev-shm-usage", // Fix crashes in Docker and Linux 41 | "--disable-setuid-sandbox" // Required for non-root execution 42 | ]; 43 | 44 | // Try launching Puppeteer with its own Chromium first 45 | try { 46 | browser = await puppeteer.launch({ 47 | headless: "new", 48 | executablePath: bundledChromiumPath, // Use Puppeteer's Chromium 49 | args: launchArgs, 50 | }); 51 | } catch (err) { 52 | console.warn("⚠️ Puppeteer failed without sandbox. Retrying with --no-sandbox..."); 53 | launchArgs.push("--no-sandbox"); // Absolute last resort 54 | browser = await puppeteer.launch({ 55 | headless: "new", 56 | executablePath: bundledChromiumPath, 57 | args: launchArgs, 58 | }); 59 | } 60 | 61 | console.log("✅ Puppeteer launched successfully!"); 62 | 63 | const scrapers = await importScrapers(); 64 | 65 | const scraperPromises = scrapers.map(async (scraper) => { 66 | try { 67 | return await retryWithBackoff(async () => { 68 | return await scraper.scrape(browser); 69 | }); 70 | } catch (error) { 71 | console.error(`❌ Scraper failed after all retries:`, error.message); 72 | return null; 73 | } 74 | }); 75 | 76 | await Promise.all(scraperPromises); 77 | await csv.start(); 78 | await updateCounts(); 79 | } catch (error) { 80 | console.error("❌ Error running the scrapers:", error); 81 | } finally { 82 | if (browser) { 83 | console.log("🛑 Closing browser..."); 84 | await browser.close(); 85 | } else { 86 | console.warn("⚠️ Browser was never launched!"); 87 | } 88 | const endTime = new Date(); 89 | const timeTaken = (endTime - startTime) / (1000 * 60); 90 | console.log(`⏳ The script took ${timeTaken.toFixed(2)} minutes to complete.`); 91 | } 92 | })(); 93 | -------------------------------------------------------------------------------- /scripts/data/now-dns.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "16", 4 | "domain": "001www.com", 5 | "retrievedAt": "2024-02-18T17:56:25.909Z" 6 | }, 7 | { 8 | "id": "7", 9 | "domain": "16-b.it", 10 | "retrievedAt": "2024-02-18T17:56:25.910Z" 11 | }, 12 | { 13 | "id": "43", 14 | "domain": "2mydns.net", 15 | "retrievedAt": "2024-02-18T17:56:25.910Z" 16 | }, 17 | { 18 | "id": "8", 19 | "domain": "32-b.it", 20 | "retrievedAt": "2024-02-18T17:56:25.910Z" 21 | }, 22 | { 23 | "id": "9", 24 | "domain": "64-b.it", 25 | "retrievedAt": "2024-02-18T17:56:25.910Z" 26 | }, 27 | { 28 | "id": "47", 29 | "domain": "ddns.cam", 30 | "retrievedAt": "2024-02-18T17:56:25.910Z" 31 | }, 32 | { 33 | "id": "40", 34 | "domain": "dnsdyn.net", 35 | "retrievedAt": "2024-02-18T17:56:25.910Z" 36 | }, 37 | { 38 | "id": "45", 39 | "domain": "dnsget.org", 40 | "retrievedAt": "2024-02-18T17:56:25.910Z" 41 | }, 42 | { 43 | "id": "28", 44 | "domain": "dnsking.ch", 45 | "retrievedAt": "2024-02-18T17:56:25.910Z" 46 | }, 47 | { 48 | "id": "48", 49 | "domain": "dnslive.net", 50 | "retrievedAt": "2024-02-18T17:56:25.910Z" 51 | }, 52 | { 53 | "id": "20", 54 | "domain": "dnsup.net", 55 | "retrievedAt": "2024-02-18T17:56:25.910Z" 56 | }, 57 | { 58 | "id": "44", 59 | "domain": "dtdns.org", 60 | "retrievedAt": "2024-02-18T17:56:25.910Z" 61 | }, 62 | { 63 | "id": "39", 64 | "domain": "dynip.org", 65 | "retrievedAt": "2024-02-18T17:56:25.910Z" 66 | }, 67 | { 68 | "id": "31", 69 | "domain": "dynserv.org", 70 | "retrievedAt": "2024-02-18T17:56:25.910Z" 71 | }, 72 | { 73 | "id": "10", 74 | "domain": "forumz.info", 75 | "retrievedAt": "2024-02-18T17:56:25.910Z" 76 | }, 77 | { 78 | "id": "36", 79 | "domain": "freeddns.uk", 80 | "retrievedAt": "2024-02-18T17:56:25.910Z" 81 | }, 82 | { 83 | "id": "26", 84 | "domain": "freeddns.us", 85 | "retrievedAt": "2024-02-18T17:56:25.910Z" 86 | }, 87 | { 88 | "id": "17", 89 | "domain": "hicam.net", 90 | "retrievedAt": "2024-02-18T17:56:25.910Z" 91 | }, 92 | { 93 | "id": "46", 94 | "domain": "myddns.biz", 95 | "retrievedAt": "2024-02-18T17:56:25.910Z" 96 | }, 97 | { 98 | "id": "14", 99 | "domain": "myiphost.com", 100 | "retrievedAt": "2024-02-18T17:56:25.910Z" 101 | }, 102 | { 103 | "id": "12", 104 | "domain": "mypi.co", 105 | "retrievedAt": "2024-02-18T17:56:25.910Z" 106 | }, 107 | { 108 | "id": "22", 109 | "domain": "now-dns.net", 110 | "retrievedAt": "2024-02-18T17:56:25.910Z" 111 | }, 112 | { 113 | "id": "23", 114 | "domain": "now-dns.org", 115 | "retrievedAt": "2024-02-18T17:56:25.910Z" 116 | }, 117 | { 118 | "id": "34", 119 | "domain": "nowddns.com", 120 | "retrievedAt": "2024-02-18T17:56:25.910Z" 121 | }, 122 | { 123 | "id": "19", 124 | "domain": "ntdll.top", 125 | "retrievedAt": "2024-02-18T17:56:25.910Z" 126 | }, 127 | { 128 | "id": "32", 129 | "domain": "ownip.net", 130 | "retrievedAt": "2024-02-18T17:56:25.910Z" 131 | }, 132 | { 133 | "id": "25", 134 | "domain": "soundcast.me", 135 | "retrievedAt": "2024-02-18T17:56:25.910Z" 136 | }, 137 | { 138 | "id": "13", 139 | "domain": "tcp4.me", 140 | "retrievedAt": "2024-02-18T17:56:25.910Z" 141 | }, 142 | { 143 | "id": "41", 144 | "domain": "tftpd.net", 145 | "retrievedAt": "2024-02-18T17:56:25.910Z" 146 | }, 147 | { 148 | "id": "30", 149 | "domain": "vpndns.net", 150 | "retrievedAt": "2024-02-18T17:56:25.910Z" 151 | }, 152 | { 153 | "id": "38", 154 | "domain": "wifizone.org", 155 | "retrievedAt": "2024-02-18T17:56:25.910Z" 156 | }, 157 | { 158 | "id": "11", 159 | "domain": "x443.pw", 160 | "retrievedAt": "2024-02-18T17:56:25.910Z" 161 | } 162 | ] -------------------------------------------------------------------------------- /scripts/scrapers/afraid.js: -------------------------------------------------------------------------------- 1 | const cheerio = require('cheerio'); 2 | const path = require('path'); 3 | const { loadData, saveDomains } = require('../scraperUtils'); 4 | 5 | const filePath = path.join(__dirname, '..', 'data', 'afraid.org.json'); 6 | 7 | async function navigatePage(page, url, maxRetries = 3) { 8 | for (let attempt = 1; attempt <= maxRetries; attempt++) { 9 | try { 10 | console.log(`🔍 Navigating to ${url} (attempt ${attempt}/${maxRetries})...`); 11 | await page.goto(url, { 12 | waitUntil: 'networkidle2', 13 | timeout: 30000 // 30 second timeout 14 | }); 15 | return await page.content(); 16 | } catch (err) { 17 | console.error(`❌ Failed to load page ${url} (attempt ${attempt}/${maxRetries}): ${err.message}`); 18 | 19 | if (attempt === maxRetries) { 20 | throw err; 21 | } 22 | 23 | const delay = 2000 * Math.pow(2, attempt - 1); 24 | console.log(`⏳ Waiting ${delay}ms before retry...`); 25 | await new Promise(resolve => setTimeout(resolve, delay)); 26 | } 27 | } 28 | } 29 | 30 | let totalScrapePages = 2; 31 | 32 | async function scrapePage(page, pageNumber) { 33 | let url = pageNumber === 1 ? `http://freedns.afraid.org/domain/registry/` : `http://freedns.afraid.org/domain/registry/page-${pageNumber}.html`; 34 | let body = await navigatePage(page, url); 35 | let $ = cheerio.load(body); 36 | 37 | if (pageNumber === 1) { 38 | let title = $('title').text(); 39 | let match = title.match(/Page \d+ of (\d+)/); 40 | totalScrapePages = match ? parseInt(match[1], 10) : pageNumber; 41 | } 42 | 43 | console.log(`📄 Scraping page ${pageNumber}/${totalScrapePages} of https://afraid.org`); 44 | 45 | let newDomains = []; 46 | $('tr.trd, tr.trl').each((_, row) => { 47 | let domainIdUrl = $(row).find('td a:first').attr('href'); 48 | let id = domainIdUrl ? domainIdUrl.split('=')[1] : null; 49 | let domain = $(row).find('td a:first').text().trim(); 50 | let age = $(row).find('td').eq(3).text().trim(); 51 | let retrievedAt = new Date().toISOString(); 52 | 53 | newDomains.push({ id, domain, age, retrievedAt }); 54 | }); 55 | 56 | return newDomains; 57 | } 58 | 59 | async function scrape(browser) { 60 | try { 61 | console.log("🚀 Starting afraid.org scraper..."); 62 | let existingDomains = await loadData(filePath); 63 | const page = await browser.newPage(); 64 | 65 | await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'); 66 | 67 | let allNewDomains = []; 68 | 69 | for (let pageNumber = 1; pageNumber <= totalScrapePages; pageNumber++) { 70 | try { 71 | const pageDomains = await scrapePage(page, pageNumber); 72 | allNewDomains.push(...pageDomains); 73 | } catch (error) { 74 | console.error(`❌ Failed to scrape page ${pageNumber}: ${error.message}`); 75 | continue; 76 | } 77 | } 78 | 79 | await page.close(); 80 | 81 | let uniqueNewDomains = allNewDomains.filter(nd => !existingDomains.some(d => d.id === nd.id)); 82 | 83 | if (uniqueNewDomains.length > 0) { 84 | await saveDomains(filePath, [...existingDomains, ...uniqueNewDomains]); 85 | console.log(`✅ Added ${uniqueNewDomains.length} new domain(s) from https://afraid.org`); 86 | } else { 87 | console.log(`ℹ️ No new domains found from https://afraid.org`); 88 | } 89 | 90 | console.log(`📊 Total domains from afraid.org: ${existingDomains.length + uniqueNewDomains.length}`); 91 | } catch (error) { 92 | console.error(`❌ Error in afraid.org scraper: ${error.message}`); 93 | throw error; 94 | } 95 | } 96 | 97 | module.exports = { scrape }; -------------------------------------------------------------------------------- /scripts/scraperUtils.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs').promises; 2 | const path = require('path'); 3 | 4 | async function loadData(filePath) { 5 | try { 6 | const fileData = await fs.readFile(filePath); 7 | return JSON.parse(fileData); 8 | } catch (err) { 9 | return []; 10 | } 11 | } 12 | 13 | async function saveDomains(filePath, data) { 14 | try { 15 | await fs.writeFile(filePath, JSON.stringify(data, null, 2)); 16 | } catch (error) { 17 | console.error(`Error saving domains to file ${filePath}:`, error); 18 | } 19 | } 20 | 21 | async function updateCounts() { 22 | const dataPath = path.join(__dirname, 'data'); 23 | const readmePath = path.join(__dirname, '..', 'README.md'); 24 | let totalDomains = 0; 25 | 26 | try { 27 | const files = await fs.readdir(dataPath); 28 | const providerCounts = await Promise.all(files.filter(file => file.endsWith('.json')).map(async file => { 29 | const filePath = path.join(dataPath, file); 30 | const data = await loadData(filePath); 31 | const provider = file.replace('.json', ''); 32 | const count = data.length; 33 | totalDomains += count; 34 | return { provider, count }; 35 | })); 36 | 37 | let readmeContent = await fs.readFile(readmePath, 'utf8'); 38 | providerCounts.forEach(({ provider, count }) => { 39 | readmeContent = readmeContent.replace(new RegExp(`- \\[${provider}\\]\\(https://.+\\) \\(\\d+ domains\\)`, 'g'), `- [${provider}](https://${provider}/) (${count} domains)`); 40 | }); 41 | 42 | // Update total domains count 43 | readmeContent = readmeContent.replace(/# Dynamic DNS domain list \(2024\) - \d+ domains/g, `# Dynamic DNS domain list (2024) - ${totalDomains} domains`); 44 | 45 | const currentDateTime = new Date().toLocaleString('en-GB', { 46 | day: '2-digit', 47 | month: '2-digit', 48 | year: 'numeric', 49 | hour: '2-digit', 50 | minute: '2-digit', 51 | hour12: false 52 | }); 53 | 54 | // Update "Domains Last Update:" line 55 | readmeContent = readmeContent.replace(/\*\*Domains Last Update: .+\*\*/g, `**Domains Last Update: ${currentDateTime}**`); 56 | 57 | 58 | await fs.writeFile(readmePath, readmeContent); 59 | console.log('README.md updated with the latest domain counts.'); 60 | } catch (error) { 61 | console.error('Error updating counts:', error); 62 | } 63 | } 64 | 65 | async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000) { 66 | for (let attempt = 1; attempt <= maxRetries; attempt++) { 67 | try { 68 | return await fn(); 69 | } catch (error) { 70 | if (attempt === maxRetries) { 71 | throw error; 72 | } 73 | 74 | const delay = baseDelay * Math.pow(2, attempt - 1); 75 | console.log(`⚠️ Attempt ${attempt} failed, retrying in ${delay}ms...`); 76 | await new Promise(resolve => setTimeout(resolve, delay)); 77 | } 78 | } 79 | } 80 | 81 | async function fetchWithRetry(url, options = {}, maxRetries = 3) { 82 | return retryWithBackoff(async () => { 83 | const response = await fetch(url, { 84 | headers: { 85 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 86 | ...options.headers 87 | }, 88 | timeout: 30000, 89 | ...options 90 | }); 91 | 92 | if (!response.ok) { 93 | throw new Error(`HTTP error! status: ${response.status} for ${url}`); 94 | } 95 | 96 | return response; 97 | }, maxRetries); 98 | } 99 | 100 | module.exports = { 101 | loadData, 102 | saveDomains, 103 | updateCounts, 104 | retryWithBackoff, 105 | fetchWithRetry 106 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > **Notice:** In response to the recent surge in interest and traffic to this repository, significant efforts have been made to rejuvenate and automate its maintenance. The automation process now ensures that the `links.csv` and `links.txt` files are updated on a daily basis. This is achieved through a GitHub Actions workflow that systematically scrapes dynamic DNS provider websites for the latest domain information, ensuring the repository remains a reliable and up-to-date resource for the community. 2 | 3 | **Domains Last Update: 15/12/2025, 21:18** 4 | 5 | # Dynamic DNS domain list (2025) - 32756 domains 6 | 7 | While working on another project, I needed a list of domains being used for dynamic DNS, and since I've lost a few hours of my life, I decided to just release the list. Due to the repository getting some views lately and having some extra time, I decided to automate the scraping part, so that the list remains updated. 8 | 9 |
10 | 11 | 12 | 13 |
14 | 15 | ## Use Cases 16 | 17 | - Blocking access to known malicious domains: the list can be used to block access to domains that are known to be used by malware, phishing, or other types of malicious activities. 18 | - Monitoring network traffic: the list can be used to monitor network traffic and identify potential security threats or policy violations. 19 | - Implementing parental controls: the list can be used to restrict access to certain domains that may be inappropriate or harmful for children. 20 | - Implementing content filtering: the list can be used to filter out domains that contain specific types of content, such as adult content or gambling sites. 21 | - Implementing ad-blocking: the list can be used to block domains that are known to serve ads, thereby improving the browsing experience and reducing the risk of malware infections. 22 | - Enhancing privacy and security: the list can be used to block domains that are known to track user activity or collect personal information, thereby enhancing privacy and security. 23 | 24 | ## Automated Scraping 25 | 26 | This project is a NodeJS application which is designed to automate the scraping of various dynamic DNS providers to maintain an updated list of domains. The `scripts` folder contains individual scripts for scraping each DNS provider's site. The results of each scraping operation are stored in the `data` folder in JSON format, with each file named after the corresponding DNS provider. 27 | 28 | Upon execution of the main script (`main.js`), all the scrapers run concurrently and fetch the latest data from the respective DNS provider websites. Post completion, a consolidated list of all the domains, along with their retrieved date and provider, is generated in both CSV and TXT formats and stored in the root directory of the project. 29 | 30 | The project uses Puppeteer for scraping websites that either require login or are behind cloudflare, or node fetch for simpler websites, and Cheerio for parsing and extracting information. 31 | 32 | If there are any more websites you know that provide Dynamic DNS, please open an issue, and I will automate that too. 33 | 34 | 35 | ## Setup and Running the Project 36 | 37 | 1. Clone the repository. 38 | 2. Navigate to the `scripts` folder. 39 | 3. Install dependencies by running `npm install`. 40 | 4. Rename the `.env example` file to `.env` and set up your environment variables. 41 | 5. Run `node main.js` to start the scraping process. A chromium window will pop up and will navigate to cloudns.net, which will automatically enter the login details, and wait 15 seconds for you to complete the captcha. After you finish the captcha, please don't press the login button, as that will disrupt the script. 42 | 6. The output will be JSON files for each provider in the `data` folder, and a `links.csv` file will also be created in the root directory with all the domains, the date they were retrieved, and their provider. 43 | 44 | ## Usage Example 45 | 46 | When running the project for the first time, it initializes by scraping each provider's site for their available domains. An example of the initial run can be seen below: 47 | 48 |
49 | 50 | 51 | 52 |
53 | 54 | In the image above, the script is shown scraping the domains from each provider. Once the scraping process is completed, the results are stored in individual JSON files within the `data` folder. A consolidated list of all the domains is also generated and stored as a CSV and TXT file in the root directory of the project. 55 | 56 | For subsequent runs, the script only adds new domains to the list. This ensures that the list remains up-to-date while avoiding duplicate entries. 57 | 58 | 59 | ### DNS Providers included: 60 | - [afraid.org](https://afraid.org/) (33437 domains) 61 | - [dyn.com](https://dyn.com/) (293 domains) 62 | - [changeip.com](https://changeip.com/) (159 domains) 63 | - [noip.com](https://noip.com/) (83 domains) 64 | - [now-dns.com](https://now-dns.com/) (32 domains) 65 | - [dynu.com](https://dynu.com/) (21 domains) 66 | - [pubyun.com](https://pubyun.com/) (9 domains) 67 | - [dynv6.com](https://dynv6.com/) (6 domains) 68 | - [gslb.me](https://gslb.me/) (5 domains) 69 | - [dnsexit.com](https://dnsexit.com/) (7 domains) 70 | - [duiadns.net](https://duiadns.net/) (3 domains) 71 | - [cloudns.net](https://cloudns.net/) (2 domains) 72 | - [ydns.io](https://ydns.io/) (1 domains) 73 | 74 | Note the above counts are not updated with the new ones. 75 | They will be automatically be updated in the next commits. 76 | 77 | ## 👥 Contributors 78 | 79 | Thanks goes to these wonderful people who have contributed to this project: 80 | 81 | 82 | 83 | 84 | 85 | ## Back matter 86 | 87 | ### Legal disclaimer 88 | 89 | This dynamic DNS domain list is provided for informational purposes only. The inclusion of a domain in this list does not imply that it is malicious or otherwise harmful, nor does it guarantee that it is safe to access. 90 | Users are responsible for their own use of this list and should conduct their own due diligence to determine whether a domain is safe or appropriate for their purposes. The author of this list disclaims any liability for damages or losses that may result from the use of this list. 91 | 92 | ### License 93 | 94 | This project is licensed under the [Unlicense license](LICENSE). 95 | -------------------------------------------------------------------------------- /scripts/data/noip.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "ddns.net", 4 | "type": "free", 5 | "retrievedAt": "2024-02-18T17:56:26.581Z" 6 | }, 7 | { 8 | "domain": "ddnsking.com", 9 | "type": "free", 10 | "retrievedAt": "2024-02-18T17:56:26.581Z" 11 | }, 12 | { 13 | "domain": "3utilities.com", 14 | "type": "free", 15 | "retrievedAt": "2024-02-18T17:56:26.581Z" 16 | }, 17 | { 18 | "domain": "bounceme.net", 19 | "type": "free", 20 | "retrievedAt": "2024-02-18T17:56:26.581Z" 21 | }, 22 | { 23 | "domain": "freedynamicdns.net", 24 | "type": "free", 25 | "retrievedAt": "2024-02-18T17:56:26.581Z" 26 | }, 27 | { 28 | "domain": "freedynamicdns.org", 29 | "type": "free", 30 | "retrievedAt": "2024-02-18T17:56:26.581Z" 31 | }, 32 | { 33 | "domain": "gotdns.ch", 34 | "type": "free", 35 | "retrievedAt": "2024-02-18T17:56:26.581Z" 36 | }, 37 | { 38 | "domain": "hopto.org", 39 | "type": "free", 40 | "retrievedAt": "2024-02-18T17:56:26.581Z" 41 | }, 42 | { 43 | "domain": "myddns.me", 44 | "type": "free", 45 | "retrievedAt": "2024-02-18T17:56:26.581Z" 46 | }, 47 | { 48 | "domain": "myftp.biz", 49 | "type": "free", 50 | "retrievedAt": "2024-02-18T17:56:26.581Z" 51 | }, 52 | { 53 | "domain": "myftp.org", 54 | "type": "free", 55 | "retrievedAt": "2024-02-18T17:56:26.581Z" 56 | }, 57 | { 58 | "domain": "myvnc.com", 59 | "type": "free", 60 | "retrievedAt": "2024-02-18T17:56:26.581Z" 61 | }, 62 | { 63 | "domain": "onthewifi.com", 64 | "type": "free", 65 | "retrievedAt": "2024-02-18T17:56:26.581Z" 66 | }, 67 | { 68 | "domain": "redirectme.net", 69 | "type": "free", 70 | "retrievedAt": "2024-02-18T17:56:26.581Z" 71 | }, 72 | { 73 | "domain": "servebeer.com", 74 | "type": "free", 75 | "retrievedAt": "2024-02-18T17:56:26.581Z" 76 | }, 77 | { 78 | "domain": "serveblog.net", 79 | "type": "free", 80 | "retrievedAt": "2024-02-18T17:56:26.581Z" 81 | }, 82 | { 83 | "domain": "servecounterstrike.com", 84 | "type": "free", 85 | "retrievedAt": "2024-02-18T17:56:26.581Z" 86 | }, 87 | { 88 | "domain": "serveftp.com", 89 | "type": "free", 90 | "retrievedAt": "2024-02-18T17:56:26.581Z" 91 | }, 92 | { 93 | "domain": "servegame.com", 94 | "type": "free", 95 | "retrievedAt": "2024-02-18T17:56:26.581Z" 96 | }, 97 | { 98 | "domain": "servehalflife.com", 99 | "type": "free", 100 | "retrievedAt": "2024-02-18T17:56:26.581Z" 101 | }, 102 | { 103 | "domain": "servehttp.com", 104 | "type": "free", 105 | "retrievedAt": "2024-02-18T17:56:26.581Z" 106 | }, 107 | { 108 | "domain": "serveirc.com", 109 | "type": "free", 110 | "retrievedAt": "2024-02-18T17:56:26.581Z" 111 | }, 112 | { 113 | "domain": "serveminecraft.net", 114 | "type": "free", 115 | "retrievedAt": "2024-02-18T17:56:26.581Z" 116 | }, 117 | { 118 | "domain": "servemp3.com", 119 | "type": "free", 120 | "retrievedAt": "2024-02-18T17:56:26.581Z" 121 | }, 122 | { 123 | "domain": "servepics.com", 124 | "type": "free", 125 | "retrievedAt": "2024-02-18T17:56:26.581Z" 126 | }, 127 | { 128 | "domain": "servequake.com", 129 | "type": "free", 130 | "retrievedAt": "2024-02-18T17:56:26.581Z" 131 | }, 132 | { 133 | "domain": "sytes.net", 134 | "type": "free", 135 | "retrievedAt": "2024-02-18T17:56:26.581Z" 136 | }, 137 | { 138 | "domain": "viewdns.net", 139 | "type": "free", 140 | "retrievedAt": "2024-02-18T17:56:26.581Z" 141 | }, 142 | { 143 | "domain": "webhop.me", 144 | "type": "free", 145 | "retrievedAt": "2024-02-18T17:56:26.581Z" 146 | }, 147 | { 148 | "domain": "zapto.org", 149 | "type": "free", 150 | "retrievedAt": "2024-02-18T17:56:26.581Z" 151 | }, 152 | { 153 | "domain": "access.ly", 154 | "type": "enhanced", 155 | "retrievedAt": "2024-02-18T17:56:26.582Z" 156 | }, 157 | { 158 | "domain": "blogsyte.com", 159 | "type": "enhanced", 160 | "retrievedAt": "2024-02-18T17:56:26.582Z" 161 | }, 162 | { 163 | "domain": "brasilia.me", 164 | "type": "enhanced", 165 | "retrievedAt": "2024-02-18T17:56:26.582Z" 166 | }, 167 | { 168 | "domain": "cable-modem.org", 169 | "type": "enhanced", 170 | "retrievedAt": "2024-02-18T17:56:26.582Z" 171 | }, 172 | { 173 | "domain": "ciscofreak.com", 174 | "type": "enhanced", 175 | "retrievedAt": "2024-02-18T17:56:26.582Z" 176 | }, 177 | { 178 | "domain": "collegefan.org", 179 | "type": "enhanced", 180 | "retrievedAt": "2024-02-18T17:56:26.582Z" 181 | }, 182 | { 183 | "domain": "couchpotatofries.org", 184 | "type": "enhanced", 185 | "retrievedAt": "2024-02-18T17:56:26.582Z" 186 | }, 187 | { 188 | "domain": "damnserver.com", 189 | "type": "enhanced", 190 | "retrievedAt": "2024-02-18T17:56:26.582Z" 191 | }, 192 | { 193 | "domain": "ddns.me", 194 | "type": "enhanced", 195 | "retrievedAt": "2024-02-18T17:56:26.582Z" 196 | }, 197 | { 198 | "domain": "ditchyourip.com", 199 | "type": "enhanced", 200 | "retrievedAt": "2024-02-18T17:56:26.582Z" 201 | }, 202 | { 203 | "domain": "dnsfor.me", 204 | "type": "enhanced", 205 | "retrievedAt": "2024-02-18T17:56:26.582Z" 206 | }, 207 | { 208 | "domain": "dnsiskinky.com", 209 | "type": "enhanced", 210 | "retrievedAt": "2024-02-18T17:56:26.582Z" 211 | }, 212 | { 213 | "domain": "dvrcam.info", 214 | "type": "enhanced", 215 | "retrievedAt": "2024-02-18T17:56:26.582Z" 216 | }, 217 | { 218 | "domain": "dynns.com", 219 | "type": "enhanced", 220 | "retrievedAt": "2024-02-18T17:56:26.582Z" 221 | }, 222 | { 223 | "domain": "eating-organic.net", 224 | "type": "enhanced", 225 | "retrievedAt": "2024-02-18T17:56:26.582Z" 226 | }, 227 | { 228 | "domain": "fantasyleague.cc", 229 | "type": "enhanced", 230 | "retrievedAt": "2024-02-18T17:56:26.582Z" 231 | }, 232 | { 233 | "domain": "geekgalaxy.com", 234 | "type": "enhanced", 235 | "retrievedAt": "2024-02-18T17:56:26.582Z" 236 | }, 237 | { 238 | "domain": "golffan.us", 239 | "type": "enhanced", 240 | "retrievedAt": "2024-02-18T17:56:26.582Z" 241 | }, 242 | { 243 | "domain": "health-carereform.com", 244 | "type": "enhanced", 245 | "retrievedAt": "2024-02-18T17:56:26.582Z" 246 | }, 247 | { 248 | "domain": "homesecuritymac.com", 249 | "type": "enhanced", 250 | "retrievedAt": "2024-02-18T17:56:26.582Z" 251 | }, 252 | { 253 | "domain": "homesecuritypc.com", 254 | "type": "enhanced", 255 | "retrievedAt": "2024-02-18T17:56:26.582Z" 256 | }, 257 | { 258 | "domain": "hosthampster.com", 259 | "type": "enhanced", 260 | "retrievedAt": "2024-02-18T17:56:26.582Z" 261 | }, 262 | { 263 | "domain": "hopto.me", 264 | "type": "enhanced", 265 | "retrievedAt": "2024-02-18T17:56:26.582Z" 266 | }, 267 | { 268 | "domain": "ilovecollege.info", 269 | "type": "enhanced", 270 | "retrievedAt": "2024-02-18T17:56:26.582Z" 271 | }, 272 | { 273 | "domain": "loginto.me", 274 | "type": "enhanced", 275 | "retrievedAt": "2024-02-18T17:56:26.582Z" 276 | }, 277 | { 278 | "domain": "mlbfan.org", 279 | "type": "enhanced", 280 | "retrievedAt": "2024-02-18T17:56:26.582Z" 281 | }, 282 | { 283 | "domain": "mmafan.biz", 284 | "type": "enhanced", 285 | "retrievedAt": "2024-02-18T17:56:26.582Z" 286 | }, 287 | { 288 | "domain": "myactivedirectory.com", 289 | "type": "enhanced", 290 | "retrievedAt": "2024-02-18T17:56:26.582Z" 291 | }, 292 | { 293 | "domain": "mydissent.net", 294 | "type": "enhanced", 295 | "retrievedAt": "2024-02-18T17:56:26.582Z" 296 | }, 297 | { 298 | "domain": "myeffect.net", 299 | "type": "enhanced", 300 | "retrievedAt": "2024-02-18T17:56:26.582Z" 301 | }, 302 | { 303 | "domain": "mymediapc.net", 304 | "type": "enhanced", 305 | "retrievedAt": "2024-02-18T17:56:26.582Z" 306 | }, 307 | { 308 | "domain": "mypsx.net", 309 | "type": "enhanced", 310 | "retrievedAt": "2024-02-18T17:56:26.582Z" 311 | }, 312 | { 313 | "domain": "mysecuritycamera.com", 314 | "type": "enhanced", 315 | "retrievedAt": "2024-02-18T17:56:26.582Z" 316 | }, 317 | { 318 | "domain": "mysecuritycamera.net", 319 | "type": "enhanced", 320 | "retrievedAt": "2024-02-18T17:56:26.582Z" 321 | }, 322 | { 323 | "domain": "mysecuritycamera.org", 324 | "type": "enhanced", 325 | "retrievedAt": "2024-02-18T17:56:26.582Z" 326 | }, 327 | { 328 | "domain": "net-freaks.com", 329 | "type": "enhanced", 330 | "retrievedAt": "2024-02-18T17:56:26.582Z" 331 | }, 332 | { 333 | "domain": "nflfan.org", 334 | "type": "enhanced", 335 | "retrievedAt": "2024-02-18T17:56:26.582Z" 336 | }, 337 | { 338 | "domain": "nhlfan.net", 339 | "type": "enhanced", 340 | "retrievedAt": "2024-02-18T17:56:26.582Z" 341 | }, 342 | { 343 | "domain": "pgafan.net", 344 | "type": "enhanced", 345 | "retrievedAt": "2024-02-18T17:56:26.582Z" 346 | }, 347 | { 348 | "domain": "point2this.com", 349 | "type": "enhanced", 350 | "retrievedAt": "2024-02-18T17:56:26.582Z" 351 | }, 352 | { 353 | "domain": "pointto.us", 354 | "type": "enhanced", 355 | "retrievedAt": "2024-02-18T17:56:26.582Z" 356 | }, 357 | { 358 | "domain": "privatizehealthinsurance.net", 359 | "type": "enhanced", 360 | "retrievedAt": "2024-02-18T17:56:26.582Z" 361 | }, 362 | { 363 | "domain": "quicksytes.com", 364 | "type": "enhanced", 365 | "retrievedAt": "2024-02-18T17:56:26.582Z" 366 | }, 367 | { 368 | "domain": "read-books.org", 369 | "type": "enhanced", 370 | "retrievedAt": "2024-02-18T17:56:26.582Z" 371 | }, 372 | { 373 | "domain": "securitytactics.com", 374 | "type": "enhanced", 375 | "retrievedAt": "2024-02-18T17:56:26.582Z" 376 | }, 377 | { 378 | "domain": "serveexchange.com", 379 | "type": "enhanced", 380 | "retrievedAt": "2024-02-18T17:56:26.582Z" 381 | }, 382 | { 383 | "domain": "servehumour.com", 384 | "type": "enhanced", 385 | "retrievedAt": "2024-02-18T17:56:26.582Z" 386 | }, 387 | { 388 | "domain": "servep2p.com", 389 | "type": "enhanced", 390 | "retrievedAt": "2024-02-18T17:56:26.582Z" 391 | }, 392 | { 393 | "domain": "servesarcasm.com", 394 | "type": "enhanced", 395 | "retrievedAt": "2024-02-18T17:56:26.582Z" 396 | }, 397 | { 398 | "domain": "stufftoread.com", 399 | "type": "enhanced", 400 | "retrievedAt": "2024-02-18T17:56:26.582Z" 401 | }, 402 | { 403 | "domain": "ufcfan.org", 404 | "type": "enhanced", 405 | "retrievedAt": "2024-02-18T17:56:26.582Z" 406 | }, 407 | { 408 | "domain": "unusualperson.com", 409 | "type": "enhanced", 410 | "retrievedAt": "2024-02-18T17:56:26.582Z" 411 | }, 412 | { 413 | "domain": "workisboring.com", 414 | "type": "enhanced", 415 | "retrievedAt": "2024-02-18T17:56:26.582Z" 416 | } 417 | ] -------------------------------------------------------------------------------- /scripts/data/changeip.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "125", 4 | "domain": "dynamic-dns.net", 5 | "retrievedAt": "2024-02-18T18:00:27.132Z" 6 | }, 7 | { 8 | "id": "130", 9 | "domain": "longmusic.com", 10 | "retrievedAt": "2024-02-18T18:00:27.132Z" 11 | }, 12 | { 13 | "id": "223", 14 | "domain": "wikaba.com", 15 | "retrievedAt": "2024-02-18T18:00:27.132Z" 16 | }, 17 | { 18 | "id": "301", 19 | "domain": "zzux.com", 20 | "retrievedAt": "2024-02-18T18:00:27.132Z" 21 | }, 22 | { 23 | "id": "394", 24 | "domain": "dumb1.com", 25 | "retrievedAt": "2024-02-18T18:00:27.132Z" 26 | }, 27 | { 28 | "id": "474", 29 | "domain": "onedumb.com", 30 | "retrievedAt": "2024-02-18T18:00:27.132Z" 31 | }, 32 | { 33 | "id": "1164", 34 | "domain": "youdontcare.com", 35 | "retrievedAt": "2024-02-18T18:00:27.132Z" 36 | }, 37 | { 38 | "id": "1165", 39 | "domain": "yourtrap.com", 40 | "retrievedAt": "2024-02-18T18:00:27.132Z" 41 | }, 42 | { 43 | "id": "1166", 44 | "domain": "2waky.com", 45 | "retrievedAt": "2024-02-18T18:00:27.132Z" 46 | }, 47 | { 48 | "id": "1167", 49 | "domain": "sexidude.com", 50 | "retrievedAt": "2024-02-18T18:00:27.132Z" 51 | }, 52 | { 53 | "id": "1168", 54 | "domain": "mefound.com", 55 | "retrievedAt": "2024-02-18T18:00:27.132Z" 56 | }, 57 | { 58 | "id": "1796", 59 | "domain": "organiccrap.com", 60 | "retrievedAt": "2024-02-18T18:00:27.132Z" 61 | }, 62 | { 63 | "id": "1797", 64 | "domain": "toythieves.com", 65 | "retrievedAt": "2024-02-18T18:00:27.132Z" 66 | }, 67 | { 68 | "id": "1798", 69 | "domain": "justdied.com", 70 | "retrievedAt": "2024-02-18T18:00:27.132Z" 71 | }, 72 | { 73 | "id": "1799", 74 | "domain": "jungleheart.com", 75 | "retrievedAt": "2024-02-18T18:00:27.132Z" 76 | }, 77 | { 78 | "id": "2882", 79 | "domain": "mrbasic.com", 80 | "retrievedAt": "2024-02-18T18:00:27.132Z" 81 | }, 82 | { 83 | "id": "2883", 84 | "domain": "mrbonus.com", 85 | "retrievedAt": "2024-02-18T18:00:27.132Z" 86 | }, 87 | { 88 | "id": "2884", 89 | "domain": "x24hr.com", 90 | "retrievedAt": "2024-02-18T18:00:27.132Z" 91 | }, 92 | { 93 | "id": "4106", 94 | "domain": "dns04.com", 95 | "retrievedAt": "2024-02-18T18:00:27.132Z" 96 | }, 97 | { 98 | "id": "4107", 99 | "domain": "dns05.com", 100 | "retrievedAt": "2024-02-18T18:00:27.132Z" 101 | }, 102 | { 103 | "id": "4108", 104 | "domain": "zyns.com", 105 | "retrievedAt": "2024-02-18T18:00:27.132Z" 106 | }, 107 | { 108 | "id": "4109", 109 | "domain": "my03.com", 110 | "retrievedAt": "2024-02-18T18:00:27.132Z" 111 | }, 112 | { 113 | "id": "4343", 114 | "domain": "fartit.com", 115 | "retrievedAt": "2024-02-18T18:00:27.132Z" 116 | }, 117 | { 118 | "id": "4574", 119 | "domain": "itemdb.com", 120 | "retrievedAt": "2024-02-18T18:00:27.132Z" 121 | }, 122 | { 123 | "id": "4575", 124 | "domain": "instanthq.com", 125 | "retrievedAt": "2024-02-18T18:00:27.132Z" 126 | }, 127 | { 128 | "id": "4576", 129 | "domain": "xxuz.com", 130 | "retrievedAt": "2024-02-18T18:00:27.132Z" 131 | }, 132 | { 133 | "id": "4577", 134 | "domain": "jkub.com", 135 | "retrievedAt": "2024-02-18T18:00:27.132Z" 136 | }, 137 | { 138 | "id": "4708", 139 | "domain": "itsaol.com", 140 | "retrievedAt": "2024-02-18T18:00:27.132Z" 141 | }, 142 | { 143 | "id": "4709", 144 | "domain": "faqserv.com", 145 | "retrievedAt": "2024-02-18T18:00:27.132Z" 146 | }, 147 | { 148 | "id": "4710", 149 | "domain": "jetos.com", 150 | "retrievedAt": "2024-02-18T18:00:27.132Z" 151 | }, 152 | { 153 | "id": "4779", 154 | "domain": "qpoe.com", 155 | "retrievedAt": "2024-02-18T18:00:27.132Z" 156 | }, 157 | { 158 | "id": "4780", 159 | "domain": "qhigh.com", 160 | "retrievedAt": "2024-02-18T18:00:27.132Z" 161 | }, 162 | { 163 | "id": "4808", 164 | "domain": "vizvaz.com", 165 | "retrievedAt": "2024-02-18T18:00:27.132Z" 166 | }, 167 | { 168 | "id": "4812", 169 | "domain": "mrface.com", 170 | "retrievedAt": "2024-02-18T18:00:27.132Z" 171 | }, 172 | { 173 | "id": "4813", 174 | "domain": "isasecret.com", 175 | "retrievedAt": "2024-02-18T18:00:27.132Z" 176 | }, 177 | { 178 | "id": "6313", 179 | "domain": "mrslove.com", 180 | "retrievedAt": "2024-02-18T18:00:27.132Z" 181 | }, 182 | { 183 | "id": "7593", 184 | "domain": "otzo.com", 185 | "retrievedAt": "2024-02-18T18:00:27.132Z" 186 | }, 187 | { 188 | "id": "7695", 189 | "domain": "americanunfinished.com", 190 | "retrievedAt": "2024-02-18T18:00:27.132Z" 191 | }, 192 | { 193 | "id": "7812", 194 | "domain": "serveusers.com", 195 | "retrievedAt": "2024-02-18T18:00:27.132Z" 196 | }, 197 | { 198 | "id": "8116", 199 | "domain": "serveuser.com", 200 | "retrievedAt": "2024-02-18T18:00:27.132Z" 201 | }, 202 | { 203 | "id": "11269", 204 | "domain": "freetcp.com", 205 | "retrievedAt": "2024-02-18T18:00:27.132Z" 206 | }, 207 | { 208 | "id": "13776", 209 | "domain": "ddns.info", 210 | "retrievedAt": "2024-02-18T18:00:27.132Z" 211 | }, 212 | { 213 | "id": "13853", 214 | "domain": "ns01.info", 215 | "retrievedAt": "2024-02-18T18:00:27.132Z" 216 | }, 217 | { 218 | "id": "13854", 219 | "domain": "ns02.info", 220 | "retrievedAt": "2024-02-18T18:00:27.132Z" 221 | }, 222 | { 223 | "id": "14391", 224 | "domain": "myftp.info", 225 | "retrievedAt": "2024-02-18T18:00:27.132Z" 226 | }, 227 | { 228 | "id": "14658", 229 | "domain": "mydad.info", 230 | "retrievedAt": "2024-02-18T18:00:27.132Z" 231 | }, 232 | { 233 | "id": "14659", 234 | "domain": "mymom.info", 235 | "retrievedAt": "2024-02-18T18:00:27.132Z" 236 | }, 237 | { 238 | "id": "14660", 239 | "domain": "mypicture.info", 240 | "retrievedAt": "2024-02-18T18:00:27.132Z" 241 | }, 242 | { 243 | "id": "14661", 244 | "domain": "myz.info", 245 | "retrievedAt": "2024-02-18T18:00:27.132Z" 246 | }, 247 | { 248 | "id": "14662", 249 | "domain": "squirly.info", 250 | "retrievedAt": "2024-02-18T18:00:27.132Z" 251 | }, 252 | { 253 | "id": "14663", 254 | "domain": "toh.info", 255 | "retrievedAt": "2024-02-18T18:00:27.132Z" 256 | }, 257 | { 258 | "id": "14664", 259 | "domain": "xxxy.info", 260 | "retrievedAt": "2024-02-18T18:00:27.132Z" 261 | }, 262 | { 263 | "id": "14665", 264 | "domain": "freewww.info", 265 | "retrievedAt": "2024-02-18T18:00:27.132Z" 266 | }, 267 | { 268 | "id": "14719", 269 | "domain": "freeddns.com", 270 | "retrievedAt": "2024-02-18T18:00:27.132Z" 271 | }, 272 | { 273 | "id": "14720", 274 | "domain": "myddns.com", 275 | "retrievedAt": "2024-02-18T18:00:27.132Z" 276 | }, 277 | { 278 | "id": "16000", 279 | "domain": "dynamicdns.biz", 280 | "retrievedAt": "2024-02-18T18:00:27.132Z" 281 | }, 282 | { 283 | "id": "16001", 284 | "domain": "ns01.biz", 285 | "retrievedAt": "2024-02-18T18:00:27.132Z" 286 | }, 287 | { 288 | "id": "16002", 289 | "domain": "ns02.biz", 290 | "retrievedAt": "2024-02-18T18:00:27.132Z" 291 | }, 292 | { 293 | "id": "16003", 294 | "domain": "xxxy.biz", 295 | "retrievedAt": "2024-02-18T18:00:27.132Z" 296 | }, 297 | { 298 | "id": "16004", 299 | "domain": "sexxxy.biz", 300 | "retrievedAt": "2024-02-18T18:00:27.132Z" 301 | }, 302 | { 303 | "id": "16005", 304 | "domain": "freewww.biz", 305 | "retrievedAt": "2024-02-18T18:00:27.132Z" 306 | }, 307 | { 308 | "id": "16006", 309 | "domain": "www1.biz", 310 | "retrievedAt": "2024-02-18T18:00:27.132Z" 311 | }, 312 | { 313 | "id": "16007", 314 | "domain": "dhcp.biz", 315 | "retrievedAt": "2024-02-18T18:00:27.132Z" 316 | }, 317 | { 318 | "id": "16008", 319 | "domain": "edns.biz", 320 | "retrievedAt": "2024-02-18T18:00:27.132Z" 321 | }, 322 | { 323 | "id": "16009", 324 | "domain": "ftp1.biz", 325 | "retrievedAt": "2024-02-18T18:00:27.132Z" 326 | }, 327 | { 328 | "id": "16010", 329 | "domain": "mywww.biz", 330 | "retrievedAt": "2024-02-18T18:00:27.132Z" 331 | }, 332 | { 333 | "id": "16011", 334 | "domain": "gr8domain.biz", 335 | "retrievedAt": "2024-02-18T18:00:27.132Z" 336 | }, 337 | { 338 | "id": "16012", 339 | "domain": "gr8name.biz", 340 | "retrievedAt": "2024-02-18T18:00:27.132Z" 341 | }, 342 | { 343 | "id": "16013", 344 | "domain": "ftpserver.biz", 345 | "retrievedAt": "2024-02-18T18:00:27.132Z" 346 | }, 347 | { 348 | "id": "16014", 349 | "domain": "wwwhost.biz", 350 | "retrievedAt": "2024-02-18T18:00:27.132Z" 351 | }, 352 | { 353 | "id": "16015", 354 | "domain": "moneyhome.biz", 355 | "retrievedAt": "2024-02-18T18:00:27.132Z" 356 | }, 357 | { 358 | "id": "16016", 359 | "domain": "port25.biz", 360 | "retrievedAt": "2024-02-18T18:00:27.132Z" 361 | }, 362 | { 363 | "id": "16017", 364 | "domain": "esmtp.biz", 365 | "retrievedAt": "2024-02-18T18:00:27.132Z" 366 | }, 367 | { 368 | "id": "16018", 369 | "domain": "dsmtp.biz", 370 | "retrievedAt": "2024-02-18T18:00:27.132Z" 371 | }, 372 | { 373 | "id": "16019", 374 | "domain": "sixth.biz", 375 | "retrievedAt": "2024-02-18T18:00:27.132Z" 376 | }, 377 | { 378 | "id": "16020", 379 | "domain": "ninth.biz", 380 | "retrievedAt": "2024-02-18T18:00:27.132Z" 381 | }, 382 | { 383 | "id": "23200", 384 | "domain": "misecure.com", 385 | "retrievedAt": "2024-02-18T18:00:27.132Z" 386 | }, 387 | { 388 | "id": "26097", 389 | "domain": "got-game.org", 390 | "retrievedAt": "2024-02-18T18:00:27.132Z" 391 | }, 392 | { 393 | "id": "27172", 394 | "domain": "bigmoney.biz", 395 | "retrievedAt": "2024-02-18T18:00:27.132Z" 396 | }, 397 | { 398 | "id": "29509", 399 | "domain": "dns2.us", 400 | "retrievedAt": "2024-02-18T18:00:27.132Z" 401 | }, 402 | { 403 | "id": "29510", 404 | "domain": "dns1.us", 405 | "retrievedAt": "2024-02-18T18:00:27.132Z" 406 | }, 407 | { 408 | "id": "29511", 409 | "domain": "ns02.us", 410 | "retrievedAt": "2024-02-18T18:00:27.132Z" 411 | }, 412 | { 413 | "id": "29512", 414 | "domain": "ns01.us", 415 | "retrievedAt": "2024-02-18T18:00:27.132Z" 416 | }, 417 | { 418 | "id": "29513", 419 | "domain": "changeip.us", 420 | "retrievedAt": "2024-02-18T18:00:27.132Z" 421 | }, 422 | { 423 | "id": "30583", 424 | "domain": "changeip.biz", 425 | "retrievedAt": "2024-02-18T18:00:27.132Z" 426 | }, 427 | { 428 | "id": "30585", 429 | "domain": "almostmy.com", 430 | "retrievedAt": "2024-02-18T18:00:27.132Z" 431 | }, 432 | { 433 | "id": "31259", 434 | "domain": "ocry.com", 435 | "retrievedAt": "2024-02-18T18:00:27.132Z" 436 | }, 437 | { 438 | "id": "31260", 439 | "domain": "ourhobby.com", 440 | "retrievedAt": "2024-02-18T18:00:27.132Z" 441 | }, 442 | { 443 | "id": "32205", 444 | "domain": "dnsfailover.net", 445 | "retrievedAt": "2024-02-18T18:00:27.132Z" 446 | }, 447 | { 448 | "id": "36466", 449 | "domain": "ygto.com", 450 | "retrievedAt": "2024-02-18T18:00:27.132Z" 451 | }, 452 | { 453 | "id": "40911", 454 | "domain": "ddns.ms", 455 | "retrievedAt": "2024-02-18T18:00:27.132Z" 456 | }, 457 | { 458 | "id": "42946", 459 | "domain": "ddns.us", 460 | "retrievedAt": "2024-02-18T18:00:27.132Z" 461 | }, 462 | { 463 | "id": "46927", 464 | "domain": "gettrials.com", 465 | "retrievedAt": "2024-02-18T18:00:27.132Z" 466 | }, 467 | { 468 | "id": "60528", 469 | "domain": "25u.com", 470 | "retrievedAt": "2024-02-18T18:00:27.132Z" 471 | }, 472 | { 473 | "id": "60529", 474 | "domain": "4dq.com", 475 | "retrievedAt": "2024-02-18T18:00:27.132Z" 476 | }, 477 | { 478 | "id": "60530", 479 | "domain": "4pu.com", 480 | "retrievedAt": "2024-02-18T18:00:27.132Z" 481 | }, 482 | { 483 | "id": "67803", 484 | "domain": "3-a.net", 485 | "retrievedAt": "2024-02-18T18:00:27.132Z" 486 | }, 487 | { 488 | "id": "69792", 489 | "domain": "dsmtp.com", 490 | "retrievedAt": "2024-02-18T18:00:27.132Z" 491 | }, 492 | { 493 | "id": "69792", 494 | "domain": "dsmtp.com", 495 | "retrievedAt": "2024-02-18T18:00:27.132Z" 496 | }, 497 | { 498 | "id": "70498", 499 | "domain": "mynumber.org", 500 | "retrievedAt": "2024-02-18T18:00:27.132Z" 501 | }, 502 | { 503 | "id": "73663", 504 | "domain": "ns1.name", 505 | "retrievedAt": "2024-02-18T18:00:27.132Z" 506 | }, 507 | { 508 | "id": "73664", 509 | "domain": "ns2.name", 510 | "retrievedAt": "2024-02-18T18:00:27.132Z" 511 | }, 512 | { 513 | "id": "73665", 514 | "domain": "ns3.name", 515 | "retrievedAt": "2024-02-18T18:00:27.132Z" 516 | }, 517 | { 518 | "id": "75907", 519 | "domain": "rebatesrule.net", 520 | "retrievedAt": "2024-02-18T18:00:27.132Z" 521 | }, 522 | { 523 | "id": "82919", 524 | "domain": "ezua.com", 525 | "retrievedAt": "2024-02-18T18:00:27.132Z" 526 | }, 527 | { 528 | "id": "85038", 529 | "domain": "sendsmtp.com", 530 | "retrievedAt": "2024-02-18T18:00:27.132Z" 531 | }, 532 | { 533 | "id": "85039", 534 | "domain": "ssmailer.com", 535 | "retrievedAt": "2024-02-18T18:00:27.132Z" 536 | }, 537 | { 538 | "id": "86280", 539 | "domain": "trickip.net", 540 | "retrievedAt": "2024-02-18T18:00:27.132Z" 541 | }, 542 | { 543 | "id": "86281", 544 | "domain": "trickip.org", 545 | "retrievedAt": "2024-02-18T18:00:27.132Z" 546 | }, 547 | { 548 | "id": "92623", 549 | "domain": "dnsrd.com", 550 | "retrievedAt": "2024-02-18T18:00:27.132Z" 551 | }, 552 | { 553 | "id": "93684", 554 | "domain": "lflinkup.com", 555 | "retrievedAt": "2024-02-18T18:00:27.132Z" 556 | }, 557 | { 558 | "id": "93685", 559 | "domain": "lflinkup.net", 560 | "retrievedAt": "2024-02-18T18:00:27.132Z" 561 | }, 562 | { 563 | "id": "93686", 564 | "domain": "lflinkup.org", 565 | "retrievedAt": "2024-02-18T18:00:27.132Z" 566 | }, 567 | { 568 | "id": "95441", 569 | "domain": "lflink.com", 570 | "retrievedAt": "2024-02-18T18:00:27.132Z" 571 | }, 572 | { 573 | "id": "98690", 574 | "domain": "dns-dns.com", 575 | "retrievedAt": "2024-02-18T18:00:27.132Z" 576 | }, 577 | { 578 | "id": "104118", 579 | "domain": "b0tnet.com", 580 | "retrievedAt": "2024-02-18T18:00:27.132Z" 581 | }, 582 | { 583 | "id": "109397", 584 | "domain": "proxydns.com", 585 | "retrievedAt": "2024-02-18T18:00:27.132Z" 586 | }, 587 | { 588 | "id": "120613", 589 | "domain": "changeip.net", 590 | "retrievedAt": "2024-02-18T18:00:27.132Z" 591 | }, 592 | { 593 | "id": "120614", 594 | "domain": "mysecondarydns.com", 595 | "retrievedAt": "2024-02-18T18:00:27.132Z" 596 | }, 597 | { 598 | "id": "121279", 599 | "domain": "changeip.org", 600 | "retrievedAt": "2024-02-18T18:00:27.132Z" 601 | }, 602 | { 603 | "id": "121280", 604 | "domain": "dns-stuff.com", 605 | "retrievedAt": "2024-02-18T18:00:27.132Z" 606 | }, 607 | { 608 | "id": "124707", 609 | "domain": "dynssl.com", 610 | "retrievedAt": "2024-02-18T18:00:27.132Z" 611 | }, 612 | { 613 | "id": "127452", 614 | "domain": "mylftv.com", 615 | "retrievedAt": "2024-02-18T18:00:27.132Z" 616 | }, 617 | { 618 | "id": "127455", 619 | "domain": "mynetav.com", 620 | "retrievedAt": "2024-02-18T18:00:27.132Z" 621 | }, 622 | { 623 | "id": "127456", 624 | "domain": "mynetav.net", 625 | "retrievedAt": "2024-02-18T18:00:27.132Z" 626 | }, 627 | { 628 | "id": "127457", 629 | "domain": "mynetav.org", 630 | "retrievedAt": "2024-02-18T18:00:27.132Z" 631 | }, 632 | { 633 | "id": "131439", 634 | "domain": "dns-report.com", 635 | "retrievedAt": "2024-02-18T18:00:27.132Z" 636 | }, 637 | { 638 | "id": "152007", 639 | "domain": "homingbeacon.net", 640 | "retrievedAt": "2024-02-18T18:00:27.132Z" 641 | }, 642 | { 643 | "id": "158564", 644 | "domain": "ikwb.com", 645 | "retrievedAt": "2024-02-18T18:00:27.132Z" 646 | }, 647 | { 648 | "id": "170516", 649 | "domain": "acmetoy.com", 650 | "retrievedAt": "2024-02-18T18:00:27.132Z" 651 | }, 652 | { 653 | "id": "193215", 654 | "domain": "ddns.mobi", 655 | "retrievedAt": "2024-02-18T18:00:27.132Z" 656 | }, 657 | { 658 | "id": "194590", 659 | "domain": "dnset.com", 660 | "retrievedAt": "2024-02-18T18:00:27.132Z" 661 | }, 662 | { 663 | "id": "275373", 664 | "domain": "as19557.net", 665 | "retrievedAt": "2024-02-18T18:00:27.132Z" 666 | }, 667 | { 668 | "id": "365616", 669 | "domain": "toshibanetcam.com", 670 | "retrievedAt": "2024-02-18T18:00:27.132Z" 671 | }, 672 | { 673 | "id": "1199594", 674 | "domain": "authorizeddns.net", 675 | "retrievedAt": "2024-02-18T18:00:27.132Z" 676 | }, 677 | { 678 | "id": "1199595", 679 | "domain": "authorizeddns.org", 680 | "retrievedAt": "2024-02-18T18:00:27.132Z" 681 | }, 682 | { 683 | "id": "1199596", 684 | "domain": "authorizeddns.us", 685 | "retrievedAt": "2024-02-18T18:00:27.132Z" 686 | }, 687 | { 688 | "id": "1199643", 689 | "domain": "cleansite.biz", 690 | "retrievedAt": "2024-02-18T18:00:27.132Z" 691 | }, 692 | { 693 | "id": "1199644", 694 | "domain": "cleansite.info", 695 | "retrievedAt": "2024-02-18T18:00:27.132Z" 696 | }, 697 | { 698 | "id": "1199645", 699 | "domain": "cleansite.us", 700 | "retrievedAt": "2024-02-18T18:00:27.132Z" 701 | }, 702 | { 703 | "id": "1199740", 704 | "domain": "https443.net", 705 | "retrievedAt": "2024-02-18T18:00:27.132Z" 706 | }, 707 | { 708 | "id": "1199741", 709 | "domain": "https443.org", 710 | "retrievedAt": "2024-02-18T18:00:27.132Z" 711 | }, 712 | { 713 | "id": "1199742", 714 | "domain": "mypop3.net", 715 | "retrievedAt": "2024-02-18T18:00:27.132Z" 716 | }, 717 | { 718 | "id": "1199743", 719 | "domain": "mypop3.org", 720 | "retrievedAt": "2024-02-18T18:00:27.132Z" 721 | }, 722 | { 723 | "id": "1216040", 724 | "domain": "iownyour.biz", 725 | "retrievedAt": "2024-02-18T18:00:27.132Z" 726 | }, 727 | { 728 | "id": "1216041", 729 | "domain": "iownyour.org", 730 | "retrievedAt": "2024-02-18T18:00:27.132Z" 731 | }, 732 | { 733 | "id": "1257717", 734 | "domain": "onmypc.biz", 735 | "retrievedAt": "2024-02-18T18:00:27.132Z" 736 | }, 737 | { 738 | "id": "1257718", 739 | "domain": "onmypc.info", 740 | "retrievedAt": "2024-02-18T18:00:27.132Z" 741 | }, 742 | { 743 | "id": "1257719", 744 | "domain": "onmypc.net", 745 | "retrievedAt": "2024-02-18T18:00:27.132Z" 746 | }, 747 | { 748 | "id": "1257720", 749 | "domain": "onmypc.org", 750 | "retrievedAt": "2024-02-18T18:00:27.132Z" 751 | }, 752 | { 753 | "id": "1257721", 754 | "domain": "onmypc.us", 755 | "retrievedAt": "2024-02-18T18:00:27.132Z" 756 | }, 757 | { 758 | "id": "21143264", 759 | "domain": "dubya.info", 760 | "retrievedAt": "2024-02-18T18:00:27.132Z" 761 | }, 762 | { 763 | "id": "21143265", 764 | "domain": "dubya.us", 765 | "retrievedAt": "2024-02-18T18:00:27.132Z" 766 | }, 767 | { 768 | "id": "21143266", 769 | "domain": "dubya.biz", 770 | "retrievedAt": "2024-02-18T18:00:27.132Z" 771 | }, 772 | { 773 | "id": "21407527", 774 | "domain": "dubya.net", 775 | "retrievedAt": "2024-02-18T18:00:27.132Z" 776 | }, 777 | { 778 | "id": "21601743", 779 | "domain": "wwwhost.us", 780 | "retrievedAt": "2024-02-18T18:00:27.132Z" 781 | }, 782 | { 783 | "id": "21952302", 784 | "domain": "changeip.co", 785 | "retrievedAt": "2024-02-18T18:00:27.132Z" 786 | }, 787 | { 788 | "id": "48875296", 789 | "domain": "freeddns.me", 790 | "retrievedAt": "2025-10-27T21:12:07.705Z" 791 | }, 792 | { 793 | "id": "48875946", 794 | "domain": "freeddns.tokyo", 795 | "retrievedAt": "2025-11-04T21:13:26.932Z" 796 | } 797 | ] -------------------------------------------------------------------------------- /scripts/data/dyn.com.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "domain": "dyndns.org", 4 | "retrievedAt": "2024-02-18T17:56:25.580Z" 5 | }, 6 | { 7 | "domain": "dvrdns.org", 8 | "retrievedAt": "2024-02-18T17:56:25.580Z" 9 | }, 10 | { 11 | "domain": "dyndns.tv", 12 | "retrievedAt": "2024-02-18T17:56:25.580Z" 13 | }, 14 | { 15 | "domain": "dyndns.info", 16 | "retrievedAt": "2024-02-18T17:56:25.580Z" 17 | }, 18 | { 19 | "domain": "homeip.net", 20 | "retrievedAt": "2024-02-18T17:56:25.580Z" 21 | }, 22 | { 23 | "domain": "dyndns.biz", 24 | "retrievedAt": "2024-02-18T17:56:25.580Z" 25 | }, 26 | { 27 | "domain": "mine.nu", 28 | "retrievedAt": "2024-02-18T17:56:25.580Z" 29 | }, 30 | { 31 | "domain": "dnsalias.com", 32 | "retrievedAt": "2024-02-18T17:56:25.580Z" 33 | }, 34 | { 35 | "domain": "dyndns-ip.com", 36 | "retrievedAt": "2024-02-18T17:56:25.580Z" 37 | }, 38 | { 39 | "domain": "selfip.com", 40 | "retrievedAt": "2024-02-18T17:56:25.580Z" 41 | }, 42 | { 43 | "domain": "at-band-camp.net", 44 | "retrievedAt": "2024-02-18T17:56:25.580Z" 45 | }, 46 | { 47 | "domain": "ath.cx", 48 | "retrievedAt": "2024-02-18T17:56:25.580Z" 49 | }, 50 | { 51 | "domain": "barrel-of-knowledge.info", 52 | "retrievedAt": "2024-02-18T17:56:25.580Z" 53 | }, 54 | { 55 | "domain": "barrell-of-knowledge.info", 56 | "retrievedAt": "2024-02-18T17:56:25.580Z" 57 | }, 58 | { 59 | "domain": "better-than.tv", 60 | "retrievedAt": "2024-02-18T17:56:25.580Z" 61 | }, 62 | { 63 | "domain": "blogdns.com", 64 | "retrievedAt": "2024-02-18T17:56:25.580Z" 65 | }, 66 | { 67 | "domain": "blogdns.net", 68 | "retrievedAt": "2024-02-18T17:56:25.580Z" 69 | }, 70 | { 71 | "domain": "blogdns.org", 72 | "retrievedAt": "2024-02-18T17:56:25.580Z" 73 | }, 74 | { 75 | "domain": "blogsite.org", 76 | "retrievedAt": "2024-02-18T17:56:25.580Z" 77 | }, 78 | { 79 | "domain": "boldlygoingnowhere.org", 80 | "retrievedAt": "2024-02-18T17:56:25.580Z" 81 | }, 82 | { 83 | "domain": "broke-it.net", 84 | "retrievedAt": "2024-02-18T17:56:25.580Z" 85 | }, 86 | { 87 | "domain": "buyshouses.net", 88 | "retrievedAt": "2024-02-18T17:56:25.580Z" 89 | }, 90 | { 91 | "domain": "cechire.com", 92 | "retrievedAt": "2024-02-18T17:56:25.580Z" 93 | }, 94 | { 95 | "domain": "dnsalias.com", 96 | "retrievedAt": "2024-02-18T17:56:25.580Z" 97 | }, 98 | { 99 | "domain": "dnsalias.net", 100 | "retrievedAt": "2024-02-18T17:56:25.580Z" 101 | }, 102 | { 103 | "domain": "dnsalias.org", 104 | "retrievedAt": "2024-02-18T17:56:25.580Z" 105 | }, 106 | { 107 | "domain": "dnsdojo.com", 108 | "retrievedAt": "2024-02-18T17:56:25.580Z" 109 | }, 110 | { 111 | "domain": "dnsdojo.net", 112 | "retrievedAt": "2024-02-18T17:56:25.580Z" 113 | }, 114 | { 115 | "domain": "dnsdojo.org", 116 | "retrievedAt": "2024-02-18T17:56:25.580Z" 117 | }, 118 | { 119 | "domain": "does-it.net", 120 | "retrievedAt": "2024-02-18T17:56:25.580Z" 121 | }, 122 | { 123 | "domain": "doesntexist.com", 124 | "retrievedAt": "2024-02-18T17:56:25.580Z" 125 | }, 126 | { 127 | "domain": "doesntexist.org", 128 | "retrievedAt": "2024-02-18T17:56:25.580Z" 129 | }, 130 | { 131 | "domain": "dontexist.com", 132 | "retrievedAt": "2024-02-18T17:56:25.580Z" 133 | }, 134 | { 135 | "domain": "dontexist.net", 136 | "retrievedAt": "2024-02-18T17:56:25.580Z" 137 | }, 138 | { 139 | "domain": "dontexist.org", 140 | "retrievedAt": "2024-02-18T17:56:25.580Z" 141 | }, 142 | { 143 | "domain": "doomdns.com", 144 | "retrievedAt": "2024-02-18T17:56:25.580Z" 145 | }, 146 | { 147 | "domain": "doomdns.org", 148 | "retrievedAt": "2024-02-18T17:56:25.580Z" 149 | }, 150 | { 151 | "domain": "dvrdns.org", 152 | "retrievedAt": "2024-02-18T17:56:25.580Z" 153 | }, 154 | { 155 | "domain": "dyn-o-saur.com", 156 | "retrievedAt": "2024-02-18T17:56:25.580Z" 157 | }, 158 | { 159 | "domain": "dynalias.com", 160 | "retrievedAt": "2024-02-18T17:56:25.580Z" 161 | }, 162 | { 163 | "domain": "dynalias.net", 164 | "retrievedAt": "2024-02-18T17:56:25.580Z" 165 | }, 166 | { 167 | "domain": "dynalias.org", 168 | "retrievedAt": "2024-02-18T17:56:25.580Z" 169 | }, 170 | { 171 | "domain": "dynathome.net", 172 | "retrievedAt": "2024-02-18T17:56:25.580Z" 173 | }, 174 | { 175 | "domain": "dyndns-at-home.com", 176 | "retrievedAt": "2024-02-18T17:56:25.580Z" 177 | }, 178 | { 179 | "domain": "dyndns-at-work.com", 180 | "retrievedAt": "2024-02-18T17:56:25.580Z" 181 | }, 182 | { 183 | "domain": "dyndns-blog.com", 184 | "retrievedAt": "2024-02-18T17:56:25.580Z" 185 | }, 186 | { 187 | "domain": "dyndns-free.com", 188 | "retrievedAt": "2024-02-18T17:56:25.580Z" 189 | }, 190 | { 191 | "domain": "dyndns-home.com", 192 | "retrievedAt": "2024-02-18T17:56:25.580Z" 193 | }, 194 | { 195 | "domain": "dyndns-ip.com", 196 | "retrievedAt": "2024-02-18T17:56:25.580Z" 197 | }, 198 | { 199 | "domain": "dyndns-mail.com", 200 | "retrievedAt": "2024-02-18T17:56:25.580Z" 201 | }, 202 | { 203 | "domain": "dyndns-office.com", 204 | "retrievedAt": "2024-02-18T17:56:25.580Z" 205 | }, 206 | { 207 | "domain": "dyndns-pics.com", 208 | "retrievedAt": "2024-02-18T17:56:25.580Z" 209 | }, 210 | { 211 | "domain": "dyndns-remote.com", 212 | "retrievedAt": "2024-02-18T17:56:25.580Z" 213 | }, 214 | { 215 | "domain": "dyndns-server.com", 216 | "retrievedAt": "2024-02-18T17:56:25.580Z" 217 | }, 218 | { 219 | "domain": "dyndns-web.com", 220 | "retrievedAt": "2024-02-18T17:56:25.580Z" 221 | }, 222 | { 223 | "domain": "dyndns-wiki.com", 224 | "retrievedAt": "2024-02-18T17:56:25.580Z" 225 | }, 226 | { 227 | "domain": "dyndns-work.com", 228 | "retrievedAt": "2024-02-18T17:56:25.580Z" 229 | }, 230 | { 231 | "domain": "dyndns.biz", 232 | "retrievedAt": "2024-02-18T17:56:25.580Z" 233 | }, 234 | { 235 | "domain": "dyndns.info", 236 | "retrievedAt": "2024-02-18T17:56:25.580Z" 237 | }, 238 | { 239 | "domain": "dyndns.org", 240 | "retrievedAt": "2024-02-18T17:56:25.580Z" 241 | }, 242 | { 243 | "domain": "dyndns.tv", 244 | "retrievedAt": "2024-02-18T17:56:25.580Z" 245 | }, 246 | { 247 | "domain": "dyndns.ws", 248 | "retrievedAt": "2024-02-18T17:56:25.580Z" 249 | }, 250 | { 251 | "domain": "endofinternet.net", 252 | "retrievedAt": "2024-02-18T17:56:25.580Z" 253 | }, 254 | { 255 | "domain": "endofinternet.org", 256 | "retrievedAt": "2024-02-18T17:56:25.580Z" 257 | }, 258 | { 259 | "domain": "endoftheinternet.org", 260 | "retrievedAt": "2024-02-18T17:56:25.580Z" 261 | }, 262 | { 263 | "domain": "est-a-la-maison.com", 264 | "retrievedAt": "2024-02-18T17:56:25.580Z" 265 | }, 266 | { 267 | "domain": "est-a-la-masion.com", 268 | "retrievedAt": "2024-02-18T17:56:25.580Z" 269 | }, 270 | { 271 | "domain": "est-le-patron.com", 272 | "retrievedAt": "2024-02-18T17:56:25.580Z" 273 | }, 274 | { 275 | "domain": "est-mon-blogueur.com", 276 | "retrievedAt": "2024-02-18T17:56:25.580Z" 277 | }, 278 | { 279 | "domain": "for-better.biz", 280 | "retrievedAt": "2024-02-18T17:56:25.580Z" 281 | }, 282 | { 283 | "domain": "for-more.biz", 284 | "retrievedAt": "2024-02-18T17:56:25.580Z" 285 | }, 286 | { 287 | "domain": "for-our.info", 288 | "retrievedAt": "2024-02-18T17:56:25.580Z" 289 | }, 290 | { 291 | "domain": "for-some.biz", 292 | "retrievedAt": "2024-02-18T17:56:25.580Z" 293 | }, 294 | { 295 | "domain": "for-the.biz", 296 | "retrievedAt": "2024-02-18T17:56:25.580Z" 297 | }, 298 | { 299 | "domain": "forgot.her.name", 300 | "retrievedAt": "2024-02-18T17:56:25.580Z" 301 | }, 302 | { 303 | "domain": "forgot.his.name", 304 | "retrievedAt": "2024-02-18T17:56:25.580Z" 305 | }, 306 | { 307 | "domain": "from-ak.com", 308 | "retrievedAt": "2024-02-18T17:56:25.580Z" 309 | }, 310 | { 311 | "domain": "from-al.com", 312 | "retrievedAt": "2024-02-18T17:56:25.580Z" 313 | }, 314 | { 315 | "domain": "from-ar.com", 316 | "retrievedAt": "2024-02-18T17:56:25.580Z" 317 | }, 318 | { 319 | "domain": "from-az.net", 320 | "retrievedAt": "2024-02-18T17:56:25.580Z" 321 | }, 322 | { 323 | "domain": "from-ca.com", 324 | "retrievedAt": "2024-02-18T17:56:25.580Z" 325 | }, 326 | { 327 | "domain": "from-co.net", 328 | "retrievedAt": "2024-02-18T17:56:25.580Z" 329 | }, 330 | { 331 | "domain": "from-ct.com", 332 | "retrievedAt": "2024-02-18T17:56:25.580Z" 333 | }, 334 | { 335 | "domain": "from-dc.com", 336 | "retrievedAt": "2024-02-18T17:56:25.580Z" 337 | }, 338 | { 339 | "domain": "from-de.com", 340 | "retrievedAt": "2024-02-18T17:56:25.580Z" 341 | }, 342 | { 343 | "domain": "from-fl.com", 344 | "retrievedAt": "2024-02-18T17:56:25.580Z" 345 | }, 346 | { 347 | "domain": "from-ga.com", 348 | "retrievedAt": "2024-02-18T17:56:25.580Z" 349 | }, 350 | { 351 | "domain": "from-hi.com", 352 | "retrievedAt": "2024-02-18T17:56:25.580Z" 353 | }, 354 | { 355 | "domain": "from-ia.com", 356 | "retrievedAt": "2024-02-18T17:56:25.580Z" 357 | }, 358 | { 359 | "domain": "from-id.com", 360 | "retrievedAt": "2024-02-18T17:56:25.580Z" 361 | }, 362 | { 363 | "domain": "from-il.com", 364 | "retrievedAt": "2024-02-18T17:56:25.580Z" 365 | }, 366 | { 367 | "domain": "from-in.com", 368 | "retrievedAt": "2024-02-18T17:56:25.580Z" 369 | }, 370 | { 371 | "domain": "from-ks.com", 372 | "retrievedAt": "2024-02-18T17:56:25.580Z" 373 | }, 374 | { 375 | "domain": "from-ky.com", 376 | "retrievedAt": "2024-02-18T17:56:25.580Z" 377 | }, 378 | { 379 | "domain": "from-la.net", 380 | "retrievedAt": "2024-02-18T17:56:25.580Z" 381 | }, 382 | { 383 | "domain": "from-ma.com", 384 | "retrievedAt": "2024-02-18T17:56:25.580Z" 385 | }, 386 | { 387 | "domain": "from-md.com", 388 | "retrievedAt": "2024-02-18T17:56:25.580Z" 389 | }, 390 | { 391 | "domain": "from-me.org", 392 | "retrievedAt": "2024-02-18T17:56:25.580Z" 393 | }, 394 | { 395 | "domain": "from-mi.com", 396 | "retrievedAt": "2024-02-18T17:56:25.580Z" 397 | }, 398 | { 399 | "domain": "from-mn.com", 400 | "retrievedAt": "2024-02-18T17:56:25.580Z" 401 | }, 402 | { 403 | "domain": "from-mo.com", 404 | "retrievedAt": "2024-02-18T17:56:25.580Z" 405 | }, 406 | { 407 | "domain": "from-ms.com", 408 | "retrievedAt": "2024-02-18T17:56:25.580Z" 409 | }, 410 | { 411 | "domain": "from-mt.com", 412 | "retrievedAt": "2024-02-18T17:56:25.580Z" 413 | }, 414 | { 415 | "domain": "from-nc.com", 416 | "retrievedAt": "2024-02-18T17:56:25.580Z" 417 | }, 418 | { 419 | "domain": "from-nd.com", 420 | "retrievedAt": "2024-02-18T17:56:25.580Z" 421 | }, 422 | { 423 | "domain": "from-ne.com", 424 | "retrievedAt": "2024-02-18T17:56:25.580Z" 425 | }, 426 | { 427 | "domain": "from-nh.com", 428 | "retrievedAt": "2024-02-18T17:56:25.580Z" 429 | }, 430 | { 431 | "domain": "from-nj.com", 432 | "retrievedAt": "2024-02-18T17:56:25.580Z" 433 | }, 434 | { 435 | "domain": "from-nm.com", 436 | "retrievedAt": "2024-02-18T17:56:25.580Z" 437 | }, 438 | { 439 | "domain": "from-nv.com", 440 | "retrievedAt": "2024-02-18T17:56:25.580Z" 441 | }, 442 | { 443 | "domain": "from-ny.net", 444 | "retrievedAt": "2024-02-18T17:56:25.580Z" 445 | }, 446 | { 447 | "domain": "from-oh.com", 448 | "retrievedAt": "2024-02-18T17:56:25.580Z" 449 | }, 450 | { 451 | "domain": "from-ok.com", 452 | "retrievedAt": "2024-02-18T17:56:25.580Z" 453 | }, 454 | { 455 | "domain": "from-or.com", 456 | "retrievedAt": "2024-02-18T17:56:25.580Z" 457 | }, 458 | { 459 | "domain": "from-pa.com", 460 | "retrievedAt": "2024-02-18T17:56:25.580Z" 461 | }, 462 | { 463 | "domain": "from-pr.com", 464 | "retrievedAt": "2024-02-18T17:56:25.580Z" 465 | }, 466 | { 467 | "domain": "from-ri.com", 468 | "retrievedAt": "2024-02-18T17:56:25.580Z" 469 | }, 470 | { 471 | "domain": "from-sc.com", 472 | "retrievedAt": "2024-02-18T17:56:25.580Z" 473 | }, 474 | { 475 | "domain": "from-sd.com", 476 | "retrievedAt": "2024-02-18T17:56:25.580Z" 477 | }, 478 | { 479 | "domain": "from-tn.com", 480 | "retrievedAt": "2024-02-18T17:56:25.580Z" 481 | }, 482 | { 483 | "domain": "from-tx.com", 484 | "retrievedAt": "2024-02-18T17:56:25.580Z" 485 | }, 486 | { 487 | "domain": "from-ut.com", 488 | "retrievedAt": "2024-02-18T17:56:25.580Z" 489 | }, 490 | { 491 | "domain": "from-va.com", 492 | "retrievedAt": "2024-02-18T17:56:25.580Z" 493 | }, 494 | { 495 | "domain": "from-vt.com", 496 | "retrievedAt": "2024-02-18T17:56:25.580Z" 497 | }, 498 | { 499 | "domain": "from-wa.com", 500 | "retrievedAt": "2024-02-18T17:56:25.580Z" 501 | }, 502 | { 503 | "domain": "from-wi.com", 504 | "retrievedAt": "2024-02-18T17:56:25.580Z" 505 | }, 506 | { 507 | "domain": "from-wv.com", 508 | "retrievedAt": "2024-02-18T17:56:25.580Z" 509 | }, 510 | { 511 | "domain": "from-wy.com", 512 | "retrievedAt": "2024-02-18T17:56:25.580Z" 513 | }, 514 | { 515 | "domain": "ftpaccess.cc", 516 | "retrievedAt": "2024-02-18T17:56:25.580Z" 517 | }, 518 | { 519 | "domain": "fuettertdasnetz.de", 520 | "retrievedAt": "2024-02-18T17:56:25.580Z" 521 | }, 522 | { 523 | "domain": "game-host.org", 524 | "retrievedAt": "2024-02-18T17:56:25.580Z" 525 | }, 526 | { 527 | "domain": "game-server.cc", 528 | "retrievedAt": "2024-02-18T17:56:25.580Z" 529 | }, 530 | { 531 | "domain": "getmyip.com", 532 | "retrievedAt": "2024-02-18T17:56:25.580Z" 533 | }, 534 | { 535 | "domain": "gets-it.net", 536 | "retrievedAt": "2024-02-18T17:56:25.580Z" 537 | }, 538 | { 539 | "domain": "go.dyndns.org", 540 | "retrievedAt": "2024-02-18T17:56:25.580Z" 541 | }, 542 | { 543 | "domain": "gotdns.com", 544 | "retrievedAt": "2024-02-18T17:56:25.580Z" 545 | }, 546 | { 547 | "domain": "gotdns.org", 548 | "retrievedAt": "2024-02-18T17:56:25.580Z" 549 | }, 550 | { 551 | "domain": "groks-the.info", 552 | "retrievedAt": "2024-02-18T17:56:25.580Z" 553 | }, 554 | { 555 | "domain": "groks-this.info", 556 | "retrievedAt": "2024-02-18T17:56:25.580Z" 557 | }, 558 | { 559 | "domain": "ham-radio-op.net", 560 | "retrievedAt": "2024-02-18T17:56:25.580Z" 561 | }, 562 | { 563 | "domain": "here-for-more.info", 564 | "retrievedAt": "2024-02-18T17:56:25.580Z" 565 | }, 566 | { 567 | "domain": "hobby-site.com", 568 | "retrievedAt": "2024-02-18T17:56:25.580Z" 569 | }, 570 | { 571 | "domain": "hobby-site.org", 572 | "retrievedAt": "2024-02-18T17:56:25.580Z" 573 | }, 574 | { 575 | "domain": "home.dyndns.org", 576 | "retrievedAt": "2024-02-18T17:56:25.580Z" 577 | }, 578 | { 579 | "domain": "homedns.org", 580 | "retrievedAt": "2024-02-18T17:56:25.580Z" 581 | }, 582 | { 583 | "domain": "homeftp.net", 584 | "retrievedAt": "2024-02-18T17:56:25.580Z" 585 | }, 586 | { 587 | "domain": "homeftp.org", 588 | "retrievedAt": "2024-02-18T17:56:25.580Z" 589 | }, 590 | { 591 | "domain": "homeip.net", 592 | "retrievedAt": "2024-02-18T17:56:25.580Z" 593 | }, 594 | { 595 | "domain": "homelinux.com", 596 | "retrievedAt": "2024-02-18T17:56:25.580Z" 597 | }, 598 | { 599 | "domain": "homelinux.net", 600 | "retrievedAt": "2024-02-18T17:56:25.580Z" 601 | }, 602 | { 603 | "domain": "homelinux.org", 604 | "retrievedAt": "2024-02-18T17:56:25.580Z" 605 | }, 606 | { 607 | "domain": "homeunix.com", 608 | "retrievedAt": "2024-02-18T17:56:25.580Z" 609 | }, 610 | { 611 | "domain": "homeunix.net", 612 | "retrievedAt": "2024-02-18T17:56:25.580Z" 613 | }, 614 | { 615 | "domain": "homeunix.org", 616 | "retrievedAt": "2024-02-18T17:56:25.580Z" 617 | }, 618 | { 619 | "domain": "iamallama.com", 620 | "retrievedAt": "2024-02-18T17:56:25.580Z" 621 | }, 622 | { 623 | "domain": "in-the-band.net", 624 | "retrievedAt": "2024-02-18T17:56:25.580Z" 625 | }, 626 | { 627 | "domain": "is-a-anarchist.com", 628 | "retrievedAt": "2024-02-18T17:56:25.580Z" 629 | }, 630 | { 631 | "domain": "is-a-blogger.com", 632 | "retrievedAt": "2024-02-18T17:56:25.580Z" 633 | }, 634 | { 635 | "domain": "is-a-bookkeeper.com", 636 | "retrievedAt": "2024-02-18T17:56:25.580Z" 637 | }, 638 | { 639 | "domain": "is-a-bruinsfan.org", 640 | "retrievedAt": "2024-02-18T17:56:25.580Z" 641 | }, 642 | { 643 | "domain": "is-a-bulls-fan.com", 644 | "retrievedAt": "2024-02-18T17:56:25.580Z" 645 | }, 646 | { 647 | "domain": "is-a-candidate.org", 648 | "retrievedAt": "2024-02-18T17:56:25.580Z" 649 | }, 650 | { 651 | "domain": "is-a-caterer.com", 652 | "retrievedAt": "2024-02-18T17:56:25.580Z" 653 | }, 654 | { 655 | "domain": "is-a-celticsfan.org", 656 | "retrievedAt": "2024-02-18T17:56:25.580Z" 657 | }, 658 | { 659 | "domain": "is-a-chef.com", 660 | "retrievedAt": "2024-02-18T17:56:25.580Z" 661 | }, 662 | { 663 | "domain": "is-a-chef.net", 664 | "retrievedAt": "2024-02-18T17:56:25.580Z" 665 | }, 666 | { 667 | "domain": "is-a-chef.org", 668 | "retrievedAt": "2024-02-18T17:56:25.580Z" 669 | }, 670 | { 671 | "domain": "is-a-conservative.com", 672 | "retrievedAt": "2024-02-18T17:56:25.580Z" 673 | }, 674 | { 675 | "domain": "is-a-cpa.com", 676 | "retrievedAt": "2024-02-18T17:56:25.580Z" 677 | }, 678 | { 679 | "domain": "is-a-cubicle-slave.com", 680 | "retrievedAt": "2024-02-18T17:56:25.580Z" 681 | }, 682 | { 683 | "domain": "is-a-democrat.com", 684 | "retrievedAt": "2024-02-18T17:56:25.580Z" 685 | }, 686 | { 687 | "domain": "is-a-designer.com", 688 | "retrievedAt": "2024-02-18T17:56:25.580Z" 689 | }, 690 | { 691 | "domain": "is-a-doctor.com", 692 | "retrievedAt": "2024-02-18T17:56:25.580Z" 693 | }, 694 | { 695 | "domain": "is-a-financialadvisor.com", 696 | "retrievedAt": "2024-02-18T17:56:25.580Z" 697 | }, 698 | { 699 | "domain": "is-a-geek.com", 700 | "retrievedAt": "2024-02-18T17:56:25.580Z" 701 | }, 702 | { 703 | "domain": "is-a-geek.net", 704 | "retrievedAt": "2024-02-18T17:56:25.580Z" 705 | }, 706 | { 707 | "domain": "is-a-geek.org", 708 | "retrievedAt": "2024-02-18T17:56:25.580Z" 709 | }, 710 | { 711 | "domain": "is-a-green.com", 712 | "retrievedAt": "2024-02-18T17:56:25.580Z" 713 | }, 714 | { 715 | "domain": "is-a-guru.com", 716 | "retrievedAt": "2024-02-18T17:56:25.580Z" 717 | }, 718 | { 719 | "domain": "is-a-hard-worker.com", 720 | "retrievedAt": "2024-02-18T17:56:25.580Z" 721 | }, 722 | { 723 | "domain": "is-a-hunter.com", 724 | "retrievedAt": "2024-02-18T17:56:25.580Z" 725 | }, 726 | { 727 | "domain": "is-a-knight.org", 728 | "retrievedAt": "2024-02-18T17:56:25.580Z" 729 | }, 730 | { 731 | "domain": "is-a-landscaper.com", 732 | "retrievedAt": "2024-02-18T17:56:25.580Z" 733 | }, 734 | { 735 | "domain": "is-a-lawyer.com", 736 | "retrievedAt": "2024-02-18T17:56:25.580Z" 737 | }, 738 | { 739 | "domain": "is-a-liberal.com", 740 | "retrievedAt": "2024-02-18T17:56:25.580Z" 741 | }, 742 | { 743 | "domain": "is-a-libertarian.com", 744 | "retrievedAt": "2024-02-18T17:56:25.580Z" 745 | }, 746 | { 747 | "domain": "is-a-linux-user.org", 748 | "retrievedAt": "2024-02-18T17:56:25.580Z" 749 | }, 750 | { 751 | "domain": "is-a-llama.com", 752 | "retrievedAt": "2024-02-18T17:56:25.580Z" 753 | }, 754 | { 755 | "domain": "is-a-musician.com", 756 | "retrievedAt": "2024-02-18T17:56:25.580Z" 757 | }, 758 | { 759 | "domain": "is-a-nascarfan.com", 760 | "retrievedAt": "2024-02-18T17:56:25.580Z" 761 | }, 762 | { 763 | "domain": "is-a-nurse.com", 764 | "retrievedAt": "2024-02-18T17:56:25.580Z" 765 | }, 766 | { 767 | "domain": "is-a-painter.com", 768 | "retrievedAt": "2024-02-18T17:56:25.580Z" 769 | }, 770 | { 771 | "domain": "is-a-patsfan.org", 772 | "retrievedAt": "2024-02-18T17:56:25.580Z" 773 | }, 774 | { 775 | "domain": "is-a-personaltrainer.com", 776 | "retrievedAt": "2024-02-18T17:56:25.580Z" 777 | }, 778 | { 779 | "domain": "is-a-photographer.com", 780 | "retrievedAt": "2024-02-18T17:56:25.580Z" 781 | }, 782 | { 783 | "domain": "is-a-player.com", 784 | "retrievedAt": "2024-02-18T17:56:25.580Z" 785 | }, 786 | { 787 | "domain": "is-a-republican.com", 788 | "retrievedAt": "2024-02-18T17:56:25.580Z" 789 | }, 790 | { 791 | "domain": "is-a-rockstar.com", 792 | "retrievedAt": "2024-02-18T17:56:25.580Z" 793 | }, 794 | { 795 | "domain": "is-a-socialist.com", 796 | "retrievedAt": "2024-02-18T17:56:25.580Z" 797 | }, 798 | { 799 | "domain": "is-a-soxfan.org", 800 | "retrievedAt": "2024-02-18T17:56:25.580Z" 801 | }, 802 | { 803 | "domain": "is-a-student.com", 804 | "retrievedAt": "2024-02-18T17:56:25.580Z" 805 | }, 806 | { 807 | "domain": "is-a-teacher.com", 808 | "retrievedAt": "2024-02-18T17:56:25.580Z" 809 | }, 810 | { 811 | "domain": "is-a-techie.com", 812 | "retrievedAt": "2024-02-18T17:56:25.580Z" 813 | }, 814 | { 815 | "domain": "is-a-therapist.com", 816 | "retrievedAt": "2024-02-18T17:56:25.580Z" 817 | }, 818 | { 819 | "domain": "is-an-accountant.com", 820 | "retrievedAt": "2024-02-18T17:56:25.580Z" 821 | }, 822 | { 823 | "domain": "is-an-actor.com", 824 | "retrievedAt": "2024-02-18T17:56:25.580Z" 825 | }, 826 | { 827 | "domain": "is-an-actress.com", 828 | "retrievedAt": "2024-02-18T17:56:25.580Z" 829 | }, 830 | { 831 | "domain": "is-an-anarchist.com", 832 | "retrievedAt": "2024-02-18T17:56:25.580Z" 833 | }, 834 | { 835 | "domain": "is-an-artist.com", 836 | "retrievedAt": "2024-02-18T17:56:25.580Z" 837 | }, 838 | { 839 | "domain": "is-an-engineer.com", 840 | "retrievedAt": "2024-02-18T17:56:25.580Z" 841 | }, 842 | { 843 | "domain": "is-an-entertainer.com", 844 | "retrievedAt": "2024-02-18T17:56:25.580Z" 845 | }, 846 | { 847 | "domain": "is-by.us", 848 | "retrievedAt": "2024-02-18T17:56:25.580Z" 849 | }, 850 | { 851 | "domain": "is-certified.com", 852 | "retrievedAt": "2024-02-18T17:56:25.580Z" 853 | }, 854 | { 855 | "domain": "is-found.org", 856 | "retrievedAt": "2024-02-18T17:56:25.580Z" 857 | }, 858 | { 859 | "domain": "is-gone.com", 860 | "retrievedAt": "2024-02-18T17:56:25.580Z" 861 | }, 862 | { 863 | "domain": "is-into-anime.com", 864 | "retrievedAt": "2024-02-18T17:56:25.580Z" 865 | }, 866 | { 867 | "domain": "is-into-cars.com", 868 | "retrievedAt": "2024-02-18T17:56:25.580Z" 869 | }, 870 | { 871 | "domain": "is-into-cartoons.com", 872 | "retrievedAt": "2024-02-18T17:56:25.580Z" 873 | }, 874 | { 875 | "domain": "is-into-games.com", 876 | "retrievedAt": "2024-02-18T17:56:25.580Z" 877 | }, 878 | { 879 | "domain": "is-leet.com", 880 | "retrievedAt": "2024-02-18T17:56:25.580Z" 881 | }, 882 | { 883 | "domain": "is-lost.org", 884 | "retrievedAt": "2024-02-18T17:56:25.580Z" 885 | }, 886 | { 887 | "domain": "is-not-certified.com", 888 | "retrievedAt": "2024-02-18T17:56:25.580Z" 889 | }, 890 | { 891 | "domain": "is-saved.org", 892 | "retrievedAt": "2024-02-18T17:56:25.580Z" 893 | }, 894 | { 895 | "domain": "is-slick.com", 896 | "retrievedAt": "2024-02-18T17:56:25.580Z" 897 | }, 898 | { 899 | "domain": "is-uberleet.com", 900 | "retrievedAt": "2024-02-18T17:56:25.580Z" 901 | }, 902 | { 903 | "domain": "is-very-bad.org", 904 | "retrievedAt": "2024-02-18T17:56:25.580Z" 905 | }, 906 | { 907 | "domain": "is-very-evil.org", 908 | "retrievedAt": "2024-02-18T17:56:25.580Z" 909 | }, 910 | { 911 | "domain": "is-very-good.org", 912 | "retrievedAt": "2024-02-18T17:56:25.580Z" 913 | }, 914 | { 915 | "domain": "is-very-nice.org", 916 | "retrievedAt": "2024-02-18T17:56:25.580Z" 917 | }, 918 | { 919 | "domain": "is-very-sweet.org", 920 | "retrievedAt": "2024-02-18T17:56:25.580Z" 921 | }, 922 | { 923 | "domain": "is-with-theband.com", 924 | "retrievedAt": "2024-02-18T17:56:25.580Z" 925 | }, 926 | { 927 | "domain": "isa-geek.com", 928 | "retrievedAt": "2024-02-18T17:56:25.580Z" 929 | }, 930 | { 931 | "domain": "isa-geek.net", 932 | "retrievedAt": "2024-02-18T17:56:25.580Z" 933 | }, 934 | { 935 | "domain": "isa-geek.org", 936 | "retrievedAt": "2024-02-18T17:56:25.580Z" 937 | }, 938 | { 939 | "domain": "isa-hockeynut.com", 940 | "retrievedAt": "2024-02-18T17:56:25.580Z" 941 | }, 942 | { 943 | "domain": "issmarterthanyou.com", 944 | "retrievedAt": "2024-02-18T17:56:25.580Z" 945 | }, 946 | { 947 | "domain": "isteingeek.de", 948 | "retrievedAt": "2024-02-18T17:56:25.580Z" 949 | }, 950 | { 951 | "domain": "istmein.de", 952 | "retrievedAt": "2024-02-18T17:56:25.580Z" 953 | }, 954 | { 955 | "domain": "kicks-ass.net", 956 | "retrievedAt": "2024-02-18T17:56:25.580Z" 957 | }, 958 | { 959 | "domain": "kicks-ass.org", 960 | "retrievedAt": "2024-02-18T17:56:25.580Z" 961 | }, 962 | { 963 | "domain": "knowsitall.info", 964 | "retrievedAt": "2024-02-18T17:56:25.580Z" 965 | }, 966 | { 967 | "domain": "land-4-sale.us", 968 | "retrievedAt": "2024-02-18T17:56:25.580Z" 969 | }, 970 | { 971 | "domain": "lebtimnetz.de", 972 | "retrievedAt": "2024-02-18T17:56:25.580Z" 973 | }, 974 | { 975 | "domain": "leitungsen.de", 976 | "retrievedAt": "2024-02-18T17:56:25.580Z" 977 | }, 978 | { 979 | "domain": "likes-pie.com", 980 | "retrievedAt": "2024-02-18T17:56:25.580Z" 981 | }, 982 | { 983 | "domain": "likescandy.com", 984 | "retrievedAt": "2024-02-18T17:56:25.580Z" 985 | }, 986 | { 987 | "domain": "merseine.com", 988 | "retrievedAt": "2024-02-18T17:56:25.580Z" 989 | }, 990 | { 991 | "domain": "merseine.org", 992 | "retrievedAt": "2024-02-18T17:56:25.580Z" 993 | }, 994 | { 995 | "domain": "mine.nu", 996 | "retrievedAt": "2024-02-18T17:56:25.580Z" 997 | }, 998 | { 999 | "domain": "misconfused.org", 1000 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1001 | }, 1002 | { 1003 | "domain": "mypets.ws", 1004 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1005 | }, 1006 | { 1007 | "domain": "myphotos.cc", 1008 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1009 | }, 1010 | { 1011 | "domain": "neat-url.com", 1012 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1013 | }, 1014 | { 1015 | "domain": "office-on-the.net", 1016 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1017 | }, 1018 | { 1019 | "domain": "on-the-web.tv", 1020 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1021 | }, 1022 | { 1023 | "domain": "podzone.net", 1024 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1025 | }, 1026 | { 1027 | "domain": "podzone.org", 1028 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1029 | }, 1030 | { 1031 | "domain": "readmyblog.org", 1032 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1033 | }, 1034 | { 1035 | "domain": "remotecam.nu", 1036 | "retrievedAt": "2024-02-18T17:56:25.580Z" 1037 | }, 1038 | { 1039 | "domain": "saves-the-whales.com", 1040 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1041 | }, 1042 | { 1043 | "domain": "scrapper-site.net", 1044 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1045 | }, 1046 | { 1047 | "domain": "scrapping.cc", 1048 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1049 | }, 1050 | { 1051 | "domain": "selfip.biz", 1052 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1053 | }, 1054 | { 1055 | "domain": "selfip.com", 1056 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1057 | }, 1058 | { 1059 | "domain": "selfip.info", 1060 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1061 | }, 1062 | { 1063 | "domain": "selfip.net", 1064 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1065 | }, 1066 | { 1067 | "domain": "selfip.org", 1068 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1069 | }, 1070 | { 1071 | "domain": "sells-for-less.com", 1072 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1073 | }, 1074 | { 1075 | "domain": "sells-for-u.com", 1076 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1077 | }, 1078 | { 1079 | "domain": "sells-it.net", 1080 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1081 | }, 1082 | { 1083 | "domain": "sellsyourhome.org", 1084 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1085 | }, 1086 | { 1087 | "domain": "servebbs.com", 1088 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1089 | }, 1090 | { 1091 | "domain": "servebbs.net", 1092 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1093 | }, 1094 | { 1095 | "domain": "servebbs.org", 1096 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1097 | }, 1098 | { 1099 | "domain": "serveftp.net", 1100 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1101 | }, 1102 | { 1103 | "domain": "serveftp.org", 1104 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1105 | }, 1106 | { 1107 | "domain": "servegame.org", 1108 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1109 | }, 1110 | { 1111 | "domain": "shacknet.biz", 1112 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1113 | }, 1114 | { 1115 | "domain": "shacknet.us", 1116 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1117 | }, 1118 | { 1119 | "domain": "shaqnet.nu", 1120 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1121 | }, 1122 | { 1123 | "domain": "simple-url.com", 1124 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1125 | }, 1126 | { 1127 | "domain": "space-to-rent.com", 1128 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1129 | }, 1130 | { 1131 | "domain": "stuff-4-sale.org", 1132 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1133 | }, 1134 | { 1135 | "domain": "stuff-4-sale.us", 1136 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1137 | }, 1138 | { 1139 | "domain": "teaches-yoga.com", 1140 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1141 | }, 1142 | { 1143 | "domain": "thruhere.net", 1144 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1145 | }, 1146 | { 1147 | "domain": "traeumtgerade.de", 1148 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1149 | }, 1150 | { 1151 | "domain": "webhop.biz", 1152 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1153 | }, 1154 | { 1155 | "domain": "webhop.info", 1156 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1157 | }, 1158 | { 1159 | "domain": "webhop.net", 1160 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1161 | }, 1162 | { 1163 | "domain": "webhop.org", 1164 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1165 | }, 1166 | { 1167 | "domain": "worse-than.tv", 1168 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1169 | }, 1170 | { 1171 | "domain": "writesthisblog.com", 1172 | "retrievedAt": "2024-02-18T17:56:25.581Z" 1173 | } 1174 | ] --------------------------------------------------------------------------------