Hướng dẫn get ip address nodejs - lấy địa chỉ ip nodejs

var ip = req.headers['x-forwarded-for'] ||
     req.socket.remoteAddress ||
     null;

Lưu ý rằng đôi khi bạn có thể nhận được nhiều hơn một địa chỉ IP trong

Show
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
3. Ngoài ra, một tiêu đề
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
4 sẽ không luôn luôn được đặt có thể gây ra lỗi.

Nội dung chính

  • Tổng quan
  • Cách sử dụng const parseIp = (req) => req.headers['x-forwarded-for']?.split(',').shift() || req.socket?.remoteAddress console.log(parseIp(req)) // => 127.0.0.1 7 trong máy chủ const parseIp = (req) => req.headers['x-forwarded-for']?.split(',').shift() || req.socket?.remoteAddress console.log(parseIp(req)) // => 127.0.0.1 8
  • Tại sao bạn cần địa chỉ IP khách hàng
  • Cách Node.js Nhận địa chỉ IP
  • 1. Lấy địa chỉ IP người dùng từ thuộc tính ổ cắm của đối tượng yêu cầu
  • 2. Truy xuất nhiều địa chỉ IP với tiêu đề X-Forwarded-For (XFF)
  • 3. Yêu cầu địa chỉ IP cục bộ với Node JS
  • 4. Lấy địa chỉ IP của máy khách trong Node JS với Express
  • 5. Yêu cầu địa chỉ IP của khách hàng khi sử dụng các dịch vụ điện toán cạnh
  • Yêu cầu địa chỉ IP trong CloudFlare
  • Tiêu đề CF-Connecting-IP
  • True-Client-IP
  • Yêu cầu địa chỉ IP của máy khách trong CDN nhanh
  • Yêu cầu địa chỉ IP của máy khách trong lưu trữ Firebase
  • Địa chỉ IP của máy khách trong Nginx
  • Máy khách IP trong bộ cân bằng tải trọng không gian
  • 6. Giải pháp mạnh mẽ để truy xuất địa chỉ IP của máy khách trong Node JS - Sử dụng Tích hợp API định vị địa lý IP trừu tượng
  • 7. Giải pháp thay thế để yêu cầu địa chỉ IP của máy khách trong Node.js - Sử dụng mô -đun IP NPM yêu cầu
  • Đầu tiên, cài đặt Express với lệnh bên dưới
  • Cài đặt mô -đun IP yêu cầu với lệnh sau
  • Viết mã JavaScript sau trong tệp server.js
  • Bây giờ chúng tôi sẽ khởi chạy ứng dụng Node JS trong ví dụ trên với lệnh sau:
  • Tiêu đề cụ thể:
  • Node JS và Express đối tượng:
  • Câu hỏi thường gặp
  • Làm cách nào để tìm địa chỉ IP trong Node JS?
  • Proxy là gì và tại sao tôi nên sử dụng mạng proxy là gì?
  • Làm thế nào để tìm địa chỉ IP của yêu cầu ban đầu nếu tôi sử dụng proxy?
  • Làm thế nào để bạn tìm thấy địa chỉ IP trong nodejs?
  • Một nút có địa chỉ IP không?
  • Tôi có thể lấy địa chỉ IP từ JavaScript không?
  • Làm cách nào để tìm địa chỉ máy chủ của tôi trong Node JS?

Định dạng chung của trường là:

X-Forwarded-for:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
55

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
5

Trong đó giá trị là một danh sách phân tách không gian dấu phẩy+của các địa chỉ IP, phần nhất bên trái là máy khách gốc và mỗi proxy liên tiếp vượt qua yêu cầu thêm địa chỉ IP nơi nhận được yêu cầu. Trong ví dụ này, yêu cầu được chuyển qua

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
6,
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
7, và sau đó là
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
8.
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
8 xuất hiện dưới dạng địa chỉ từ xa của yêu cầu.

Đây là giải pháp được đề xuất bởi Arnav Gupta với một bản sửa lỗi Martin đã đề xuất dưới đây trong các bình luận cho các trường hợp khi

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
4 không được đặt:
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress

Gợi ý sử dụng JS hiện đại:

  • Chỉ xử lý
    var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
             req.socket.remoteAddress
    
    4 chỉ khi được đặt, nếu vậy, hãy lấy địa chỉ đầu tiên
  • Các tham số khác sử dụng chuỗi tùy chọn (?.)
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
2

Hướng dẫn get ip address nodejs - lấy địa chỉ ip nodejs

Theodore Kelechukwu Onyejiaku

Tổng quan

Trong bức ảnh này, chúng tôi sẽ xem xét cách lấy địa chỉ IP trong

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
22. Chúng ta có thể đạt được điều này bằng cách sử dụng ứng dụng máy chủ
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
22 điển hình và máy chủ Express.

Địa chỉ giao thức IPInteT là một địa chỉ được cung cấp cho một thiết bị được kết nối với mạng.IPinternet protocol address is an address given to a device connected to a network.IPinternet protocol address is an address given to a device connected to a network.


Mã số

Cách sử dụng
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
24 trong máy chủ
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
22

Phương pháp này là một thuộc tính của thuộc tính ổ cắm của đối tượng yêu cầu.

Chúng tôi có thể đạt được điều này bằng cách sử dụng

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
24 hoặc
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
27 nếu bạn chạy máy chủ
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
28.
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
0

Giải trình

Từ mã trên, chúng tôi đã tạo một máy chủ giao thức chuyển HTTPHYPERTEXT gửi phản hồi có chứa địa chỉ IP của máy khách khi máy khách truy cập máy chủ trên

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
29.

Do đó, chúng tôi có thể nhận được địa chỉ IP của người dùng bằng cách sử dụng

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
00.

Cách sử dụng
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
27 trong máy chủ
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
28

Khi bạn chạy một máy chủ

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
28, thật dễ dàng để có được địa chỉ IP của máy khách.

Hãy xem mã dưới đây.

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
6

Giải trình

Từ mã trên, chúng tôi đã tạo một máy chủ giao thức chuyển HTTPHYPERTEXT gửi phản hồi có chứa địa chỉ IP của máy khách khi máy khách truy cập máy chủ trên

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
29.

Do đó, chúng tôi có thể nhận được địa chỉ IP của người dùng bằng cách sử dụng

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
00.

Cách sử dụng const parseIp = (req) => req.headers['x-forwarded-for']?.split(',').shift() || req.socket?.remoteAddress console.log(parseIp(req)) // => 127.0.0.1 7 trong máy chủ const parseIp = (req) => req.headers['x-forwarded-for']?.split(',').shift() || req.socket?.remoteAddress console.log(parseIp(req)) // => 127.0.0.1 8

Khi bạn chạy một máy chủ

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
28, thật dễ dàng để có được địa chỉ IP của máy khách.

Hãy xem mã dưới đây.

Mã trên tương tự như mã trước. Sự khác biệt duy nhất là cái sau được tạo bằng khung

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
28 của
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
05.

Cách dễ dàng để có được địa chỉ IP của máy khách là bằng cách lấy thuộc tính

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
06 của đối tượng yêu cầu,
var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
3

const server = http.createServer(requestListener);

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => {

console.log(`Server is running on port ${PORT}`);

});

7.

Bản demo mã trực tiếp

Xem một bản demo trực tiếp ở đây về bản sao của tôi.

THẺ LIÊN QUAN

nodejs

Theodore Kelechukwu Onyejiaku

Đó là một trường hợp sử dụng phổ biến cho bất kỳ nhà phát triển ngăn xếp đầy đủ nào để truy xuất địa chỉ IP của yêu cầu đến ứng dụng web của họ. Node.js cung cấp cả khả năng bản địa và bên thứ ba mạnh mẽ cho việc này.

Đọc tiếp để tìm hướng dẫn nhỏ chuyên sâu để tìm IP gốc cho các trường hợp sử dụng khác nhau. Bạn cũng sẽ tìm các giải pháp để theo dõi các địa chỉ IP ban đầu ngay cả khi sử dụng các dịch vụ proxy hoặc CDN.

Tại sao bạn cần địa chỉ IP khách hàng

Bạn có thể cần truy xuất địa chỉ IP của máy khách cho một số trường hợp sử dụng, đặc biệt nếu bạn chạy trang web thương mại điện tử:

  • Để phân khúc tốt hơn và nhắm mục tiêu khách hàng
  • Để bản địa hóa các dịch vụ theo khu vực
  • Để cải thiện bảo mật ứng dụng bằng cách chặn/lọc lưu lượng từ các vị trí có rủi ro cao

Cách Node.js Nhận địa chỉ IP

Địa chỉ IP của khách hàng có thể có mặt ở nhiều nơi. Nó có thể nằm trong một trong các tiêu đề yêu cầu HTTP hoặc bên trong đối tượng yêu cầu nút JS. Nếu bạn sử dụng một khung trên đầu nút như Express, thì địa chỉ IP có thể nằm trong một số thuộc tính của khung (bạn có thể tìm thấy nó trong thuộc tính req.ip với Express).HTTP request headers or inside the Node JS request object. If you use a framework on top of Node like Express, then the IP address may be inside some property of the framework (You can find it in the req.ip property with Express).HTTP request headers or inside the Node JS request object. If you use a framework on top of Node like Express, then the IP address may be inside some property of the framework (You can find it in the req.ip property with Express).

Nếu bạn đặt máy chủ hoặc CDN proxy để tăng hiệu suất giữa máy khách và máy chủ Node JS của bạn, thì bạn sẽ tìm thấy IP người dùng trong các tiêu đề cụ thể mà các công ty điện toán đám mây này cung cấp. Ví dụ: trong CF-Connecting-IP hoặc True-Client-IP nếu bạn sử dụng CloudFlare hoặc trong tiêu đề lưu trữ Firebase tùy chỉnh nếu bạn lưu trữ ứng dụng của mình trên Firebase.CF-Connecting-IP or the True-Client-IP if you use Cloudflare, or in a custom Firebase Hosting Header if you host your app on Firebase.CF-Connecting-IP or the True-Client-IP if you use Cloudflare, or in a custom Firebase Hosting Header if you host your app on Firebase.

1. Lấy địa chỉ IP người dùng từ thuộc tính ổ cắm của đối tượng yêu cầu

Đầu tiên, chúng tôi tìm thấy địa chỉ IP của yêu cầu với giải pháp JS nút vani đơn giản.

Mô -đun HTTP tiêu chuẩn của nút cung cấp thuộc tính Remoteaddress trong thuộc tính ổ cắm của đối tượng yêu cầu. Chúng tôi lấy địa chỉ IP của yêu cầu từ giá trị này.http module provides the remoteAddress property in the socket property of the request object. We retrieve the request's IP address from this value.http module provides the remoteAddress property in the socket property of the request object. We retrieve the request's IP address from this value.

Đây là mã cho giải pháp này.

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
4

Mã ghi lại địa chỉ trong bảng điều khiển.

Chúng tôi hiển thị địa chỉ IP người dùng bằng IPv6 ở trên. Nó là một hình thức ngắn của localhost:localhost:localhost:

0000:0000:0000:0000:0000:0000:0000:0001

IPv6 viết tắt cho :: 1.::1.::1.

2. Truy xuất nhiều địa chỉ IP với tiêu đề X-Forwarded-For (XFF)

Giải pháp đơn giản ở trên chỉ hoạt động nếu người dùng kết nối trực tiếp với máy chủ. Nhưng, nếu yêu cầu định tuyến qua nhiều proxy, thuộc tính req.socket.remoteaddress chỉ ghi lại địa chỉ proxy cuối cùng.req.socket.remoteAddress property only logs the final proxy address.req.socket.remoteAddress property only logs the final proxy address.

Nhưng, chúng tôi cần địa chỉ IP của khách hàng có nguồn gốc cho trường hợp sử dụng kinh doanh của chúng tôi. Vì vậy, chúng tôi sử dụng X-Forededed-For (XFF), một httpheader de facto cho việc này.X-Forwarded-For (XFF), a de-facto HTTPheader for this.X-Forwarded-For (XFF), a de-facto HTTPheader for this.

XFF có cú pháp sau:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
5

Chúng tôi phân tích nó để trích xuất giá trị nhất trái. Đây là địa chỉ IP yêu cầu của chúng tôi. Đây là mã cho nó trong Node JS:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
6

Hãy nhanh chóng phá vỡ logic mã.

Chúng tôi truy cập tiêu đề XFF trong đối tượng req.headers bằng khóa ['x-forededed = for'] để trả về nhiều địa chỉ IP của proxy và máy khách có nguồn gốc.req.headers object with the key ['x-forwarded=for'] to return multiple IP addresses of the proxies and originating client.req.headers object with the key ['x-forwarded=for'] to return multiple IP addresses of the proxies and originating client.

Đôi khi, tiêu đề XFF có thể không có mặt. Vì vậy, chúng tôi sử dụng toán tử chuỗi tùy chọn JavaScript hiện đại (?.) Trong lệnh để loại bỏ một lỗi trong tình huống như vậy. Sau đó, chúng tôi chia tiêu đề XFF bằng dấu phẩy để trả về nhiều địa chỉ IP dưới dạng một mảng. Cuối cùng, chúng tôi truy xuất địa chỉ IP của máy khách với phương thức mảng thay đổi JavaScript để trích xuất giá trị bên trái nhất.shift array method to extract the left-most value.shift array method to extract the left-most value.

Nếu họ không đặt XFF, toán tử chuỗi tùy chọn sẽ trả về không xác định. Để cung cấp cho người dùng một phản hồi có ý nghĩa, chúng tôi mặc định là giá trị req.socket? .RemoteadDress.undefined. To provide the user with a meaningful response, we default to the req.socket?.remoteAddress value.undefined. To provide the user with a meaningful response, we default to the req.socket?.remoteAddress value.

Đây là đầu ra cho mã này. Chúng tôi thấy địa chỉ IP trong nhật ký trong bảng điều khiển của chúng tôi.

3. Yêu cầu địa chỉ IP cục bộ với Node JS

Hai phương pháp trên trả về localhost. LocalHost có nghĩa là một vòng lặp trở lại cùng một thiết bị mà chúng tôi yêu cầu IP. Nhưng, thiết bị của chúng tôi cũng có kết nối khu vực địa phương với bộ định tuyến của chúng tôi. Vì vậy, nó cũng có một địa chỉ IP địa phương riêng.localhost. Localhost means a loop back to the same device that we request IP from. But, our device also has a local area connection to our router. So, it also has a private local IP address.localhost. Localhost means a loop back to the same device that we request IP from. But, our device also has a local area connection to our router. So, it also has a private local IP address.

Chúng tôi sử dụng mô -đun Node JS có tên IP để yêu cầu địa chỉ IP cục bộ này.ip to request this local IP address.ip to request this local IP address.

Trước tiên chúng tôi cài đặt mô -đun IP với lệnh sau:ip module with the following command:ip module with the following command:

Bây giờ chúng tôi yêu cầu địa chỉ IP trong mạng khu vực cục bộ của chúng tôi bằng phương thức ip.Address () của mô -đun này.ip.address() method of this module.ip.address() method of this module.

Dưới đây là một ứng dụng Node JS ví dụ để làm như vậy:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
7

Bây giờ chúng tôi chạy ứng dụng của chúng tôi. Đầu ra trên localhost: 3000 trông như thế này:

4. Lấy địa chỉ IP của máy khách trong Node JS với Express

Express lưu trữ địa chỉ IP gốc trong thuộc tính Req.IP của đối tượng yêu cầu của nó.req.ip property of its request object.req.ip property of its request object.

Dưới đây là mã ví dụ cho giải pháp này:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
8

Mã dễ viết hơn nếu chúng ta sử dụng Express trên đầu nút JS.

5. Yêu cầu địa chỉ IP của khách hàng khi sử dụng các dịch vụ điện toán cạnh

Với khối lượng dữ liệu mở rộng mỗi ngày, mô hình máy chủ khách hàng truyền thống cho các ứng dụng web là không đủ. Nhiều lần, bạn có thể có máy chủ của mình phía sau proxy để cung cấp hiệu suất và bảo mật vượt trội bằng cách sử dụng mạng lưới điện toán cạnh và mạng phân phối nội dung (CDN).

Trong trường hợp đó, bạn cần các tiêu đề cụ thể mà các công ty điện toán cạnh khác nhau hỗ trợ để truy xuất địa chỉ IP gốc của khách hàng.

Chúng ta hãy nhìn vào một vài trong số những tiêu đề cụ thể này.

Yêu cầu địa chỉ IP trong CloudFlare

Nếu bạn sử dụng mạng lưới các proxy CloudFlare để cải thiện tốc độ và bảo mật, bạn có thể nhận địa chỉ IP của yêu cầu với các tiêu đề tùy chỉnh của CloudFlare:

Tiêu đề CF-Connecting-IP

CloudFlare cung cấp tiêu đề yêu cầu CF-Connecting-IP độc quyền của họ để gửi địa chỉ IP của máy khách đến máy chủ Web Origin của bạn.

True-Client-IP

Khách hàng của CloudFlare cũng có thể sử dụng tiêu đề True-Client-IP để nhận địa chỉ IP của yêu cầu. Tiêu đề True-Client-IP là tốt nhất cho các thiết bị kế thừa để đọc IP gốc mà không cập nhật tường lửa/cân bằng tải.

Yêu cầu địa chỉ IP của máy khách trong CDN nhanh

Nếu bạn sử dụng CDN nhanh để cung cấp cho khách truy cập ứng dụng hoặc trang web của bạn trải nghiệm người dùng nhanh, hãy sử dụng tiêu đề IP-IP nhanh của họ để nhận địa chỉ IP của yêu cầu. Khi các yêu cầu nhảy từ proxy nhanh này sang proxy nhanh, nhanh tự động thêm tiêu đề IP nhanh chóng này vào các yêu cầu tiếp theo.Fastly-Client-IP header to get the request's IP address. As the requests jump from one Fastly proxy to another, Fastly automatically adds this Fastly-Client IP header to subsequent requests.Fastly-Client-IP header to get the request's IP address. As the requests jump from one Fastly proxy to another, Fastly automatically adds this Fastly-Client IP header to subsequent requests.

Yêu cầu địa chỉ IP của máy khách trong lưu trữ Firebase

Nếu bạn lưu trữ ứng dụng của mình trên Firebase, bạn có thể truy xuất địa chỉ IP gốc từ tiêu đề lưu trữ Firebase. Bạn có thể chỉ định tiêu đề lưu trữ Firebase trong thuộc tính 'tiêu đề' trong tệp cấu hình.headers' attribute in the config file.headers' attribute in the config file.

Địa chỉ IP của máy khách trong Nginx

Nếu bạn sử dụng các máy chủ proxy nginx để cải thiện hiệu suất trang web của mình, bạn có thể truy xuất IP máy khách từ tiêu đề X-REAL-IP.X-Real-IP header.X-Real-IP header.

Máy khách IP trong bộ cân bằng tải trọng không gian

Rackspace LB tối ưu hóa hiệu suất trang web bằng cách phân phối tải cùng với bộ nhớ đệm và các tính năng khác. Bạn có thể tìm thấy IP máy khách ban đầu trong tiêu đề IP-IP của X-Cluster-Client-IP trong Rackspace LB.X-Cluster-Client-IP header in Rackspace lb.X-Cluster-Client-IP header in Rackspace lb.

Bạn có thể làm theo cùng với các hướng dẫn và tài liệu chính thức cho bất kỳ dịch vụ nào trong số này để cài đặt chúng đúng cách với các tiêu đề cụ thể để lấy địa chỉ IP của khách hàng. Bạn có thể tìm thấy các hướng dẫn ví dụ cho tất cả các nền tảng chính như Windows, Mac OS và Linux cho các dịch vụ này.

6. Giải pháp mạnh mẽ để truy xuất địa chỉ IP của máy khách trong Node JS - Sử dụng Tích hợp API định vị địa lý IP trừu tượng

Như chúng ta thấy, địa chỉ IP máy khách ban đầu có thể ẩn ở một số nơi - bên trong các đối tượng Node JS gốc (thuộc tính req.socket.remoteaddress), bất kỳ đối tượng khung JS nào của nút (Req.ip in Express) hoặc bên trong một số tiêu đề cụ thể tùy chỉnh Nếu bạn sử dụng tính toán cạnh và CDN để cải thiện hiệu suất trang web của bạn.req.socket.remoteAddress property), any Node JS framework object (req.ip property in Express), or inside several custom specific headers if you use edge computing and CDNs to improve your site performance.req.socket.remoteAddress property), any Node JS framework object (req.ip property in Express), or inside several custom specific headers if you use edge computing and CDNs to improve your site performance.

Thật khó để theo dõi các tiêu đề riêng lẻ và các lệnh cấu hình khác nhau cho bất kỳ nhà phát triển ngăn xếp đầy đủ nào để lấy địa chỉ IP của máy khách khi bạn sử dụng các công ty proxy khác nhau.

Vì vậy, chúng tôi có thể sử dụng dịch vụ định vị địa lý cấp độ từ đầu đến cuối như API định vị địa lý IP trừu tượng để bao gồm các trường hợp khác nhau.

Lưu ý: Đọc thêm về API định vị địa lý IP trừu tượng tại đây.

Với đoạn mã mã Javasscript dễ dàng, bạn có thể sử dụng API định vị địa lý IP trừu tượng để truy xuất địa chỉ IP của máy khách trong Node JS với giải pháp sau:

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
0

Đây là đầu ra của ví dụ này:

Logic là đơn giản. Chúng tôi gửi yêu cầu Axios đến điểm cuối API. Nó trả về một bộ dữ liệu định vị địa lý phong phú trong đối tượng phản hồi là JSON. Trường đầu tiên trong dữ liệu phản hồi là IP_ADDRESS và nó chứa địa chỉ IP máy khách ban đầu.ip_address, and it contains the original client IP address.ip_address, and it contains the original client IP address.

Cuộc gọi API tra cứu trong một số tiêu đề và các đối tượng JavaScript/Node JS để truy xuất IP. Nhà phát triển Stack đầy đủ không cần phải lãng phí nỗ lực trong việc tìm kiếm từng tiêu đề yêu cầu riêng lẻ và có thể tập trung vào logic kinh doanh.

Tóm tắt API cung cấp một số tích hợp sẵn sàng sử dụng hữu ích cho nhiều nhiệm vụ phổ biến mà một nhu cầu của nhà phát triển ngăn xếp đầy đủ. Ví dụ: API xác thực email của họ cung cấp cho một nhà phát triển Stack đầy đủ giải pháp dễ dàng chơi plug-n-play để xác nhận địa chỉ email và cải thiện ROI tiếp thị. Tóm tắt cung cấp nhiều hướng dẫn để giúp bạn dễ dàng tích hợp API của họ vào mã của bạn.

Ví dụ: bạn có thể tìm hiểu cách sử dụng API xác thực email trừu tượng để làm sạch danh sách gửi thư của bạn các địa chỉ không có thật trong hướng dẫn này.

7. Giải pháp thay thế để yêu cầu địa chỉ IP của máy khách trong Node.js - Sử dụng mô -đun IP NPM yêu cầu

Nếu bạn muốn sử dụng giải pháp nguồn mở để tìm địa chỉ IP trong Node.js, thì bạn có thể thử mô -đun IP NPM yêu cầu.Request IP NPM module.Request IP NPM module.

Đầu tiên, cài đặt Express với lệnh bên dưới

Cài đặt mô -đun IP yêu cầu với lệnh sau

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
1

Viết mã JavaScript sau trong tệp server.js

var ip = (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || 
         req.socket.remoteAddress
2

Bây giờ chúng tôi sẽ khởi chạy ứng dụng Node JS trong ví dụ trên với lệnh sau:

Nếu bây giờ chúng tôi chỉ vào localhost: 3000 trong trình duyệt của chúng tôi, chúng tôi sẽ thấy địa chỉ IP của chúng tôi.

Mô -đun nút IP yêu cầu bao gồm tất cả các trường hợp cạnh cho các tiêu đề và đối tượng khác nhau nơi có địa chỉ IP của máy khách. Ví dụ: nó sẽ xem qua các địa chỉ IP sau:

Tiêu đề cụ thể:

  • X-Client-IP
  • X-Forwarded-For
  • CF-Connecting-IP
  • Fastly-Client-IP
  • True-Client-IP
  • X-Real-IP
  • X-Cluster-Client-IP
  • X-Real-IP
  • X-Cluster-Client-IP

Node JS và Express đối tượng:

req.connection.remoteaddress (cho các phiên bản Node JS cũ hơn)

req.socket.remoteAddress

Vì vậy, phương pháp này là một giải pháp mạnh mẽ một lần bao gồm hầu hết các trường hợp sử dụng.

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

Làm cách nào để tìm địa chỉ IP trong Node JS?

Bạn nên tra cứu thuộc tính request.socket.remoteaddress với nút vani js hoặc thuộc tính req.ip nếu bạn sử dụng Express trên đầu nút. Ngoài ra, bạn có thể tìm thấy IP trong các tiêu đề yêu cầu như X-Client-IP hoặc X-Forward-For (XFF). Nếu bạn sử dụng dịch vụ CDN như CloudFlare hoặc Fastly để cải thiện hiệu suất, thì bạn nên kiểm tra các tiêu đề độc quyền của họ.request.socket.remoteAddress property with vanilla Node JS or the req.ip property if you use Express on top of Node. Also, you can find the IP in request headers like the X-Client-IP or the X-Forward-For (XFF). If you use a CDN service like Cloudflare or Fastly to improve performance, then you should check their proprietary headers.request.socket.remoteAddress property with vanilla Node JS or the req.ip property if you use Express on top of Node. Also, you can find the IP in request headers like the X-Client-IP or the X-Forward-For (XFF). If you use a CDN service like Cloudflare or Fastly to improve performance, then you should check their proprietary headers.

Proxy là gì và tại sao tôi nên sử dụng mạng proxy là gì?

Mạng proxy giữa máy khách và máy chủ của bạn cải thiện hiệu suất và bảo mật trang web với sức mạnh của sự cân bằng tải, bộ nhớ đệm và điện toán cạnh.

Làm thế nào để tìm địa chỉ IP của yêu cầu ban đầu nếu tôi sử dụng proxy?

Bạn có thể tìm thấy IP yêu cầu ban đầu trong tiêu đề hoặc tiêu đề tùy chỉnh X-Forededed-For (XFF) như CF-Connecting-IP cho CloudFare hoặc X-Real-IP cho các proxies nginx.X-Forwarded-For (XFF) header or custom headers such as the CF-Connecting-IP for Cloudfare, or the X-Real-IP for Nginx proxies.X-Forwarded-For (XFF) header or custom headers such as the CF-Connecting-IP for Cloudfare, or the X-Real-IP for Nginx proxies.

Làm thế nào để bạn tìm thấy địa chỉ IP trong nodejs?

Có hai cách để có được địa chỉ IP:...

Đặt ip = req.IP ..

Đặt ip = req.sự liên quan.Remoteaddress ;.

Một nút có địa chỉ IP không?

Sự sáng tạo.Một nút địa chỉ IP được tạo trong kho dữ liệu khi thiết bị máy chủ, thiết bị mạng, máy in hoặc thiết bị được quản lý SNMP được quét thành công.Nút địa chỉ IP mới sẽ chỉ được tạo nếu một có cùng một khóa chưa tồn tại như một đứa trẻ của nút đó.An IP Address node is created in the datastore when a host, network device, printer, or SNMP managed device is scanned successfully. The new IP Address node will only be created if one with the same key does not already exist as a child of that node.An IP Address node is created in the datastore when a host, network device, printer, or SNMP managed device is scanned successfully. The new IP Address node will only be created if one with the same key does not already exist as a child of that node.

Tôi có thể lấy địa chỉ IP từ JavaScript không?

JavaScript hoạt động với các ứng dụng của bên thứ ba để tìm nạp địa chỉ IP.Đây là các dịch vụ ứng dụng tìm nạp địa chỉ IP của người dùng và chỉ cần trả lại theo ba định dạng, ví dụ: Định dạng văn bản thuần túy, JSON và JSONP.Có vô số chúng có sẵn trên Internet.. These are the application services that fetch the user's IP address and simply return it in three formats, ie., plain text, JSON, and JSONP format. There are loads of them available on the internet.. These are the application services that fetch the user's IP address and simply return it in three formats, ie., plain text, JSON, and JSONP format. There are loads of them available on the internet.

Làm cách nào để tìm địa chỉ máy chủ của tôi trong Node JS?

Để lấy tên hoặc tên máy chủ của HĐH, bạn có thể sử dụng phương thức hostName () từ mô -đun HĐH trong Node.js./* Nhận tên máy chủ của hệ điều hành trong nút.JS *// // Nhập mô -đun HĐH HBRET OS = Yêu cầu ("OS");// Nhận tên máy chủ const hostname = os.use the hostname() method from the os module in Node.js. /* Get hostname of os in Node. js */ // import os module const os = require("os"); // get host name const hostName = os.use the hostname() method from the os module in Node. js. /* Get hostname of os in Node. js */ // import os module const os = require("os"); // get host name const hostName = os.