{"id":2970,"date":"2025-09-06T05:16:18","date_gmt":"2025-09-06T05:16:18","guid":{"rendered":"https:\/\/garyhengeveld.com\/wordpress\/?p=2970"},"modified":"2026-03-05T15:22:32","modified_gmt":"2026-03-05T15:22:32","slug":"browser-diagnostic-check","status":"publish","type":"post","link":"https:\/\/garyhengeveld.com\/wordpress\/browser-diagnostic-check\/","title":{"rendered":"Browser Diagnostic Check"},"content":{"rendered":"\n<!DOCTYPE html>\n<html>\n<head>\n  <title>Browser Diagnostic Check<\/title>\n  <style>\n    body {\n      font-family: sans-serif;\n      background: #fff;\n      color: #000;\n      padding: 20px;\n    }\n    h1 {\n      color: #003366;\n      border-bottom: 2px solid #003366;\n      padding-bottom: 5px;\n    }\n    h2 {\n      color: #0055aa;\n      margin-top: 30px;\n    }\n    input, select {\n      margin: 5px;\n      padding: 5px;\n      width: 120px;\n      border: 1px solid #ccc;\n      border-radius: 4px;\n    }\n    button {\n      margin: 10px;\n      padding: 6px 12px;\n      background-color: #0055aa;\n      color: #fff;\n      border: none;\n      border-radius: 4px;\n      cursor: pointer;\n    }\n    button:hover {\n      background-color: #003366;\n    }\n    .calc {\n      margin-bottom: 30px;\n      border-bottom: 1px solid #ccc;\n      padding-bottom: 20px;\n    }\n    label {\n      display: inline-block;\n      width: 220px;\n    }\n    .result {\n      margin-top: 10px;\n      color: #aa0000;\n      font-weight: bold;\n    }\n  <\/style>\n\n<\/head>\n<body>\n  <h1>Browser Diagnostic Check<\/h1>\n  <ul id=\"results\"><\/ul>\n\n  <script>\n    const results = document.getElementById('results');\n\n    function log(status, message) {\n      const li = document.createElement('li');\n      li.className = status;\n      li.textContent = message;\n      results.appendChild(li);\n    }\n\n    \/\/ JavaScript enabled\n    log('ok', 'JavaScript: Enabled');\n\n    \/\/ Cookies\n    document.cookie = \"testcookie=1\";\n    if (document.cookie.includes(\"testcookie\")) {\n      log('ok', 'Cookies: Enabled');\n    } else {\n      log('fail', 'Cookies: Disabled or blocked');\n    }\n\n    \/\/ localStorage\n    try {\n      localStorage.setItem(\"test\", \"1\");\n      log('ok', 'localStorage: Available');\n    } catch {\n      log('fail', 'localStorage: Unavailable');\n    }\n\n    \/\/ sessionStorage\n    try {\n      sessionStorage.setItem(\"test\", \"1\");\n      log('ok', 'sessionStorage: Available');\n    } catch {\n      log('fail', 'sessionStorage: Unavailable');\n    }\n\n    \/\/ WebRTC\n    if (typeof RTCPeerConnection !== \"undefined\") {\n      log('ok', 'WebRTC: Supported');\n    } else {\n      log('warn', 'WebRTC: Not supported');\n    }\n\n    \/\/ WebGL\n    const canvas = document.createElement('canvas');\n    const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n    if (gl) {\n      log('ok', 'WebGL: Supported');\n    } else {\n      log('warn', 'WebGL: Not supported');\n    }\n\n    \/\/ Geolocation\n    if (\"geolocation\" in navigator) {\n      log('ok', 'Geolocation API: Available');\n    } else {\n      log('warn', 'Geolocation API: Not available');\n    }\n\n    \/\/ User Agent\n    const ua = navigator.userAgent;\n    log('ok', `User Agent: ${ua}`);\n\n    \/\/ Do Not Track\n    const dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;\n    if (dnt === \"1\") {\n      log('ok', 'Do Not Track: Enabled');\n    } else {\n      log('warn', 'Do Not Track: Disabled or not respected');\n    }\n\n    \/\/ Permissions API\n    if (navigator.permissions) {\n      log('ok', 'Permissions API: Available');\n    } else {\n      log('warn', 'Permissions API: Not available');\n    }\n\n    \/\/ WebDriver detection\n    if (navigator.webdriver) {\n      log('fail', 'WebDriver: Detected (possible automation)');\n    } else {\n      log('ok', 'WebDriver: Not detected');\n    }\n  <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Browser Diagnostic Check Browser Diagnostic Check<\/p>\n","protected":false},"author":1,"featured_media":2975,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,106],"tags":[],"class_list":["post-2970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-software"],"_links":{"self":[{"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/posts\/2970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2970"}],"version-history":[{"count":2,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/posts\/2970\/revisions"}],"predecessor-version":[{"id":2972,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/posts\/2970\/revisions\/2972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/media\/2975"}],"wp:attachment":[{"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/garyhengeveld.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}