Getting Client IP Address in ASP.NET using JavaScript
So, it all started with a requirement for my website when I needed to get the client's IP address for some security purposes. It felt like an easy task in the beginning but after some time, I realized that most of the available methods of getting an IP address return the Server's IP Address and not the local IP address of the client. And, there are some APIs which return your Public IP address but again, none of them returns the local IP address. So, we will see how we can achieve that.
Using JavaScript
In JavaScript, you can use the following script for getting the IP address.
- < script >
- var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
- if (RTCPeerConnection)(function() {
- var rtc = new RTCPeerConnection({
- iceServers: []
- });
- if (1 || window.mozRTCPeerConnection) {
- rtc.createDataChannel('', {
- reliable: false
- });
- };
- rtc.onicecandidate = function(evt) {
- if (evt.candidate) grepSDP("a=" + evt.candidate.candidate);
- };
- rtc.createOffer(function(offerDesc) {
- grepSDP(offerDesc.sdp);
- rtc.setLocalDescription(offerDesc);
- }, function(e) {
- console.warn("offer failed", e);
- });
- var addrs = Object.create(null);
- addrs["0.0.0.0"] = false;
- function updateDisplay(newAddr) {
- if (newAddr in addrs) return;
- else addrs[newAddr] = true;
- var displayAddrs = Object.keys(addrs).filter(function(k) {
- return addrs[k];
- });
- document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
- }
- function grepSDP(sdp) {
- var hosts = [];
- sdp.split('\r\n').forEach(function(line) {
- if (~line.indexOf("a=candidate")) {
- var parts = line.split(' '),
- addr = parts[4],
- type = parts[7];
- if (type === 'host') updateDisplay(addr);
- } else if (~line.indexOf("c=")) {
- var parts = line.split(' '),
- addr = parts[2];
- updateDisplay(addr);
- }
- });
- }
- })();
- else {
- document.getElementById('list').innerHTML = "<code>ifconfig| grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";
- document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";
- } < /script>
Just paste this script in your JavaScript code and add this element into your body tag.
- <body>
- <div id="list"></div>
- </body>
Getting Public IP address
There are two types of IP addresses - Local and Public. The above script is for getting the Client or Local IP Address but for getting the Public IP Address, you can use this script.
- function getIP(json) {
- document.write("My public IP address is: ", json.ip);
- }
- <script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
This will return your Public IP Address.
No comments:
Post a Comment