[
  {
    "title": "Surfshark IP checker",
    "url": "https://surfshark.com/what-is-my-ip",
    "role": "Measured primary page",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "NordVPN IP checker",
    "url": "https://nordvpn.com/what-is-my-ip/",
    "role": "Measured primary page; challenges retained",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "ExpressVPN IP checker",
    "url": "https://www.expressvpn.com/what-is-my-ip",
    "role": "Measured primary page",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "Proton IP scanner",
    "url": "https://protonvpn.com/what-is-my-ip-address",
    "role": "Measured primary page; unresolved fields retained",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "Mullvad connection check",
    "url": "https://mullvad.net/en/check",
    "role": "Measured primary page and expanded WebRTC panels",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "IVPN homepage",
    "url": "https://www.ivpn.net/en/",
    "role": "Measured homepage connection-status header, not a standalone IP scanner",
    "accessedLocalDate": "2026-10-14",
    "method": "In-app browser"
  },
  {
    "title": "NordVPN explains its website status",
    "url": "https://support.nordvpn.com/hc/en-us/articles/20282075701777-Why-is-my-status-Unprotected-in-the-NordVPN-website",
    "role": "Provider explanation: status refers to connection to its own servers",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval; saved browser evidence still defines measurements"
  },
  {
    "title": "Proton manual WireGuard on Linux",
    "url": "https://protonvpn.com/support/wireguard-linux",
    "role": "Documents NetworkManager connections and distinction from native app",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval"
  },
  {
    "title": "Proton IP-change verification",
    "url": "https://protonvpn.com/support/vpn-ip-change",
    "role": "Provider guidance to compare public IP before and after connecting; its cookie-clear step was not performed in this returning-profile study",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval"
  },
  {
    "title": "Mullvad connection-check announcement",
    "url": "https://mullvad.net/uk/blog/2020/8/20/check-out-our-new-connection-check",
    "role": "Documents connection check and public JSON API; older historical source",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval"
  },
  {
    "title": "ipify public IP API",
    "url": "https://www.ipify.org/",
    "role": "Documents independent IPv4 and universal public-IP echoes",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval; endpoints queried with Python urllib"
  },
  {
    "title": "Mullvad DNS-leak guide",
    "url": "https://mullvad.net/en/help/dns-leaks",
    "role": "Provider-specific DNS-test scope; no independent DNS conclusion drawn",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval"
  },
  {
    "title": "Mullvad WebRTC guide",
    "url": "https://mullvad.net/en/help/webrtc",
    "role": "Provider guidance to examine listed public addresses; contextual source",
    "accessedLocalDate": "2026-10-14",
    "method": "Web retrieval"
  }
]