Nodejs lấy vị trí từ ip

Triển khai NodeJS gốc của API GeoIP của MaxMind -- hoạt động ở nút 0. 6. 3 trở lên, hỏi tôi về các phiên bản khác

Nút. js - cho https. //ipapi. co (API định vị địa chỉ IP). Tra cứu thông tin địa chỉ IP bằng Javascript/NodeJS

Show

một nút. js để truy xuất địa chỉ IP của yêu cầu trên máy chủ

Dịch vụ web Maxmind GeoIP2 cho nút. js

Tìm dữ liệu định vị địa lý từ địa chỉ IP (e. g. thành phố, quốc gia, múi giờ) sử dụng IPLocate. API io

Hệ thống lọc kết nối dựa trên địa chỉ IP trọng lượng nhẹ

🛰️ Mô-đun NodeJS để định vị địa lý của khách truy cập theo IP

API định vị địa lý của Google Maps cho nút. js (không chính thức)

Trình đọc cơ sở dữ liệu Maxmind GeoIP2 để định vị địa chỉ IP

Nodejs lấy vị trí từ ip

Nhận địa chỉ IP của khách hàng bằng cách sử dụng yêu cầu. tiêu đề

Nếu yêu cầu được thực hiện phía sau máy chủ proxy, địa chỉ IP mà bạn nhận được từ đối tượng ổ cắm có thể không phải là địa chỉ IP của máy khách ban đầu. Thay vào đó, nó sẽ là địa chỉ IP cuối cùng trong chuỗi được chuyển tiếp. Để lấy địa chỉ IP gốc của máy khách và các địa chỉ proxy khác, bạn cần xem tiêu đề của đối tượng yêu cầu

Bất kỳ yêu cầu nào được gửi trên web đều chứa thuộc tính tiêu đề HTTP với thông tin meta về yêu cầu. Đối tượng tiêu đề yêu cầu chứa các trường xử lý xác thực, cho máy chủ biết yêu cầu có loại nội dung nào (ví dụ: JSON so với nhiều phần) và cũng cho máy chủ biết thông tin về máy khách mà yêu cầu được gửi từ đâu

Tiêu đề xử lý thông tin địa chỉ IP là trường chuyển tiếp x. Có một số cách mà trường này có thể được đặt tên theo yêu cầu. Nó có thể hiển thị dưới dạng x-forwarded, x-forwarded-for, forwarded-for hoặc just forwarded

Thông thường, cách tốt nhất để truy cập trường là sử dụng x được chuyển tiếp cho

Trong tệp máy chủ của bạn, hãy xóa mọi thứ bên trong ứng dụng. nhận yêu cầu và thay thế nó bằng giải pháp sau



const express = require('express');
const app = express();
  
app.get('/',function(req, res) {
  
    const ipAddresses = req.header('x-forwarded-for');
    res.send(ipAddresses);
  
});
  
app.listen(3000, () => console.log(`Server is listening on port 3000`))

Xin lưu ý rằng x-forwarded-for có thể trả về nhiều địa chỉ IP, ở định dạng “IP máy khách, IP proxy 1, IP proxy 2. ” Trong trường hợp này, chúng tôi chỉ quan tâm đến cái đầu tiên

Giải pháp này chỉ hoạt động nếu yêu cầu của máy khách đến từ máy chủ proxy và đã được chuyển tiếp. Bạn không nên coi đây là giải pháp duy nhất vì nếu yêu cầu không đến từ máy chủ proxy, thì x được chuyển tiếp cho trường sẽ không được xác định. Giữ yêu cầu. giải pháp ổ cắm như một dự phòng



const express = require('express');
const app = express();
  
app.get('/',function(req, response) {
  
  const ipAddress = req.header('x-forwarded-for') ||  			
						req.socket.remoteAddress;
  res.send(ipAddress);
  
});
  
app.listen(3000, () => console.log(`Server is listening on port 3000`))

Nhận địa chỉ IP của khách hàng bằng cách sử dụng Request-IP

Bạn có thể cài đặt gói NPM có tên request-ip để tra cứu địa chỉ IP của máy khách trong Node. js. Gói này là phần mềm trung gian nằm giữa yêu cầu đến và phần còn lại của ứng dụng của bạn

Phần mềm trung gian sửa đổi đối tượng yêu cầu hoặc thực hiện một số chức năng tác dụng phụ bằng cách sử dụng đối tượng yêu cầu, sau đó gửi đối tượng theo liên kết tiếp theo trong chuỗi phần mềm trung gian hoặc đến chính ứng dụng

Bắt đầu bằng cách cài đặt gói bằng dòng lệnh



$ npm install --save ip-request

Sau đó, nhập gói vào tệp máy chủ của bạn và thay thế giải pháp hiện có của bạn bằng hàm getClientIP của gói



const express = require('express')
const app = express()
const port = 3000
const requestIP = require('request-ip');

app.get('/', (req, res) => {
    const ipAddress = requestIP.getClientIp(req);
    res.send(ipAddress)
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

Quay trở lại https. //máy chủ cục bộ. 3000 để kiểm tra địa chỉ IP của bạn trong trình duyệt (hãy nhớ, nếu bạn đang sử dụng IPv6, bạn sẽ thấy. 1 và nếu bạn đang sử dụng IPv4, bạn sẽ thấy 127. 0. 0. 1. )

Nhận địa chỉ IP bằng IP

Trong cả hai ví dụ này, chúng tôi đã hiển thị địa chỉ IP cục bộ vì đó là nơi bắt nguồn yêu cầu. Nhưng nếu chúng tôi muốn lấy địa chỉ IP cục bộ của thiết bị trong khi thiết bị đang được sản xuất và chúng tôi không thực hiện yêu cầu lặp lại thì sao?

Trong trường hợp đó, chúng ta có thể sử dụng gói NPM tiện dụng có tên là ip. Gói này hoạt động tương tự như request-ip. Nó cho phép bạn truy cập địa chỉ IP cục bộ của mình và cũng cung cấp nhiều phương pháp hữu ích để xác thực địa chỉ IP, so sánh địa chỉ IP và thao tác địa chỉ IP

Cài đặt nó theo cách tương tự



$ npm install ip --save

Nhập nó vào tệp của bạn và sử dụng nó trong ứng dụng của bạn. nhận chức năng



const express = require('express')
const app = express()
const port = 3000
const IP = require('ip');

app.get('/', (req, res) => {
    const ipAddress = IP.address();
    res.send(ipAddress)
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

Truy cập trình duyệt để xem địa chỉ IP máy khách của bạn. Lưu ý cách nó không còn là địa chỉ loopback. Đây là địa chỉ IP máy khách thực tế trên mạng hiện tại. Nó rất có thể sẽ là 192. 168. XXX. địa chỉ X

Nodejs lấy vị trí từ ip

Tìm vị trí của người dùng bằng cách sử dụng API định vị địa lý IP của AbstractAPI

Khi bạn có địa chỉ IP của khách hàng, bạn có thể sử dụng địa chỉ IP đó để xác định vị trí địa lý của người dùng

AbstractAPI là API REST đơn giản chấp nhận yêu cầu bằng chuỗi IP và trả về phản hồi JSON với thông tin về địa chỉ IP đó

Khi chúng tôi đã trích xuất địa chỉ IP yêu cầu của mình từ yêu cầu HTTP đến, chúng tôi có thể gửi nó đến điểm cuối AbstractAPI để nhận thông tin định vị địa lý

Nhận khóa API

Trước tiên, bạn sẽ cần lấy khóa API bằng cách truy cập trang chủ API định vị địa lý của AbstractAPI, nhấp vào "Bắt đầu" và đăng ký tài khoản miễn phí. Khi bạn truy cập trang chủ API, bạn sẽ thấy khóa API của mình

Cài đặt Axios

Cách dễ nhất để gửi yêu cầu HTTP trong Node là cài đặt axios, ứng dụng khách yêu cầu HTTP của bên thứ ba



$ npm install axios --save

Gửi IP yêu cầu tới API

Tạo một chức năng mới gọi là sendAPIRequest. Hàm sẽ lấy một chuỗi địa chỉ IP làm đối số duy nhất của nó. Quay trở lại AbstractAPI và sao chép URL điểm cuối và khóa API của bạn

________số 8

Đừng quên trao đổi khóa API của bạn để lấy biến tạm thời tại đây. Quay trở lại https. //máy chủ cục bộ. 3000 để kiểm tra thông tin địa chỉ IP trên trình duyệt của bạn

Lưu ý rằng vì địa chỉ bạn đang gửi tới API đang phát triển chỉ là 192. 168, bạn sẽ không nhận được nhiều thông tin hữu ích từ nó. Thông thường, một đối tượng phản hồi hoàn chỉnh sẽ trông giống như thế này



{
  "ip_address": "XX.XXX.XXX.XXX",
  "city": "XXXXXX",
  "city_geoname_id": XXXXXXX,
  "region": "XXXXXXXXX",
  "region_iso_code": "XX",
  "region_geoname_id": XXXXXXX,
  "postal_code": "XXXXXXX",
  "country": "United States",
  "country_code": "US",
  "country_geoname_id": 6252001,
  "country_is_eu": false,
  "continent": "North America",
  "continent_code": "NA",
  "continent_geoname_id": 6255149,
  "longitude": XXX.XXXX,
  "latitude": XX.XXXX,
  "security": {
    "is_vpn": false
  },
  "timezone": {
    "name": "XXX/XXXX",
    "abbreviation": "XXX",
    "gmt_offset": X,
    "current_time": "00:00:00",
    "is_dst": true
  },
  "flag": {
    "emoji": "🇺🇸",
    "unicode": "U+1F1FA U+1F1F8",
    "png": "https://static.abstractapi.com/country-flags/US_flag.png",
    "svg": "https://static.abstractapi.com/country-flags/US_flag.svg"
  },
  "currency": {
    "currency_name": "USD",
    "currency_code": "USD"
  },
  "connection": {
    "autonomous_system_number": XXXX,
    "autonomous_system_organization": "XXXXX",
    "connection_type": "XXXXX",
    "isp_name": "XXXXXX",
    "organization_name": "XXXXXXX"
  }
}

(Lưu ý rằng tôi đã che khuất rất nhiều thông tin nhận dạng trong đoạn trích này. )

Phần kết luận

Trong bài viết này, chúng tôi đã xem xét cách trích xuất địa chỉ IP của máy khách trong Node. js và cách sử dụng điểm cuối định vị địa lý AbstractAPI để nhận một số thông tin hữu ích về địa chỉ IP đó

Khi bạn có thông tin này, bạn có thể dễ dàng tùy chỉnh trải nghiệm trong ứng dụng của người dùng để cung cấp bản dịch, chuyển đổi tiền tệ, v.v.

câu hỏi thường gặp

Làm cách nào để tìm địa chỉ IP của tôi trong nút. js?

Cách dễ nhất để tìm địa chỉ IP của bạn trong Node. js là lấy địa chỉ IP của máy khách từ đối tượng yêu cầu HTTP đến. Nếu bạn đang chạy Express trong ứng dụng Node của mình, điều này rất dễ thực hiện. Truy cập trường ổ cắm của đối tượng Yêu cầu nhanh, sau đó tra cứu thuộc tính remoteAddress của trường đó

remoteAddress sẽ là địa chỉ của client đã gửi yêu cầu. Nếu bạn đang chạy ứng dụng trong quá trình phát triển, đây sẽ là địa chỉ lặp lại. 127. 0. 0. 1 cho IPv4 và. 1 cho IPv6

Javascript có thể đọc địa chỉ IP không?

Đúng. Rất dễ tra cứu địa chỉ IP trong Javascript. Nếu bạn đang chạy ứng dụng Javascript của mình trong trình duyệt, bạn có thể sử dụng dịch vụ bên thứ ba miễn phí như AbstractAPI để đưa ra yêu cầu và nhận cả địa chỉ IP của bạn và một số thông tin về nó

Nếu bạn đang chạy Javascript trên máy chủ (i. e. máy chủ Node JS), khung Express giúp dễ dàng lấy thông tin về địa chỉ IP của máy khách từ đối tượng yêu cầu đến. Cách dễ nhất để làm điều này là sử dụng yêu cầu. ổ cắm. trường địa chỉ từ xa

Làm thế nào để bạn tìm kiếm một địa chỉ IP?

Có nhiều cách tra cứu địa chỉ IP. Nếu bạn chỉ muốn biết địa chỉ IP của chính mình cho thiết bị bạn hiện đang sử dụng, hãy truy cập trang web như https. // whatismyipaddress. com/, hoặc gõ đơn giản "địa chỉ IP của tôi là gì" vào trình duyệt Google hoặc thanh tìm kiếm

Nếu bạn đang cố tra cứu địa chỉ IP bên trong trình duyệt hoặc trên máy chủ, cách dễ nhất là kiểm tra đối tượng yêu cầu gửi đến. Tùy thuộc vào khung và ngôn ngữ bạn đang sử dụng để xây dựng máy chủ của mình, phương pháp chính xác để thực hiện việc này sẽ khác nhau. Xem tài liệu về ngôn ngữ và khuôn khổ của bạn

Có nhiều dịch vụ miễn phí của bên thứ ba có thể cung cấp cho bạn không chỉ địa chỉ IP mà còn một số thông tin về địa chỉ đó, chẳng hạn như dữ liệu định vị địa lý, nhà cung cấp dịch vụ và dữ liệu nhà cung cấp, v.v.

Bạn có thể lấy vị trí từ địa chỉ IP không?

Địa chỉ IP định tuyến lưu lượng truy cập Internet đến máy tính của bạn. Để làm rõ, nó không tiết lộ vị trí của bạn . Nếu ai đó có thể lấy địa chỉ IP của bạn, họ có thể tìm hiểu một chút về dịch vụ Internet của bạn, chẳng hạn như nhà cung cấp mà bạn sử dụng để kết nối Internet, nhưng họ thực sự không thể xác định vị trí của bạn, nhà riêng hoặc văn phòng của bạn.

Làm cách nào để lấy địa chỉ IP trong nodejs?

Cách dễ nhất để tìm địa chỉ IP của bạn trong Node. js là lấy địa chỉ IP của máy khách từ đối tượng yêu cầu HTTP đến . Nếu bạn đang chạy Express trong ứng dụng Node của mình, điều này rất dễ thực hiện. Truy cập trường ổ cắm của đối tượng Yêu cầu nhanh, sau đó tra cứu thuộc tính remoteAddress của trường đó.

Làm cách nào để lấy vị trí từ địa chỉ IP bằng Javascript?

get("https. //api. ipdata. co?api-key=APIKEY", function(response) { console. log(phản hồi. tên_nước); . A simple call like above without passing in any parameters other than the API key will give you the location of the user currently on the page with the above code embedded.