जवाबों:
मैं एक वेब सेवा का उपयोग करूंगा जो JSON (चीजों को सरल बनाने के लिए jQuery के साथ) वापस कर सकती है। नीचे सभी मुफ्त सक्रिय आईपी लुकअप सेवाएँ हैं जो मुझे मिल सकते हैं और वे जो जानकारी वापस करते हैं। यदि आप किसी भी अधिक के बारे में जानते हैं, तो कृपया एक टिप्पणी जोड़ें और मैं इस उत्तर को अपडेट करूंगा।
इसे आज़माएँ: https://www.cloudflare.com/cdn-cgi/trace
// If your site is on Cloudflare, then you can use '/cdn-cgi/trace' instead
$.get('https://www.cloudflare.com/cdn-cgi/trace', function(data) {
console.log(data)
})
यह दिखाता है:
fl=4f422
h=www.cloudflare.com
ip=54.193.27.106
ts=1575967108.245
visit_scheme=https
uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36 Hypothesis-Via
colo=SJC
http=http/1.1
loc=US
tls=TLSv1.3
sni=plaintext
warp=off
सीमाएं:
इसे आज़माएं: http://api.db-ip.com/addrinfo?api_key= < अपनी एपीआई कुंजी > और addr = < ip पता >
यह दिखाता है:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
सीमाएं:
इसे आज़माएं: http://gd.geobytes.com/GetCityDetails
$.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"geobytesforwarderfor": "",
"geobytesremoteip": "116.12.250.1",
"geobytesipaddress": "116.12.250.1",
"geobytescertainty": "99",
"geobytesinternet": "SA",
"geobytescountry": "Saudi Arabia",
"geobytesregionlocationcode": "SASH",
"geobytesregion": "Ash Sharqiyah",
"geobytescode": "SH",
"geobyteslocationcode": "SASHJUBA",
"geobytescity": "Jubail",
"geobytescityid": "13793",
"geobytesfqcn": "Jubail, SH, Saudi Arabia",
"geobyteslatitude": "27.004999",
"geobyteslongitude": "49.660999",
"geobytescapital": "Riyadh ",
"geobytestimezone": "+03:00",
"geobytesnationalitysingular": "Saudi Arabian ",
"geobytespopulation": "22757092",
"geobytesnationalityplural": "Saudis",
"geobytesmapreference": "Middle East ",
"geobytescurrency": "Saudi Riyal",
"geobytescurrencycode": "SAR",
"geobytestitle": "Saudi Arabia"
}
सीमाएं:
इसे आज़माएं: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"isp": "SGPOST",
"org": "Singapore Post Ltd",
"hostname": "116.12.250.1",
"longitude": "103.807",
"latitude": "1.29209",
"postal_code": "",
"city": "Singapore",
"country_code": "SG",
"country_name": "Singapore",
"continent_code": "AS",
"region": "Central Singapore",
"district": "",
"timezone_name": "Asia\/Singapore",
"connection_type": "",
"asn": "AS3758 SingNet",
"currency_code": "SGD",
"currency_name": "Singapore Dollar",
"success": true
}
सीमाएं:
इसे आज़माएँ: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"geoplugin_request": "116.12.250.1",
"geoplugin_status": 200,
"geoplugin_credit": "Some of the returned data includes GeoLite data created by MaxMind, available from <a href=\\'http://www.maxmind.com\\'>http://www.maxmind.com</a>.",
"geoplugin_city": "Singapore",
"geoplugin_region": "Singapore (general)",
"geoplugin_areaCode": "0",
"geoplugin_dmaCode": "0",
"geoplugin_countryCode": "SG",
"geoplugin_countryName": "Singapore",
"geoplugin_continentCode": "AS",
"geoplugin_latitude": "1.2931",
"geoplugin_longitude": "103.855797",
"geoplugin_regionCode": "00",
"geoplugin_regionName": "Singapore (general)",
"geoplugin_currencyCode": "SGD",
"geoplugin_currencySymbol": "$",
"geoplugin_currencySymbol_UTF8": "$",
"geoplugin_currencyConverter": 1.4239
}
सीमाएं:
इसे आज़माएँ: https://api.hackertarget.com/geoip/?q= < ip एड्रेस >
यह दिखाता है:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
सीमाएं:
इसे आज़माएं: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"country": "SG",
"country_name": "Singapore",
"postal": null,
"latitude": 1.2855,
"longitude": 103.8565,
"timezone": "Asia/Singapore"
}
सीमाएं:
इसे आज़माएं: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"as": "AS3758 SingNet",
"city": "Singapore",
"country": "Singapore",
"countryCode": "SG",
"isp": "SingNet Pte Ltd",
"lat": 1.2931,
"lon": 103.8558,
"org": "Singapore Telecommunications",
"query": "116.12.250.1",
"region": "01",
"regionName": "Central Singapore Community Development Council",
"status": "success",
"timezone": "Asia/Singapore",
"zip": ""
}
सीमाएं:
इसे आज़माएं: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"region_code": "01",
"country_name": "Singapore",
"country_code": "SG",
"continent_name": "Asia",
"continent_code": "AS",
"latitude": 1.2931,
"longitude": 103.8558,
"asn": "AS3758",
"organisation": "SingNet",
"postal": "",
"calling_code": "65",
"flag": "https://ipdata.co/flags/sg.png",
"emoji_flag": "\ud83c\uddf8\ud83c\uddec",
"emoji_unicode": "U+1F1F8 U+1F1EC",
"is_eu": false,
"languages": [
{
"name": "English",
"native": "English"
},
{
"name": "Malay",
"native": "Bahasa Melayu"
},
{
"name": "Tamil",
"native": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
},
{
"name": "Chinese",
"native": "\u4e2d\u6587"
}
],
"currency": {
"name": "Singapore Dollar",
"code": "SGD",
"symbol": "S$",
"native": "$",
"plural": "Singapore dollars"
},
"time_zone": {
"name": "Asia/Singapore",
"abbr": "+08",
"offset": "+0800",
"is_dst": false,
"current_time": "2018-05-09T12:28:49.183674+08:00"
},
"threat": {
"is_tor": false,
"is_proxy": false,
"is_anonymous": false,
"is_known_attacker": false,
"is_known_abuser": false,
"is_threat": false,
"is_bogon": false
}
}
सीमाएं:
इसे आज़माएं: https://ipfind.co/me?auth= < your api key >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip_address": "116.12.250.1",
"country": "Singapore",
"country_code": "SG",
"continent": "Asia",
"continent_code": "AS",
"city": "Singapore",
"county": null,
"region": "Central Singapore",
"region_code": "01",
"timezone": "Asia/Singapore",
"owner": null,
"longitude": 103.8565,
"latitude": 1.2855,
"currency": "SGD",
"languages": [
"cmn",
"en-SG",
"ms-SG",
"ta-SG",
"zh-SG"
]
}
सीमाएं:
इसे आज़माएं: https://api.ipgeolocation.io/ipgeo?apiKey= < your api key >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"continent_code": "AS",
"continent_name": "Asia",
"country_code2": "SG",
"country_code3": "SGP",
"country_name": "Singapore",
"country_capital": "Singapore",
"state_prov": "Central Singapore",
"district": "",
"city": "Singapore",
"zipcode": "",
"latitude": "1.29209",
"longitude": "103.807",
"is_eu": false,
"calling_code": "+65",
"country_tld": ".sg",
"languages": "cmn,en-SG,ms-SG,ta-SG,zh-SG",
"country_flag": "https://ipgeolocation.io/static/flags/sg_64.png",
"isp": "SGPOST",
"connection_type": "",
"organization": "Singapore Post Ltd",
"geoname_id": "1880252",
"currency": {
"name": "Dollar",
"code": "SGD"
},
"time_zone": {
"name": "Asia/Singapore",
"offset": 8,
"is_dst": false,
"current_time": "2018-06-12 09:06:49.028+0800"
}
}
सीमाएं:
इसे आज़माएँ: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1"
}
सीमाएं:
इसे आज़माएं: https://api.ipinfodb.com/v3/ip-city/?key= < your api key > & format = json
$.getJSON('https://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&format=json&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"statusCode": "OK",
"statusMessage": "",
"ipAddress": "116.12.250.1",
"countryCode": "SG",
"countryName": "Singapore",
"regionName": "Singapore",
"cityName": "Singapore",
"zipCode": "048941",
"latitude": "1.28967",
"longitude": "103.85",
"timeZone": "+08:00"
}
सीमाएं:
इसे आज़माएं: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"hostname": "No Hostname",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"country": "SG",
"loc": "1.2931,103.8558",
"org": "AS3758 SingNet"
}
सीमाएं:
इसे आज़माएं: https://api.ipregistry.co/?key= < your api key >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip" : "116.12.250.1",
"type" : "IPv4",
"hostname" : null,
"carrier" : {
"name" : null,
"mcc" : null,
"mnc" : null
},
"connection" : {
"asn" : 3758,
"domain" : "singnet.com.sg",
"organization" : "SingNet Pte Ltd",
"type" : "isp"
},
"currency" : {
"code" : "SGD",
"name" : "Singapore Dollar",
"plural" : "Singapore dollars",
"symbol" : "SGD",
"symbol_native" : "SGD",
"format" : {
"negative" : {
"prefix" : "-SGD",
"suffix" : ""
},
"positive" : {
"prefix" : "SGD",
"suffix" : ""
}
}
},
"location" : {
"continent" : {
"code" : "AS",
"name" : "Asia"
},
"country" : {
"area" : 692.0,
"borders" : [ ],
"calling_code" : "65",
"capital" : "Singapore",
"code" : "SG",
"name" : "Singapore",
"population" : 5638676,
"population_density" : 8148.38,
"flag" : {
"emoji" : "🇸🇬",
"emoji_unicode" : "U+1F1F8 U+1F1EC",
"emojitwo" : "https://cdn.ipregistry.co/flags/emojitwo/sg.svg",
"noto" : "https://cdn.ipregistry.co/flags/noto/sg.png",
"twemoji" : "https://cdn.ipregistry.co/flags/twemoji/sg.svg",
"wikimedia" : "https://cdn.ipregistry.co/flags/wikimedia/sg.svg"
},
"languages" : [ {
"code" : "cmn",
"name" : "cmn",
"native" : "cmn"
}, {
"code" : "en",
"name" : "English",
"native" : "English"
}, {
"code" : "ms",
"name" : "Malay",
"native" : "Melayu"
}, {
"code" : "ta",
"name" : "Tamil",
"native" : "தமிழ்"
}, {
"code" : "zh",
"name" : "Chinese",
"native" : "中文"
} ],
"tld" : ".sg"
},
"region" : {
"code" : null,
"name" : "Singapore"
},
"city" : "Singapore",
"postal" : "96534",
"latitude" : 1.28967,
"longitude" : 103.85007,
"language" : {
"code" : "cmn",
"name" : "cmn",
"native" : "cmn"
},
"in_eu" : false
},
"security" : {
"is_bogon" : false,
"is_cloud_provider" : false,
"is_tor" : false,
"is_tor_exit" : false,
"is_proxy" : false,
"is_anonymous" : false,
"is_abuser" : false,
"is_attacker" : false,
"is_threat" : false
},
"time_zone" : {
"id" : "Asia/Singapore",
"abbreviation" : "SGT",
"current_time" : "2019-09-29T23:13:32+08:00",
"name" : "Singapore Standard Time",
"offset" : 28800,
"in_daylight_saving" : false
}
}
सीमाएं:
इसे आज़माएं: http://api.ipstack.com/ < ip address >? Access_key = <your api key>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"type": "ipv4",
"continent_code": "AS",
"continent_name": "Asia",
"country_code": "SG",
"country_name": "Singapore",
"region_code": "01",
"region_name": "Central Singapore Community Development Council",
"city": "Singapore",
"zip": null,
"latitude": 1.2931,
"longitude": 103.8558,
"location": {
"geoname_id": 1880252,
"capital": "Singapore",
"languages": [{
"code": "en",
"name": "English",
"native": "English"
},
{
"code": "ms",
"name": "Malay",
"native": "Bahasa Melayu"
},
{
"code": "ta",
"name": "Tamil",
"native": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
},
{
"code": "zh",
"name": "Chinese",
"native": "\u4e2d\u6587"
}],
"country_flag": "http:\/\/assets.ipstack.com\/flags\/sg.svg",
"country_flag_emoji": "\ud83c\uddf8\ud83c\uddec",
"country_flag_emoji_unicode": "U+1F1F8 U+1F1EC",
"calling_code": "65",
"is_eu": false
}
}
सीमाएं:
इसे आज़माएं: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1",
"about": "https://jsonip.com/about",
"Pro!": "http://getjsonip.com",
"Get Notifications": "https://jsonip.com/notify"
}
सीमाएं:
इसे आज़माएं: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"ip": "116.12.250.1"
}
सीमाएं:
इसे आज़माएं: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
यह दिखाता है:
{
"city": "Singapore",
"country": {
"name": "Singapore",
"code": "SG"
},
"location": {
"accuracy_radius": 50,
"latitude": 1.2855,
"longitude": 103.8565,
"time_zone": "Asia/Singapore"
},
"ip": "116.12.250.1"
}
सीमाएं:
ध्यान रखें कि चूंकि ये सभी नि: शुल्क सेवाएं हैं, इसलिए आपका माइलेज कोटा और अपटाइम से अधिक होने के मामले में अलग-अलग हो सकता है, और कौन जानता है कि कब / यदि उन्हें सड़क से नीचे ले जाया जाएगा (प्रदर्शन A: Telize )। इन सेवाओं में से अधिकांश एक भुगतान स्तरीय प्रदान करते हैं, यदि आप एसएसएल समर्थन जैसी अधिक सुविधाएँ चाहते हैं।
इसके अलावा, जैसा कि नीचे दिए गए टिप्पणियों में उल्लेख किया गया है, अनुरोध कोटा अधिकांशतः शैक्षणिक है क्योंकि यह क्लाइंट-साइड हो रहा है और अधिकांश अंतिम उपयोगकर्ता कभी भी कोटा से अधिक नहीं होंगे।
अद्यतन
अंतिम अद्यतन
यह समाधान अधिक समय तक काम नहीं करेगा क्योंकि ब्राउज़र वेबब्रक लीक को ठीक कर रहे हैं: उस पर अधिक जानकारी के लिए इस अन्य प्रश्न को पढ़ें: RTCIceCandidate अब वापस आने वाला IP नहीं
अद्यतन : मैं हमेशा कोड का एक छोटा / छोटा संस्करण बनाना चाहता था, इसलिए यहाँ एक ES6 वादा कोड है:
var findIP = new Promise(r=>{var w=window,a=new (w.RTCPeerConnection||w.mozRTCPeerConnection||w.webkitRTCPeerConnection)({iceServers:[]}),b=()=>{};a.createDataChannel("");a.createOffer(c=>a.setLocalDescription(c,b,b),b);a.onicecandidate=c=>{try{c.candidate.candidate.match(/([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g).forEach(r)}catch(e){}}})
/*Usage example*/
findIP.then(ip => document.write('your ip: ', ip)).catch(e => console.error(e))
नोट: यदि आप उपयोगकर्ता के सभी IP (जो उसके नेटवर्क के आधार पर अधिक हो सकते हैं) चाहते हैं, तो मूल कोड का उपयोग करने पर यह नया छोटा कोड केवल एकल IP लौटाएगा ...
WebRTC के लिए धन्यवाद , WebRTC समर्थित ब्राउज़रों में स्थानीय आईपी प्राप्त करना बहुत आसान है (कम से कम अभी के लिए)। मैंने स्रोत कोड को संशोधित किया है, लाइनों को कम कर दिया है, कोई स्टन अनुरोध नहीं बना रहा है क्योंकि आप केवल स्थानीय आईपी चाहते हैं, सार्वजनिक आईपी नहीं, नीचे दिया गया कोड नवीनतम फ़ायरफ़ॉक्स और क्रोम में काम करता है, बस स्निपेट चलाएं और अपने आप को जांचें:
function findIP(onNewIP) { // onNewIp - your listener function for new IPs
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
var pc = new myPeerConnection({iceServers: []}),
noop = function() {},
localIPs = {},
ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
key;
function ipIterate(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(function(sdp) {
sdp.sdp.split('\n').forEach(function(line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(ipIterate);
});
pc.setLocalDescription(sdp, noop, noop);
}, noop); // create offer and set local description
pc.onicecandidate = function(ice) { //listen for candidate events
if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
};
}
var ul = document.createElement('ul');
ul.textContent = 'Your IPs are: '
document.body.appendChild(ul);
function addIP(ip) {
console.log('got ip: ', ip);
var li = document.createElement('li');
li.textContent = ip;
ul.appendChild(li);
}
findIP(addIP);
<h1> Demo retrieving Client IP using WebRTC </h1>
यहाँ क्या हो रहा है, हम एक डमी सहकर्मी कनेक्शन बना रहे हैं, और दूरस्थ सहकर्मी हमसे संपर्क करने के लिए, हम आम तौर पर एक दूसरे के साथ बर्फ उम्मीदवारों का आदान-प्रदान करते हैं। और बर्फ के उम्मीदवारों को पढ़ना (स्थानीय सत्र विवरण और onIceCandidateEvent से) हम उपयोगकर्ता के आईपी को बता सकते हैं।
जहाँ से मैंने कोड लिया -> स्रोत
आप इसे JSONP के साथ सर्वर साइड के माध्यम से रिले कर सकते हैं
और एक को खोजने के लिए जाते समय, एसओ पर यहां पाया कि क्या मैं क्लाइंट-साइड जावास्क्रिप्ट का उपयोग करके डीएनएस लुकअप (होस्टनाम से आईपी एड्रेस) कर सकता हूं?
<script type="application/javascript">
function getip(json){
alert(json.ip); // alerts the ip address
}
</script>
<script type="application/javascript" src="http://www.telize.com/jsonip?callback=getip"></script>
नोट: telize.com API 15 नवंबर, 2015 तक स्थायी रूप से बंद हो गया ।
Error Over Quota This application is temporarily over its serving quota. Please try again later.
अधिकांश उत्तर यहां "काम करते हैं" के आसपास सर्वर-साइड कोड की आवश्यकता है ... किसी और के सर्वर को मारना। जो एक पूरी तरह से मान्य तकनीक है, जब तक कि आपको वास्तव में सर्वर से टकराने के बिना आईपी पता प्राप्त करने की आवश्यकता नहीं है।
परंपरागत रूप से यह किसी प्रकार के प्लगइन के बिना संभव नहीं था (और फिर भी, यदि आप NAT राउटर के पीछे थे , तो शायद आपको गलत आईपी पता मिलेगा ), लेकिन वेबआरटीसी के आगमन के साथ वास्तव में ऐसा करना संभव है। । यदि आप उन ब्राउज़रों को लक्षित कर रहे हैं जो WebRTC (वर्तमान में: फ़ायरफ़ॉक्स, क्रोम और ओपेरा) का समर्थन करते हैं।
वेबआरटीसी का उपयोग करके आप उपयोगी ग्राहक आईपी पते कैसे प्राप्त कर सकते हैं, इस पर विवरण के लिए कृपया मिडो का उत्तर पढ़ें ।
आप hostj.info या इसी तरह की सेवा के लिए एक अजाक्स कॉल कर सकते हैं ...
function myIP() {
if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
xmlhttp.send();
hostipInfo = xmlhttp.responseText.split("\n");
for (i=0; hostipInfo.length >= i; i++) {
ipAddress = hostipInfo[i].split(":");
if ( ipAddress[0] == "IP" ) return ipAddress[1];
}
return false;
}
एक बोनस के रूप में, एक ही कॉल में जियोलोकेशन जानकारी वापस आ जाती है।
इसे इस्तेमाल करे
$.get("http://ipinfo.io", function(response) {
alert(response.ip);
}, "jsonp");
या
$(document).ready(function () {
$.getJSON("http://jsonip.com/?callback=?", function (data) {
console.log(data);
alert(data.ip);
});
});
आप नहीं कर सकते। आपको एक सर्वर से पूछना होगा।
चेक आउट http://www.ipify.org/
उनके अनुसार:
- आप इसे बिना सीमा के उपयोग कर सकते हैं (भले ही आप प्रति मिनट लाखों अनुरोध कर रहे हों)।
- ipify पूरी तरह से ओपन सोर्स है ( GitHub रिपॉजिटरी देखें )।
यहां एक काम करने वाला JS उदाहरण है (यह सोचकर कि इस उत्तर के पास इतने कम वोट क्यों हैं, इसे स्वयं कार्रवाई में देखने के लिए प्रयास करें):
<script>
function getIP(json) {
alert("My public IP address is: " + json.ip);
}
</script>
<script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
कॉपी / पेस्ट करने के लिए बहुत आलसी? मुझें यह पसंद है। यहाँ एक 💻 डेमो है
बहुत आलसी क्लिक करने के लिए? :O
नोट : डेमो चलाने से पहले Adblock Plus / uBlock & co को बंद कर दें .. अन्यथा, यह सिर्फ काम नहीं करेगा।
मुझे IPify टीम से कोई लेना- देना नहीं है। मुझे लगता है कि यह हास्यास्पद है कि कोई व्यक्ति इस तरह की सेवा प्रदान करेगा।
आप मेरी सेवा का उपयोग कर सकते हैं http://ipinfo.io का , जो आपको क्लाइंट आईपी, होस्टनाम, जियोलोकेशन की जानकारी और नेटवर्क का मालिक देगा। यहाँ एक सरल उदाहरण है जो IP को लॉग करता है:
$.get("http://ipinfo.io", function(response) {
console.log(response.ip);
}, "jsonp");
यहाँ एक अधिक विस्तृत JSFiddle उदाहरण है जो पूर्ण प्रतिक्रिया की जानकारी को प्रिंट करता है, इसलिए आप सभी उपलब्ध विवरण देख सकते हैं: http://jsfiddle.net/zK5FN/2/
http://ipinfo.io
करने के लिए //ipinfo.io
या https
इस कोड को अपने पेज में शामिल करें: <script type="text/javascript" src="http://l2.io/ip.js"></script>
यहाँ अधिक डॉक्टर
मैं कहूंगा कि चाड और माल्टा का शानदार जवाब है। हालांकि, उनके जटिल हैं। इसलिए मैं इस कोड का सुझाव देता हूं जो मुझे देश प्लगइन द्वारा विज्ञापनों से मिला
<script>
<script language="javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script language="javascript">
mmjsCountryCode = geoip_country_code();
mmjsCountryName = geoip_country_name();
</script>
कोई अजाक्स नहीं। बस सादा javascripts। : डी
यदि आप http://j.maxmind.com/app/geoip.js पर जाते हैं, तो आप देखेंगे कि इसमें शामिल है
function geoip_country_code() { return 'ID'; }
function geoip_country_name() { return 'Indonesia'; }
function geoip_city() { return 'Jakarta'; }
function geoip_region() { return '04'; }
function geoip_region_name() { return 'Jakarta Raya'; }
function geoip_latitude() { return '-6.1744'; }
function geoip_longitude() { return '106.8294'; }
function geoip_postal_code() { return ''; }
function geoip_area_code() { return ''; }
function geoip_metro_code() { return ''; }
यह वास्तव में इस सवाल का जवाब नहीं देता क्योंकि अभी तक
http://j.maxmind.com/app/geoip.js में आईपी शामिल नहीं है (हालांकि मुझे यकीन है कि यह देश को प्राप्त करने के लिए आईपी का उपयोग करता है)।
लेकिन एक PhP स्क्रिप्ट बनाना इतना आसान है जो कुछ इस तरह से पॉप करता है
function visitorsIP() { return '123.123.123.123'; }
वह बनाना। पर डाल http://yourdomain.com/yourip.php ।
फिर करो
<script language="javascript" src="http://yourdomain.com/yourip.php"></script>
प्रश्न विशेष रूप से थर्ड पार्टी स्क्रिप्ट का उपयोग नहीं करने का उल्लेख करता है। और कोई रास्ता नहीं है। जावास्क्रिप्ट आपके आईपी को नहीं जान सकता। लेकिन अन्य सर्वर जिन्हें जावास्क्रिप्ट के माध्यम से एक्सेस किया जा सकता है जो बिना किसी समस्या के साथ ही काम कर सकते हैं।
इस प्रश्न की दो व्याख्याएँ हैं। अधिकांश लोगों ने पब्लिक आईपी एड्रेस का मतलब "क्लाइंट आईपी" समझा, जो वेब सर्वर के लैन के बाहर और इंटरनेट पर दिखता है। यह ज्यादातर मामलों में क्लाइंट कंप्यूटर का IP पता नहीं है
मुझे उस कंप्यूटर के वास्तविक आईपी पते की आवश्यकता थी जो उस ब्राउज़र को चला रहा है जो मेरे जावास्क्रिप्ट सॉफ़्टवेयर की मेजबानी कर रहा है (जो लगभग हमेशा एक लैन पर स्थानीय आईपी पता है जो कि NAT परत के पीछे कुछ है)।
Mido ने एक FANTASTIC उत्तर पोस्ट किया, जो कि एकमात्र ऐसा उत्तर प्रतीत होता है जो वास्तव में क्लाइंट का IP पता प्रदान करता है।
उस के लिए धन्यवाद, Mido!
हालांकि, फ़ंक्शन ने अतुल्यकालिक रूप से रन बनाए। मुझे अपने कोड में वास्तव में आईपी पते का उपयोग करने की आवश्यकता है, और एक अतुल्यकालिक समाधान के साथ, मैं आईपी पते का उपयोग करने से पहले इसे पुनर्प्राप्त / सीखने / संग्रहीत करने का प्रयास कर सकता हूं। मुझे उपयोग करने से पहले आने वाले परिणामों पर प्रतीक्षा करने में सक्षम होना चाहिए।
यहां मिडो के फंक्शन का "वेटिटेबल" वर्जन है। मुझे आशा है कि यह किसी और की मदद करता है:
function findIP(onNewIP) { // onNewIp - your listener function for new IPs
var promise = new Promise(function (resolve, reject) {
try {
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
var pc = new myPeerConnection({ iceServers: [] }),
noop = function () { },
localIPs = {},
ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
key;
function ipIterate(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(function (sdp) {
sdp.sdp.split('\n').forEach(function (line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(ipIterate);
});
pc.setLocalDescription(sdp, noop, noop);
}, noop); // create offer and set local description
pc.onicecandidate = function (ice) { //listen for candidate events
if (ice && ice.candidate && ice.candidate.candidate && ice.candidate.candidate.match(ipRegex)) {
ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
}
resolve("FindIPsDone");
return;
};
}
catch (ex) {
reject(Error(ex));
}
});// New Promise(...{ ... });
return promise;
};
//This is the callback that gets run for each IP address found
function foundNewIP(ip) {
if (typeof window.ipAddress === 'undefined')
{
window.ipAddress = ip;
}
else
{
window.ipAddress += " - " + ip;
}
}
//This is How to use the Waitable findIP function, and react to the
//results arriving
var ipWaitObject = findIP(foundNewIP); // Puts found IP(s) in window.ipAddress
ipWaitObject.then(
function (result) {
alert ("IP(s) Found. Result: '" + result + "'. You can use them now: " + window.ipAddress)
},
function (err) {
alert ("IP(s) NOT Found. FAILED! " + err)
}
);
<h1>Demo "Waitable" Client IP Retrieval using WebRTC </h1>
एक आसान और मुफ्त तरीका है जो आपके आगंतुक को किसी भी अनुमति के लिए नहीं कहेगा।
इसमें http://freegeoip.net/json के लिए एक बहुत ही सरल अजाक्स पोस्ट अनुरोध प्रस्तुत करना शामिल है । एक बार जब आप अपनी स्थान की जानकारी प्राप्त कर लेते हैं, तो JSON में, आप पृष्ठ को अपडेट करके या किसी नए पर पुनर्निर्देशित करके तदनुसार प्रतिक्रिया करते हैं।
यहां बताया गया है कि आप स्थान की जानकारी के लिए अपना अनुरोध कैसे प्रस्तुत करते हैं:
jQuery.ajax( {
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
console.log(location)
}
} );
ठीक है, मैं सवाल से पचा रहा हूं, लेकिन मुझे आज भी इसी तरह की आवश्यकता थी और हालांकि मुझे जावास्क्रिप्ट का उपयोग करने वाले क्लाइंट से आईडी नहीं मिल सका, मैंने निम्नलिखित काम किया।
सर्वर की ओर: -
<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
जावास्क्रिप्ट का उपयोग करना
var ip = $get("uip").innerHTML;
मैं ASP.Net Ajax का उपयोग कर रहा हूं, लेकिन आप $ get के बदले getElementById का उपयोग कर सकते हैं ()।
क्या हो रहा है, मुझे पृष्ठ पर उपयोगकर्ता के आईपी सर्वर के साथ प्रदान किया गया एक छिपा हुआ दिव्य तत्व मिला है। जावास्क्रिप्ट में से मैं सिर्फ उस मूल्य को लोड करता हूं।
यह कुछ लोगों के लिए आपकी तरह एक समान आवश्यकता के साथ सहायक हो सकता है (मुझे पसंद है जबकि मेरे पास यह पता नहीं था)।
चीयर्स!
<script>var uip='<%= Request.UserHostAddress %>';</script>
?
DataIP.net भू-आईपी एपीआई का उपयोग करने के साथ । उदाहरण के लिए, jQuery का उपयोग करके:
$(document).ready( function() {
$.getJSON( "http://smart-ip.net/geoip-json?callback=?",
function(data){
alert( data.host);
}
);
});
सामान्य रूप से संभव नहीं है जब तक कि आप किसी प्रकार की बाहरी सेवा का उपयोग न करें।
अपने आईपी को jQuery के साथ प्राप्त करें
आप JS की एक पंक्ति के साथ अपना सार्वजनिक IP पता प्राप्त कर सकते हैं? एक निशुल्क सेवा है जो आपके लिए यह पेशकश करती है और एक अनुरोध प्राप्त होता है जो आपको करने की आवश्यकता है:
$.get('http://jsonip.com/', function(r){ console.log(r.ip); });
काम करने के लिए उपरोक्त स्निपेट के लिए, आपके ब्राउज़र को CORS (क्रॉस-मूल अनुरोध साझाकरण) का समर्थन करना होगा। अन्यथा एक सुरक्षा अपवाद को फेंक दिया जाएगा। पुराने ब्राउज़रों में, आप इस संस्करण का उपयोग कर सकते हैं, जो JSON-P अनुरोध का उपयोग करता है:
$.getJSON('http://jsonip.com/?callback=?', function(r){ console.log(r.ip); });
आप userinfo.io जावास्क्रिप्ट लाइब्रेरी का उपयोग कर सकते हैं ।
<script type="text/javascript" src="userinfo.0.0.1.min.js"></script>
UserInfo.getInfo(function(data) {
alert(data.ip_address);
}, function(err) {
// Do something with the error
});
स्क्रिप्ट को लोड करने के लिए आप आवश्यकता के अनुसार भी उपयोग कर सकते हैं।
यह आपको आपके आगंतुक का आईपी पता, साथ ही इसके स्थान (देश, शहर, आदि) के कुछ डेटा देगा। यह मैक्समाइंड जियोइप डेटाबेस पर आधारित है।
डिस्क्लेमर: मैंने यह लाइब्रेरी लिखी है
जावास्क्रिप्ट / jQuery के ग्राहक के आईपी पते और स्थान (देश, शहर)
आपको केवल सर्वर पर "src" लिंक के साथ एक टैग एम्बेड करने की आवश्यकता है। सर्वर ऑब्जेक्ट / JSON के रूप में "codehelper_ip" लौटाएगा, और आप इसे तुरंत उपयोग कर सकते हैं।
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?js"></script>
// You can use it
<script language="Javascript">
alert(codehelper_ip.IP);
alert(codehelper_ip.Country);
</script>
पर अधिक जानकारी जावास्क्रिप्ट असली आईपी पता प्लस देश का पता लगाएं
यदि आप जेकरी का उपयोग कर रहे हैं, तो आप कोशिश कर सकते हैं:
console.log(codehelper_ip);
यह आपको लौटी हुई वस्तु के बारे में अधिक जानकारी दिखाएगा।
यदि आप कॉलबैक फ़ंक्शन चाहते हैं, तो कृपया यह प्रयास करें:
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?callback=yourcallback"></script>
// You can use it
<script language="Javascript">
function yourcallback(json) {
alert(json.IP);
}
</script>
Appspot.com कॉलबैक की सेवा उपलब्ध नहीं है। ipinfo.io काम करने लगता है।
मैंने एक अतिरिक्त कदम उठाया और AngularJS का उपयोग करके सभी भू जानकारी को पुनः प्राप्त किया। (रिकार्डो के लिए धन्यवाद) इसे देखें।
<div ng-controller="geoCtrl">
<p ng-bind="ip"></p>
<p ng-bind="hostname"></p>
<p ng-bind="loc"></p>
<p ng-bind="org"></p>
<p ng-bind="city"></p>
<p ng-bind="region"></p>
<p ng-bind="country"></p>
<p ng-bind="phone"></p>
</div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular-route.min.js"></script>
<script>
'use strict';
var geo = angular.module('geo', [])
.controller('geoCtrl', ['$scope', '$http', function($scope, $http) {
$http.jsonp('http://ipinfo.io/?callback=JSON_CALLBACK')
.success(function(data) {
$scope.ip = data.ip;
$scope.hostname = data.hostname;
$scope.loc = data.loc; //Latitude and Longitude
$scope.org = data.org; //organization
$scope.city = data.city;
$scope.region = data.region; //state
$scope.country = data.country;
$scope.phone = data.phone; //city area code
});
}]);
</script>
यहाँ कार्य पृष्ठ: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
मुझे वास्तव में पसंद है api.ipify.org
क्योंकि यह HTTP और HTTPS दोनों का समर्थन करता है।
यहां api.ipify.org
jQuery का उपयोग करके आईपी प्राप्त करने के कुछ उदाहरण दिए गए हैं ।
https://api.ipify.org?format=json
$.getJSON("https://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
http://api.ipify.org?format=json
$.getJSON("http://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
यदि आप इसे JSON में नहीं चाहते हैं तो HTTPS पर एक स्पष्ट प्रतिक्रिया भी है
https://api.ipify.org
और HTTP पर सादा जवाब भी है
http://api.ipify.org
Ipdata.co का उपयोग करें ।
एपीआई जियोलोकेशन डेटा भी प्रदान करता है और इसमें 10 वैश्विक एंडपॉइंट होते हैं, जिनमें से प्रत्येक एक दिन में 800M अनुरोधों को संभालने में सक्षम होता है!
यह उत्तर एक 'परीक्षण' एपीआई कुंजी का उपयोग करता है जो बहुत सीमित है और केवल कुछ कॉल के परीक्षण के लिए है। अपनी खुद की फ्री एपीआई कुंजी के लिए साइन अप करें और विकास के लिए प्रतिदिन 1500 अनुरोध प्राप्त करें।
$.get("https://api.ipdata.co?api-key=test", function (response) {
$("#response").html(response.ip);
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="response"></pre>
क्लाइंट कंप्यूटर का IP पता प्राप्त करने का कोई विश्वसनीय तरीका नहीं है।
यह कुछ संभावनाओं से गुजरता है। यदि उपयोगकर्ता के कई इंटरफेस हैं, तो जावा का उपयोग करने वाला कोड टूट जाएगा।
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
यहां अन्य उत्तरों को देखने से ऐसा लगता है कि आप ग्राहक के सार्वजनिक आईपी पते को प्राप्त करना चाहते हैं, जो संभवतः राउटर का पता है जो वे इंटरनेट से कनेक्ट करने के लिए उपयोग कर रहे हैं। यहाँ बहुत सारे अन्य उत्तर उस बारे में बात करते हैं। मैं अनुरोध प्राप्त करने और किसी और की सेवा के आधार पर IP पते के साथ प्रतिक्रिया देने और अपना काम करने के लिए अपने स्वयं के सर्वर साइड पेज को बनाने और होस्ट करने की सलाह दूंगा जो काम करना जारी रख सकता है या नहीं कर सकता है।
मैं एक ऐसी विधि की पेशकश करने जा रहा हूं, जिसका उपयोग मैं तब करता हूं जब मैं html पृष्ठ में जानकारी संग्रहीत करना चाहता हूं, और चाहता हूं कि मेरी जावास्क्रिप्ट को जानकारी को पढ़ने के बिना वास्तव में जावास्क्रिप्ट को पैरामीटर पारित करना होगा। यह विशेष रूप से उपयोगी है जब आपकी स्क्रिप्ट बाह्य रूप से संदर्भित होती है, बजाय इनलाइन के।
यह "कोई सर्वर साइड स्क्रिप्ट" की कसौटी पर खरा नहीं उतरता है। लेकिन अगर आप अपने html में सर्वर साइड स्क्रिप्टिंग शामिल कर सकते हैं, तो यह करें:
अपने html पृष्ठ के निचले भाग पर, छिपे हुए बॉडी टैग के ठीक ऊपर छिपे हुए लेबल तत्व बनाएं।
आपका लेबल इस तरह दिखेगा:
<label id="ip" class="hiddenlabel"><?php echo $_SERVER['REMOTE_ADDR']; ?></label>
एक वर्ग को बुलाया जाना सुनिश्चित करें hiddenlabel
और सेट करें visibility:hidden
ताकि कोई भी वास्तव में लेबल को न देखे। आप इस तरह से बहुत सारी चीजों को स्टोर कर सकते हैं, छिपे हुए लेबल में।
अब, आपकी जावास्क्रिप्ट में, लेबल में संग्रहीत जानकारी को पुनः प्राप्त करने के लिए (इस मामले में ग्राहक का आईपी पता), आप यह कर सकते हैं:
var ip = document.getElementById("ip").innerHTML;
अब आपका चर "आईपी" आईपी पते के बराबर है। अब आप अपने एपीआई अनुरोध के लिए आईपी पास कर सकते हैं।
* संपादित करें 2 साल पहले * दो मामूली शोधन:
मैं नियमित रूप से इस पद्धति का उपयोग करता हूं, लेकिन लेबल को कॉल करता हूं class="data"
, क्योंकि वास्तव में, यह डेटा संग्रहीत करने का एक तरीका है। क्लास का नाम "हिडेलबेल" एक बेवकूफ नाम है।
दूसरा संशोधन इसके बजाय, स्टाइल शीट में है visibility:hidden
:
.data{
display:none;
}
... इसे करने का बेहतर तरीका है।
$.getJSON("http://jsonip.com?callback=?", function (data) {
alert("Your ip address: " + data.ip);
});
इसे आज़माएं: http://httpbin.org/ip (या https://httpbin.org/ip )
Https के साथ उदाहरण:
$.getJSON('https://httpbin.org/ip', function(data) {
console.log(data['origin']);
});
स्रोत: http://httpbin.org/
सबसे पहले वास्तविक उत्तर : अपने स्वयं के आईपी पते का पता लगाने के लिए विशुद्ध रूप से क्लाइंट-साइड निष्पादित कोड का उपयोग करना संभव नहीं है।
हालाँकि आप केवल https://api.muctool.de/whois की ओर एक GET कर सकते हैं और ग्राहक का आईपी पता प्राप्त करने के लिए कुछ प्राप्त कर सकते हैं
{
"ip": "88.217.152.15",
"city": "Munich",
"isp": "M-net Telekommunikations GmbH",
"country": "Germany",
"countryIso": "DE",
"postalCode": "80469",
"subdivisionIso": "BY",
"timeZone": "Europe/Berlin",
"cityGeonameId": 2867714,
"countryGeonameId": 2921044,
"subdivisionGeonameId": 2951839,
"ispId": 8767,
"latitude": 48.1299,
"longitude": 11.5732,
"fingerprint": "61c5880ee234d66bded68be14c0f44236f024cc12efb6db56e4031795f5dc4c4",
"session": "69c2c032a88fcd5e9d02d0dd6a5080e27d5aafc374a06e51a86fec101508dfd3",
"fraud": 0.024,
"tor": false
}
आप इसे पूरी तरह से क्लाइंट साइड और ज्यादातर जावास्क्रिप्ट में फ्लैश ऑब्जेक्ट का उपयोग करके कर सकते हैं जिसे जेएस कॉल कर सकते हैं। फ्लैश कर सकते हैं जो बहुत उपयोगी नहीं हो सकता है स्थानीय मशीन का IP पता का उपयोग।
var call_to = "http://smart-ip.net/geoip-json?callback=?";
$.getJSON(call_to, function(data){
alert(data.host);
});
data.host
आईपी एड्रेस है। बस इसे अपने ब्राउज़र से कॉल करें।
http://smart-ip.net/geoip-json?callback=?
[बिना उद्धरण] और आईपी प्राप्त करें।
$.getJSON('//freegeoip.net/json/?callback=?', function(data) { if (!data || !data.ip) alert('IP not found'); }).fail(function() { alert('$.getJSON() request failed'); });