webrtc-ips

Get local IP address via WebRTC in the browser environment

Usage no npm install needed!

<script type="module">
  import webrtcIps from 'https://cdn.skypack.dev/webrtc-ips';
</script>

README

WebRTC IPs

Build Status npm license

A library to detect your local IP address via WebRTC on the web page.

Security notes

All modern browsers now require special flags to allow leaking local IP address.

Chrome:

Set enable-webrtc-hide-local-ips-with-mdns to disabled on chrome://flags page.

Or run chrome with arguments: --flag-switches-begin --disable-features=WebRtcHideLocalIpsWithMdns --flag-switches-end

Firefox:

Set media.peerconnection.ice.obfuscate_host_addresses to false on about:config page.

Safari:

Set Disable ICE Candidate Restrictions in Developer menu.

Screenshot

image

Live demo

https://vitalets.github.io/webrtc-ips/demo/

Please ensure that you enabled browser flags from previous section

Installation

npm i webrtc-ips

Usage

import {getIPs, getIPv4, getIPv6} from 'webrtc-ips';

const ips = await getIPs();
// => [{address: '95.108.174.12', v6: false}, {address: '2a02:6b8::408:5830:47a6:d045:a9ac', v6: true}]

// You can pass in your custom stun server urls
const ips = await getIPs({ urls: "stun:stun.stunprotocol.org:3478" });
// => [{address: '95.108.174.12', v6: false}, {address: '2a02:6b8::408:5830:47a6:d045:a9ac', v6: true}]

const ipv4 = await getIPv4();
// => '95.108.174.12'

const ipv6 = await getIPv6();
// => '2a02:6b8::408:5830:47a6:d045:a9ac'

Credits

This is a fork of original diafygi/webrtc-ips project with refactored source code, added tests and published to npm.

Related links

License

MIT