It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://mylocation.site

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="utf-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6.    <title>IP Address Lookup - Check Location of Your Public IP | MyLocation.site</title>
  7.    <meta name="description" content="MyLocation.site provides free IP geolocation lookup to check the location of any IP address. Get accurate city, country, ISP and coordinates data instantly.">
  8.    <meta name="keywords" content="IP lookup, IP location, geolocation, IP tracker, my IP, IP address, mylocation.site">
  9.    
  10.    <!-- Open Graph / Social Media Meta Tags -->
  11.    <meta property="og:title" content="IP Address Lookup - Check Location of Your Public IP | MyLocation.site">
  12.    <meta property="og:description" content="Free IP geolocation lookup to check the location of any IP address. Get accurate city, country, ISP and coordinates data instantly.">
  13.    <meta property="og:url" content="https://mylocation.site/">
  14.    <meta property="og:type" content="website">
  15.    <meta property="og:image" content="https://mylocation.site/images/og-image.jpg">
  16.    <meta property="og:site_name" content="MyLocation.site">
  17.    
  18.    <!-- Twitter Card Meta Tags -->
  19.    <meta name="twitter:card" content="summary_large_image">
  20.    <meta name="twitter:title" content="IP Address Lookup - Check Location of Your Public IP | MyLocation.site">
  21.    <meta name="twitter:description" content="Free IP geolocation lookup to check the location of any IP address. Get accurate city, country, ISP and coordinates data instantly.">
  22.    <meta name="twitter:image" content="https://mylocation.site/images/og-image.jpg">
  23.    
  24.    <!-- Favicons -->
  25.    <link rel="icon" href="images/favicon/favicon-32x32.png" sizes="32x32">
  26.    <link rel="icon" href="images/favicon/favicon-64x64.png" sizes="64x64">
  27.    <link rel="apple-touch-icon" href="images/favicon/apple-touch-icon.png">
  28.    
  29.    <!-- Canonical URL -->
  30.    <link rel="canonical" href="https://mylocation.site/">
  31.    
  32.    <!-- Bootstrap CSS -->
  33.    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
  34.    
  35.    <!-- Font Awesome -->
  36.    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
  37.    
  38.    <!-- Google Fonts -->
  39.    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
  40.    
  41.    <!-- Custom CSS -->
  42.    <style>
  43.        :root {
  44.            --primary-color: #4a6bff;
  45.            --secondary-color: #2c3e50;
  46.            --accent-color: #00c9a7;
  47.            --light-bg: #f8f9fa;
  48.            --dark-text: #212529;
  49.        }
  50.        
  51.        body {
  52.            font-family: 'Poppins', sans-serif;
  53.            color: var(--dark-text);
  54.            background-color: #f5f7ff;
  55.            line-height: 1.6;
  56.        }
  57.        
  58.        .navbar {
  59.            background-color: white;
  60.            box-shadow: 0 2px 15px rgba(0,0,0,0.1);
  61.        }
  62.        
  63.        .navbar-brand img {
  64.            height: 40px;
  65.        }
  66.        
  67.        .nav-link {
  68.            color: var(--secondary-color);
  69.            font-weight: 500;
  70.            padding: 0.5rem 1rem;
  71.        }
  72.        
  73.        .nav-link:hover, .nav-link.active {
  74.            color: var(--primary-color);
  75.        }
  76.        
  77.        .btn-primary {
  78.            background-color: var(--primary-color);
  79.            border-color: var(--primary-color);
  80.            padding: 0.5rem 1.5rem;
  81.        }
  82.        
  83.        .btn-primary:hover {
  84.            background-color: #3a5ae8;
  85.            border-color: #3a5ae8;
  86.        }
  87.        
  88.        .hero-section {
  89.            background: linear-gradient(135deg, var(--primary-color) 0%, #6a5acd 100%);
  90.            color: white;
  91.            padding: 3rem 0;
  92.            border-radius: 0 0 20px 20px;
  93.            margin-bottom: 2rem;
  94.        }
  95.        
  96.        .search-box {
  97.            max-width: 800px;
  98.            margin: 0 auto;
  99.        }
  100.        
  101.        #ip_input {
  102.            border-radius: 8px 0 0 8px;
  103.            padding: 0.8rem 1rem;
  104.            border: 2px solid var(--primary-color);
  105.            border-right: none;
  106.        }
  107.        
  108.        #ip_input:focus {
  109.            box-shadow: none;
  110.            border-color: var(--primary-color);
  111.        }
  112.        
  113.        .btn-lookup {
  114.            border-radius: 0 8px 8px 0;
  115.            font-weight: 600;
  116.        }
  117.        
  118.        .info-card {
  119.            background-color: white;
  120.            border-radius: 12px;
  121.            box-shadow: 0 5px 20px rgba(0,0,0,0.05);
  122.            padding: 1.5rem;
  123.            margin-bottom: 1.5rem;
  124.            border: none;
  125.        }
  126.        
  127.        .info-card h3 {
  128.            color: var(--secondary-color);
  129.            font-weight: 600;
  130.            border-bottom: 2px solid var(--primary-color);
  131.            padding-bottom: 0.5rem;
  132.            margin-bottom: 1.5rem;
  133.        }
  134.        
  135.        .provider-badge {
  136.            background-color: var(--light-bg);
  137.            color: var(--secondary-color);
  138.            padding: 0.3rem 0.8rem;
  139.            border-radius: 20px;
  140.            font-size: 0.8rem;
  141.            font-weight: 500;
  142.            display: inline-block;
  143.        }
  144.        
  145.        .ip-detail {
  146.            margin-bottom: 1rem;
  147.        }
  148.        
  149.        .ip-detail i {
  150.            color: var(--primary-color);
  151.            width: 24px;
  152.            text-align: center;
  153.            margin-right: 0.5rem;
  154.        }
  155.        
  156.        .ip-detail span {
  157.            font-weight: 500;
  158.        }
  159.        
  160.        .map-container {
  161.            border-radius: 8px;
  162.            overflow: hidden;
  163.            margin-top: 1rem;
  164.        }
  165.        
  166.        .vpn-banner {
  167.            background-color: #fff8f8;
  168.            border-left: 4px solid #ff6b6b;
  169.            padding: 1rem;
  170.            border-radius: 0 8px 8px 0;
  171.            margin-top: 2rem;
  172.        }
  173.        
  174.        .feature-icon {
  175.            color: var(--primary-color);
  176.            font-size: 2rem;
  177.            margin-bottom: 1rem;
  178.        }
  179.        
  180.        .tool-card {
  181.            border: none;
  182.            border-radius: 10px;
  183.            box-shadow: 0 5px 15px rgba(0,0,0,0.05);
  184.            transition: all 0.3s ease;
  185.            margin-bottom: 1.5rem;
  186.            height: 100%;
  187.        }
  188.        
  189.        .tool-card:hover {
  190.            transform: translateY(-5px);
  191.            box-shadow: 0 10px 25px rgba(0,0,0,0.1);
  192.        }
  193.        
  194.        .tool-card .card-body {
  195.            padding: 1.5rem;
  196.        }
  197.        
  198.        footer {
  199.            background-color: var(--secondary-color);
  200.            color: white;
  201.            padding: 3rem 0 1rem;
  202.        }
  203.        
  204.        footer a {
  205.            color: #adb5bd;
  206.            text-decoration: none;
  207.        }
  208.        
  209.        footer a:hover {
  210.            color: white;
  211.        }
  212.        
  213.        .social-icons a {
  214.            color: white;
  215.            font-size: 1.25rem;
  216.            margin-right: 1rem;
  217.        }
  218.        
  219.        .copyright {
  220.            background-color: #1a252f;
  221.            padding: 1rem 0;
  222.            color: #adb5bd;
  223.        }
  224.        
  225.        @media (max-width: 768px) {
  226.            .hero-section {
  227.                padding: 2rem 0;
  228.            }
  229.            
  230.            #ip_input, .btn-lookup {
  231.                padding: 0.6rem;
  232.            }
  233.        }
  234.    </style>
  235.    
  236.    <!-- Google Analytics -->
  237.    <script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
  238.    <script>
  239.        window.dataLayer = window.dataLayer || [];
  240.        function gtag(){dataLayer.push(arguments);}
  241.        gtag('js', new Date());
  242.        gtag('config', 'G-XXXXXXXXXX');
  243.    </script>
  244. </head>
  245.  
  246. <body>
  247.    <!-- Navigation -->
  248.    <nav class="navbar navbar-expand-lg navbar-light sticky-top">
  249.        <div class="container">
  250.            <a class="navbar-brand" href="/">
  251.                <img src="images/logo.svg" alt="MyLocation.site">
  252.            </a>
  253.            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
  254.                <span class="navbar-toggler-icon"></span>
  255.            </button>
  256.            <div class="collapse navbar-collapse" id="navbarNav">
  257.                <ul class="navbar-nav me-auto">
  258.                    <li class="nav-item">
  259.                        <a class="nav-link active" href="/">Home</a>
  260.                    </li>
  261.                    <li class="nav-item">
  262.                        <a class="nav-link" href="/ip-tools">IP Tools</a>
  263.                    </li>
  264.                    <li class="nav-item">
  265.                        <a class="nav-link" href="/dns-tools">DNS Tools</a>
  266.                    </li>
  267.                    <li class="nav-item">
  268.                        <a class="nav-link" href="/developer-tools">Developer Tools</a>
  269.                    </li>
  270.                    <li class="nav-item">
  271.                        <a class="nav-link" href="/about">About</a>
  272.                    </li>
  273.                </ul>
  274.                <div class="d-flex">
  275.                    <a href="/api" class="btn btn-outline-primary me-2">API</a>
  276.                    <a href="/contact" class="btn btn-primary">Contact</a>
  277.                </div>
  278.            </div>
  279.        </div>
  280.    </nav>
  281.  
  282.    <!-- Hero Section -->
  283.    <section class="hero-section">
  284.        <div class="container text-center">
  285.            <h1 class="mb-3">IP Address Location Lookup</h1>
  286.            <p class="lead mb-4">Find the geographic location of any IP address with our free lookup tool</p>
  287.            
  288.            <div class="search-box">
  289.                <div class="input-group mb-3">
  290.                    <input type="text" id="ip_input" class="form-control form-control-lg"
  291.                           placeholder="Enter IP address or domain" aria-label="IP Address">
  292.                    <button class="btn btn-primary btn-lg btn-lookup" type="button" id="lookup_btn">
  293.                        <i class="fas fa-search me-2"></i> Lookup
  294.                    </button>
  295.                </div>
  296.                
  297.                <div class="d-flex justify-content-center">
  298.                    <div class="me-4">
  299.                        <small class="text-white-50">Your IPv4:</small>
  300.                        <div class="text-white" id="client_ip_4">Detecting...</div>
  301.                    </div>
  302.                    <div>
  303.                        <small class="text-white-50">Your IPv6:</small>
  304.                        <div class="text-white" id="client_ip_6">Detecting...</div>
  305.                    </div>
  306.                </div>
  307.            </div>
  308.        </div>
  309.    </section>
  310.  
  311.    <!-- Main Content -->
  312.    <main class="container my-5">
  313.        <div class="row">
  314.            <!-- Results Section -->
  315.            <div class="col-lg-8">
  316.                <div id="result_area">
  317.                    <!-- IP2Location Results -->
  318.                    <div class="info-card">
  319.                        <div class="d-flex justify-content-between align-items-center mb-3">
  320.                            <h3 class="mb-0">IP Location Details</h3>
  321.                            <span class="provider-badge">Powered by IP2Location</span>
  322.                        </div>
  323.                        
  324.                        <div class="row">
  325.                            <div class="col-md-6">
  326.                                <div class="ip-detail">
  327.                                    <i class="fas fa-network-wired"></i>
  328.                                    <strong>IP Address:</strong> <span class="ip">-</span>
  329.                                    <i class="fas fa-copy copy-icon ms-2" title="Copy"></i>
  330.                                </div>
  331.                                <div class="ip-detail">
  332.                                    <i class="fas fa-globe"></i>
  333.                                    <strong>Country:</strong> <span class="country_name">-</span>
  334.                                </div>
  335.                                <div class="ip-detail">
  336.                                    <i class="fas fa-flag"></i>
  337.                                    <strong>Country Code:</strong> <span class="countryCode">-</span>
  338.                                </div>
  339.                                <div class="ip-detail">
  340.                                    <i class="fas fa-map-marker-alt"></i>
  341.                                    <strong>State/Region:</strong> <span class="state_name">-</span>
  342.                                </div>
  343.                            </div>
  344.                            <div class="col-md-6">
  345.                                <div class="ip-detail">
  346.                                    <i class="fas fa-city"></i>
  347.                                    <strong>City:</strong> <span class="city_name">-</span>
  348.                                </div>
  349.                                <div class="ip-detail">
  350.                                    <i class="fas fa-mail-bulk"></i>
  351.                                    <strong>Postal Code:</strong> <span class="zipCode">-</span>
  352.                                </div>
  353.                                <div class="ip-detail">
  354.                                    <i class="fas fa-map-pin"></i>
  355.                                    <strong>Coordinates:</strong>
  356.                                    <span class="latitude">-</span>, <span class="longitude">-</span>
  357.                                </div>
  358.                                <div class="ip-detail">
  359.                                    <i class="fas fa-wifi"></i>
  360.                                    <strong>ISP:</strong> <span class="isp">-</span>
  361.                                </div>
  362.                            </div>
  363.                        </div>
  364.                        
  365.                        <a href="#" class="btn btn-outline-primary mt-3 show_map">
  366.                            <i class="fas fa-map-marked-alt me-2"></i> View on Map
  367.                        </a>
  368.                        
  369.                        <div class="map-container d-none" id="map_box_ip2location">
  370.                            <iframe class="w-100" height="300" frameborder="0" style="border:0" allowfullscreen></iframe>
  371.                        </div>
  372.                    </div>
  373.                    
  374.                    <!-- Additional provider sections would go here -->
  375.                    
  376.                    <!-- VPN Banner -->
  377.                    <div class="vpn-banner">
  378.                        <div class="d-flex align-items-center">
  379.                            <div class="flex-grow-1">
  380.                                <h5 class="mb-1">Your IP address exposes your location</h5>
  381.                                <p class="mb-0">Protect your privacy with a VPN service</p>
  382.                            </div>
  383.                            <a href="/best-vpn" class="btn btn-danger btn-sm">Learn More</a>
  384.                        </div>
  385.                    </div>
  386.                    
  387.                    <!-- Information Section -->
  388.                    <div class="info-card mt-4">
  389.                        <h3>About IP Location Lookup</h3>
  390.                        <p>When you visit any website, your device connects using its IP address - a unique identifier that can reveal your approximate geographic location. Our tool helps you understand what information is visible to websites you visit.</p>
  391.                        
  392.                        <div class="accordion mt-4" id="infoAccordion">
  393.                            <div class="accordion-item border-0 mb-2">
  394.                                <h2 class="accordion-header" id="headingOne">
  395.                                    <button class="accordion-button collapsed" type="button"
  396.                                            data-bs-toggle="collapse" data-bs-target="#collapseOne">
  397.                                        What is an IP address?
  398.                                    </button>
  399.                                </h2>
  400.                                <div id="collapseOne" class="accordion-collapse collapse"
  401.                                     aria-labelledby="headingOne" data-bs-parent="#infoAccordion">
  402.                                    <div class="accordion-body">
  403.                                        <p>An IP (Internet Protocol) address is a unique numerical identifier assigned to every device connected to a network. It serves two main functions:</p>
  404.                                        <ol>
  405.                                            <li>Network interface identification</li>
  406.                                            <li>Location addressing (providing approximate geographic location)</li>
  407.                                        </ol>
  408.                                        <p>There are two versions of IP addresses in use today: IPv4 (e.g., 192.168.1.1) and IPv6 (e.g., 2001:0db8:85a3::8a2e:0370:7334).</p>
  409.                                    </div>
  410.                                </div>
  411.                            </div>
  412.                            
  413.                            <div class="accordion-item border-0 mb-2">
  414.                                <h2 class="accordion-header" id="headingTwo">
  415.                                    <button class="accordion-button collapsed" type="button"
  416.                                            data-bs-toggle="collapse" data-bs-target="#collapseTwo">
  417.                                        How accurate is IP geolocation?
  418.                                    </button>
  419.                                </h2>
  420.                                <div id="collapseTwo" class="accordion-collapse collapse"
  421.                                     aria-labelledby="headingTwo" data-bs-parent="#infoAccordion">
  422.                                    <div class="accordion-body">
  423.                                        <p>IP geolocation accuracy varies depending on several factors:</p>
  424.                                        <ul>
  425.                                            <li><strong>ISP data:</strong> Some ISPs provide more precise location data than others</li>
  426.                                            <li><strong>Type of IP:</strong> Mobile IPs are typically less accurate than fixed broadband IPs</li>
  427.                                            <li><strong>Database quality:</strong> We use multiple commercial and open-source databases</li>
  428.                                        </ul>
  429.                                        <p>In most cases, IP geolocation can identify the city or region, but rarely the exact street address.</p>
  430.                                    </div>
  431.                                </div>
  432.                            </div>
  433.                            
  434.                            <div class="accordion-item border-0">
  435.                                <h2 class="accordion-header" id="headingThree">
  436.                                    <button class="accordion-button collapsed" type="button"
  437.                                            data-bs-toggle="collapse" data-bs-target="#collapseThree">
  438.                                        Can I hide my IP location?
  439.                                    </button>
  440.                                </h2>
  441.                                <div id="collapseThree" class="accordion-collapse collapse"
  442.                                     aria-labelledby="headingThree" data-bs-parent="#infoAccordion">
  443.                                    <div class="accordion-body">
  444.                                        <p>Yes, there are several ways to hide or change your apparent IP location:</p>
  445.                                        <ul>
  446.                                            <li><strong>VPN services:</strong> Route your traffic through servers in other locations</li>
  447.                                            <li><strong>Proxy servers:</strong> Similar to VPNs but typically less secure</li>
  448.                                            <li><strong>Tor network:</strong> Provides strong anonymity but slower speeds</li>
  449.                                        </ul>
  450.                                        <p>Each method has different trade-offs between privacy, speed, and convenience.</p>
  451.                                    </div>
  452.                                </div>
  453.                            </div>
  454.                        </div>
  455.                    </div>
  456.                </div>
  457.            </div>
  458.            
  459.            <!-- Sidebar -->
  460.            <div class="col-lg-4">
  461.                <div class="info-card">
  462.                    <h3 class="mb-3">Popular Tools</h3>
  463.                    <div class="row">
  464.                        <div class="col-md-6 col-lg-12 mb-3">
  465.                            <div class="tool-card">
  466.                                <div class="card-body text-center">
  467.                                    <div class="feature-icon">
  468.                                        <i class="fas fa-address-card"></i>
  469.                                    </div>
  470.                                    <h5 class="card-title">What Is My IP</h5>
  471.                                    <p class="card-text">Discover your public IP address and location</p>
  472.                                    <a href="/what-is-my-ip" class="btn btn-primary btn-sm">Try Tool</a>
  473.                                </div>
  474.                            </div>
  475.                        </div>
  476.                        
  477.                        <div class="col-md-6 col-lg-12 mb-3">
  478.                            <div class="tool-card">
  479.                                <div class="card-body text-center">
  480.                                    <div class="feature-icon">
  481.                                        <i class="fas fa-server"></i>
  482.                                    </div>
  483.                                    <h5 class="card-title">DNS Lookup</h5>
  484.                                    <p class="card-text">Check all DNS records for any domain</p>
  485.                                    <a href="/dns-lookup" class="btn btn-primary btn-sm">Try Tool</a>
  486.                                </div>
  487.                            </div>
  488.                        </div>
  489.                        
  490.                        <div class="col-md-6 col-lg-12 mb-3">
  491.                            <div class="tool-card">
  492.                                <div class="card-body text-center">
  493.                                    <div class="feature-icon">
  494.                                        <i class="fas fa-network-wired"></i>
  495.                                    </div>
  496.                                    <h5 class="card-title">Ping Test</h5>
  497.                                    <p class="card-text">Check connectivity to any host</p>
  498.                                    <a href="/ping" class="btn btn-primary btn-sm">Try Tool</a>
  499.                                </div>
  500.                            </div>
  501.                        </div>
  502.                        
  503.                        <div class="col-md-6 col-lg-12">
  504.                            <div class="tool-card">
  505.                                <div class="card-body text-center">
  506.                                    <div class="feature-icon">
  507.                                        <i class="fas fa-key"></i>
  508.                                    </div>
  509.                                    <h5 class="card-title">Password Generator</h5>
  510.                                    <p class="card-text">Create strong, secure passwords</p>
  511.                                    <a href="/password-generator" class="btn btn-primary btn-sm">Try Tool</a>
  512.                                </div>
  513.                            </div>
  514.                        </div>
  515.                    </div>
  516.                </div>
  517.                
  518.                <div class="info-card">
  519.                    <h3 class="mb-3">About MyLocation.site</h3>
  520.                    <p>MyLocation.site provides free network tools and IP geolocation services to developers, IT professionals, and curious users worldwide.</p>
  521.                    <p>Our mission is to make network information accessible and understandable to everyone.</p>
  522.                    <a href="/about" class="btn btn-outline-primary mt-2">Learn More</a>
  523.                </div>
  524.            </div>
  525.        </div>
  526.    </main>
  527.  
  528.    <!-- Footer -->
  529.    <footer>
  530.        <div class="container">
  531.            <div class="row">
  532.                <div class="col-lg-4 mb-4">
  533.                    <img src="images/logo-white.svg" alt="MyLocation.site" class="mb-3" height="40">
  534.                    <p>Free network tools and IP geolocation services for developers and IT professionals.</p>
  535.                    <div class="social-icons mt-3">
  536.                        <a href="#"><i class="fab fa-twitter"></i></a>
  537.                        <a href="#"><i class="fab fa-github"></i></a>
  538.                        <a href="#"><i class="fab fa-linkedin"></i></a>
  539.                    </div>
  540.                </div>
  541.                <div class="col-lg-2 col-md-4 mb-4">
  542.                    <h5 class="mb-3">IP Tools</h5>
  543.                    <ul class="list-unstyled">
  544.                        <li class="mb-2"><a href="/ip-lookup">IP Lookup</a></li>
  545.                        <li class="mb-2"><a href="/what-is-my-ip">What Is My IP</a></li>
  546.                        <li class="mb-2"><a href="/ip-whois">IP WHOIS</a></li>
  547.                        <li><a href="/ip-converter">IP Converter</a></li>
  548.                    </ul>
  549.                </div>
  550.                <div class="col-lg-2 col-md-4 mb-4">
  551.                    <h5 class="mb-3">DNS Tools</h5>
  552.                    <ul class="list-unstyled">
  553.                        <li class="mb-2"><a href="/dns-lookup">DNS Lookup</a></li>
  554.                        <li class="mb-2"><a href="/mx-lookup">MX Lookup</a></li>
  555.                        <li class="mb-2"><a href="/ns-lookup">NS Lookup</a></li>
  556.                        <li><a href="/dns-check">DNS Check</a></li>
  557.                    </ul>
  558.                </div>
  559.                <div class="col-lg-2 col-md-4 mb-4">
  560.                    <h5 class="mb-3">Security Tools</h5>
  561.                    <ul class="list-unstyled">
  562.                        <li class="mb-2"><a href="/password-generator">Password Generator</a></li>
  563.                        <li class="mb-2"><a href="/ip-blacklist">IP Blacklist Check</a></li>
  564.                        <li class="mb-2"><a href="/ssl-check">SSL Checker</a></li>
  565.                        <li><a href="/http-headers">HTTP Headers</a></li>
  566.                    </ul>
  567.                </div>
  568.                <div class="col-lg-2 mb-4">
  569.                    <h5 class="mb-3">Company</h5>
  570.                    <ul class="list-unstyled">
  571.                        <li class="mb-2"><a href="/about">About Us</a></li>
  572.                        <li class="mb-2"><a href="/contact">Contact</a></li>
  573.                        <li class="mb-2"><a href="/privacy">Privacy Policy</a></li>
  574.                        <li><a href="/terms">Terms of Service</a></li>
  575.                    </ul>
  576.                </div>
  577.            </div>
  578.            <hr class="my-4 bg-secondary">
  579.        </div>
  580.    </footer>
  581.    
  582.    <div class="copyright">
  583.        <div class="container text-center">
  584.            <p class="mb-0">&copy; 2022-2023 MyLocation.site. All rights reserved.</p>
  585.        </div>
  586.    </div>
  587.  
  588.    <!-- JavaScript -->
  589.    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
  590.    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  591.    
  592.    <script>
  593.        // API configuration
  594.        const API_CONFIG = {
  595.            ip2location: {
  596.                url: 'https://api.iplocation.net/?ip=',
  597.                fields: {
  598.                    ip: 'ip',
  599.                    country_name: 'country_name',
  600.                    countryCode: 'country_code2',
  601.                    state_name: 'state_prov',
  602.                    city_name: 'city',
  603.                    zipCode: 'zipcode',
  604.                    latitude: 'latitude',
  605.                    longitude: 'longitude',
  606.                    organization: 'organization',
  607.                    isp: 'isp'
  608.                }
  609.            },
  610.            ipinfo: {
  611.                url: 'https://ipinfo.io/',
  612.                token: '63630a5f55c83d', // Replace with your actual token
  613.                fields: {
  614.                    ip: 'ip',
  615.                    country_name: 'country',
  616.                    country: 'country',
  617.                    state_name: 'region',
  618.                    city_name: 'city',
  619.                    postal: 'postal',
  620.                    latitude: 'loc.split(",")[0]',
  621.                    longitude: 'loc.split(",")[1]',
  622.                    asn: 'asn',
  623.                    organization: 'org'
  624.                }
  625.            }
  626.        };
  627.        
  628.        // Detect client IP on page load
  629.        $(document).ready(function() {
  630.            // Get client IP using a free API
  631.            $.getJSON('https://api.ipify.org?format=json', function(data) {
  632.                $('#client_ip_4').text(data.ip || 'Not Detected');
  633.                $('#ip_input').val(data.ip);
  634.                lookupIP(data.ip);
  635.            }).fail(function() {
  636.                $('#client_ip_4').text('Not Detected');
  637.            });
  638.            
  639.            // Check for IPv6 support
  640.            if (window.hasOwnProperty('RTCPeerConnection')) {
  641.                $('#client_ip_6').text('Checking...');
  642.                // This is a complex check that would need proper implementation
  643.                // For now, we'll just show "Not Detected"
  644.                setTimeout(() => {
  645.                    $('#client_ip_6').text('Not Detected');
  646.                }, 1000);
  647.            } else {
  648.                $('#client_ip_6').text('Not Supported');
  649.            }
  650.            
  651.            // Form submission handler
  652.            $('#lookup_btn').click(function(e) {
  653.                e.preventDefault();
  654.                const ip = $('#ip_input').val().trim();
  655.                if (ip) {
  656.                    lookupIP(ip);
  657.                }
  658.            });
  659.            
  660.            // Copy to clipboard functionality
  661.            $(document).on('click', '.copy-icon', function() {
  662.                const text = $(this).prev().text();
  663.                navigator.clipboard.writeText(text);
  664.                $(this).attr('title', 'Copied!').tooltip('show');
  665.                setTimeout(() => {
  666.                    $(this).attr('title', 'Copy').tooltip('hide');
  667.                }, 2000);
  668.            });
  669.            
  670.            // Show map functionality
  671.            $(document).on('click', '.show_map', function(e) {
  672.                e.preventDefault();
  673.                const container = $(this).next('.map-container');
  674.                container.toggleClass('d-none');
  675.                
  676.                if (!container.hasClass('d-none')) {
  677.                    const lat = container.closest('.info-card').find('.latitude').text();
  678.                    const lng = container.closest('.info-card').find('.longitude').text();
  679.                    
  680.                    if (lat && lng && lat !== '-' && lng !== '-') {
  681.                        container.find('iframe').attr('src',
  682.                            `https://maps.google.com/maps?q=${lat},${lng}&z=14&output=embed`);
  683.                    }
  684.                }
  685.            });
  686.        });
  687.        
  688.        // Function to lookup IP information
  689.        function lookupIP(ip) {
  690.            // Show loading state
  691.            $('.ip-detail span').not('.copy-icon').html('<span class="spinner-border spinner-border-sm text-primary"></span>');
  692.            
  693.            // Call IP2Location API
  694.            $.getJSON(`${API_CONFIG.ip2location.url}${ip}`, function(data) {
  695.                updateFields('ip2location', data);
  696.            }).fail(function() {
  697.                showError('ip2location');
  698.            });
  699.            
  700.            // Call IPInfo API (if token is provided)
  701.            if (API_CONFIG.ipinfo.token) {
  702.                $.getJSON(`${API_CONFIG.ipinfo.url}${ip}?token=${API_CONFIG.ipinfo.token}`, function(data) {
  703.                    updateFields('ipinfo', data);
  704.                }).fail(function() {
  705.                    showError('ipinfo');
  706.                });
  707.            }
  708.        }
  709.        
  710.        // Update fields with API data
  711.        function updateFields(provider, data) {
  712.            const config = API_CONFIG[provider];
  713.            if (!config) return;
  714.            
  715.            for (const [field, path] of Object.entries(config.fields)) {
  716.                let value = data;
  717.                
  718.                // Handle nested paths and special cases
  719.                if (path.includes('.')) {
  720.                    const parts = path.split('.');
  721.                    value = data[parts[0]];
  722.                    for (let i = 1; i < parts.length; i++) {
  723.                        if (value) value = value[parts[i]];
  724.                    }
  725.                } else if (path.includes('split')) {
  726.                    // Special handling for location which comes as "lat,lng"
  727.                    try {
  728.                        value = eval(`data.${path}`);
  729.                    } catch (e) {
  730.                        value = '-';
  731.                    }
  732.                } else {
  733.                    value = data[path];
  734.                }
  735.                
  736.                // Update the field if value exists
  737.                if (value !== undefined && value !== null && value !== '') {
  738.                    $(`.${field}`).text(value);
  739.                } else {
  740.                    $(`.${field}`).text('-');
  741.                }
  742.            }
  743.        }
  744.        
  745.        // Show error for a provider
  746.        function showError(provider) {
  747.            $(`.${provider} span`).not('.copy-icon').text('Error loading data');
  748.        }
  749.    </script>
  750. </body>
  751. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda