Trong hướng dẫn này, chúng ta sẽ học cách xác thực địa chỉ IP trong Python bằng một số cách. Nó rất hữu ích khi chúng ta viết các chương trình cấp hệ điều hành. Nếu chúng tôi đang phát triển một số ứng dụng web trong Django hoặc Flask, chúng tôi có thể cần xác định xem địa chỉ IP của người dùng có hợp lệ hay không. Xác thực địa chỉ IP là điều cần thiết để ngăn chặn gian lận, cung cấp dịch vụ vị trí được nhắm mục tiêu cho người dùng và hơn thế nữa
Hãy giới thiệu ngắn gọn về địa chỉ IP
Địa chỉ IP [Giao thức Internet] là gì?
IP là viết tắt của giao thức internet; . Nó đề cập đến một bộ quy tắc chi phối một phần cách dữ liệu được gửi trên internet. Nó kết hợp phân giải DNS và truyền thông tin từ máy tính này sang máy tính khác
Có hai phiên bản địa chỉ IP chủ yếu - IPv4 và IPv6
IPv4 so với IPv6
Địa chỉ IPv4 mà chúng ta có lẽ đã quen thuộc. Một IPv4 bao gồm bốn số [mỗi số từ 0 đến 255] được phân tách bằng dấu chấm. Định dạng địa chỉ IP là một địa chỉ số 32 bit được viết dưới dạng bốn số thập phân được gọi là [bát phân]. Nó cung cấp sự kết hợp cho 4. 3 tỷ địa chỉ duy nhất
Thí dụ -
IPv6
Đây là phiên bản mới hơn và hơi khác so với phiên bản trước. Nó trông giống như dưới đây
Nó sử dụng sự kết hợp của các ký tự chữ và số. Nó có số lượng không gian có sẵn mà một địa chỉ IPv4 bao gồm ba lần. Đó là không gian địa chỉ 128 bit kết hợp 2128 địa chỉ duy nhất, trong khi IPv4 cho phép 4. 3 tỷ địa chỉ không gian duy nhất. Đó là số lượng địa chỉ gấp 1028 lần so với IPv4
Tại sao chúng ta cần IPv6?
Mặc dù IPv4 được gọi là "phiên bản 4", đây là phiên bản IP đầu tiên được tạo ra và đã xuất hiện kể từ khi phát minh ra internet. Vào thời điểm đó, các kỹ sư không thể ngờ rằng 4. 3 tỷ địa chỉ IP sẽ không đủ đáp ứng yêu cầu. Năm 2022, khoảng 4. 29 tỷ địa chỉ đã được sử dụng bởi nhiều điện thoại thông minh, máy tính xách tay và máy tính bảng khác nhau
Cách xác thực địa chỉ IP trong Python
Trong phần này, chúng ta sẽ thấy nhiều cách khác nhau để xác thực địa chỉ IP
Phương pháp - 1 Sử dụng phương thức đếm[]
Hãy hiểu ví dụ sau
Thí dụ -
đầu ra
Giải trình
Trong đoạn mã trên, chúng ta đã sử dụng phương thức count[] để đếm. [dấu chấm] dấu phân cách. Nếu số lượng dấu tách nhỏ hơn 3, địa chỉ IP đã nhập không hợp lệ. Sau đó, chúng tôi kiểm tra phạm vi của từng số giữa các khoảng thời gian. Nếu điều kiện được thỏa mãn nghĩa là IP đã nhập hợp lệ
Đây là một ví dụ dễ dàng xác thực địa chỉ IP
Phương pháp - 2. Sử dụng một tập hợp[]
Hãy hiểu ví dụ sau -
Thí dụ -
đầu ra
Giải trình -
Trong mã, chúng tôi đã khởi tạo biến đếm đếm số lượng. dấu chấm từ địa chỉ IP. Nếu số lượng dấu phân cách nhỏ hơn 3, thì địa chỉ IP đã nhập không hợp lệ và nếu điều kiện là đúng, hãy khởi tạo set_val dưới dạng một tập hợp. Trong set_val, chúng tôi đã thêm các số dưới dạng chuỗi trong khoảng từ 0 đến 256. Sau đó, chúng tôi đã khởi tạo lại biến đếm và tạm thời dưới dạng một chuỗi rỗng. Vòng lặp for lặp lại và kiểm tra xem chuỗi có khác dấu chấm không; . Mặt khác, chúng tôi kiểm tra xem chuỗi đã có trong set_val chưa;
Sau đó, chúng tôi xác minh số đếm;
Phương pháp - 3. Sử dụng mô-đun ipadpress[]
Python đi kèm với một mô-đun tiện dụng được gọi là ipaddress có thể được sử dụng để xác thực địa chỉ IP và thực hiện một số phép tính số học cơ bản trên địa chỉ IP. Nó không đánh giá địa chỉ IP một cách rõ ràng rằng một địa chỉ là một địa chỉ IP hợp lệ, nhưng chúng ta cần sử dụng một số logic để làm điều đó
Nó cung cấp cách mạnh mẽ và an toàn nhất để xác định địa chỉ IP hợp lệ. Nó hỗ trợ cả địa chỉ IPv4 và IPv6
Để sử dụng mô-đun này, chúng ta cần nhập nó vào mã Python
Hãy hiểu ví dụ sau
Thí dụ -
đầu ra
The IP address '127.0.0.2.4' is not valid The IP address 127.0.0.0 is valid
Ưu điểm của việc sử dụng mô-đun này là nó có thể xác thực địa chỉ IPv4 và IPv6
đầu ra
The IP address 2001:db8:75a2::8a2e:340:5625 is valid
Xác thực IP bằng Regex
Trong phương pháp này, chúng tôi sẽ sử dụng biểu thức chính quy tùy chỉnh để kiểm tra hình dạng của chuỗi IP được cung cấp. Python cung cấp thư viện re, được sử dụng để phân tích cú pháp và so khớp Regex
Phương pháp này không hiệu quả và mạnh mẽ hơn mô-đun ipaddress; . Chúng ta cũng phải viết hai logic để kiểm tra địa chỉ IPv4 và IPv6
Để xác thực IPv4, chúng tôi tạo chuỗi Regex khớp với địa chỉ IPv4. Hãy hiểu Regex sau đây
"[0-9]{1,3}\. [0-9]{1,3}\. [0-9]{1,3}\. [0-9]{1,3}"
Hãy hiểu từng thành phần của nó
- [0-9] - Nó chỉ ra rằng chúng tôi đang tìm kiếm một ký tự số từ 0 đến 9
- {1,3} - Nó chỉ ra rằng chúng tôi đang tìm kiếm ít nhất là một hoặc nhiều nhất là ba phiên bản của bộ ký tự trước đó
- \. - Nó yêu cầu trình phân tích cú pháp kiểm tra. tính cách. Trong Regex, chúng ta cần sử dụng \ escape để xác định rằng chúng ta đang tìm kiếm một ký tự đặc biệt
Ba thành phần đó tạo thành một byte của địa chỉ IP [Ví dụ 255. ] Bây giờ chúng tôi lặp lại các thành phần này bốn lần
Chúng ta cần nhập mô-đun re để sử dụng Regex trong Python. Tiếp theo, chúng ta sẽ sử dụng hàm match[] để kiểm tra đầu vào so với Biểu thức chính quy
Thí dụ -
đầu ra
Bây giờ hãy triển khai chức năng xác thực hoàn chỉnh
Thí dụ -
đầu ra
The IP address 127.0.0.1 is valid
Sự kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu về nhiều cách khác nhau để xác thực địa chỉ IP, bao gồm mô-đun ipaddress tích hợp sẵn. Chúng tôi đã tìm hiểu xem IPv4 khác với địa chỉ IPv6 như thế nào và tại sao chúng tôi yêu cầu địa chỉ IPv6. Bạn có thể dễ dàng tìm thấy địa chỉ IP hiện tại trên hệ thống của mình. Mở cài đặt thiết bị rồi mở Tùy chọn hệ thống > Mạng > Chọn WiFi hoặc Ethernet, tùy thuộc vào kết nối của bạn