Có một vài cách khác không dựa vào Python kiểm tra một trang web bên ngoài, tuy nhiên hệ điều hành có thể. Vấn đề chính của bạn ở đây, là ngay cả khi bạn không sử dụng Python, nếu bạn đang sử dụng dòng lệnh, thì không có lệnh "tích hợp" nào có thể chỉ cần cho bạn biết IP bên ngoài [WAN]. Các lệnh như "IP addr show" và "ifconfig -a" hiển thị cho bạn địa chỉ IP của máy chủ trong mạng. Chỉ có bộ định tuyến thực sự giữ IP bên ngoài. Tuy nhiên, có nhiều cách để tìm địa chỉ IP bên ngoài [WAN IP] từ dòng lệnh.
Những ví dụ này là:
//ipecho.net/plain ; echo
curl ipinfo.io/ip
dig +short myip.opendns.com @resolver1.opendns.com
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Do đó, mã Python sẽ là:
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
HOẶC
import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
HOẶC
import os
ip = os.popen['dig +short myip.opendns.com @resolver1.opendns.com'].readlines[-1][0].strip[]
print ip
Hoặc, cắm bất kỳ ví dụ nào khác ở trên, vào một lệnh như Os.Popen, Os.Popen2, Os.Popen3 hoặc Os.System.
P.S. Bạn có thể sử dụng "Cài đặt PIP3 Pytis" và sử dụng/xem, chương trình "getip", được viết bằng Python. Bạn cũng có thể tìm thấy mã của nó ở đây: //github.com/pytis/pytis/blob/development/src/pytis/getip.py
Đôi khi bạn sẽ cần biết vị trí của một địa chỉ IP, cho dù đó là của riêng bạn hay của một trang web bạn đang sử dụng. Một trường hợp sử dụng cho điều này là khi bạn muốn gửi thông tin đăng nhập cho người dùng cho trang web của bạn. Trong bài viết này, chúng tôi sẽ xem làm thế nào bạn có thể tìm thấy vị trí của một địa chỉ IP bằng Python. Để thực hiện mục tiêu này, chúng tôi sẽ sử dụng hai API được đề cập dưới đây: Để tương tác với các API này, chúng tôi sẽ sử dụng thư viện Bạn có thể cài đặt thư viện này bằng lệnh requests
trong Python. Nếu bạn chưa quen với API, hãy đảm bảo bạn xem hướng dẫn này để tìm hiểu về chúng.
0 như thế này:import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
$ pip install requests
Khi thư viện được cài đặt, chúng tôi tốt để đi!
Như chúng tôi đã thảo luận, trước tiên chúng tôi sẽ tìm nạp địa chỉ IP của chúng tôi từ API đầu tiên. Sau đó, chúng tôi sẽ sử dụng địa chỉ IP này để tìm nạp thông tin vị trí cho địa chỉ IP cụ thể này. Vì vậy, chúng tôi sẽ có hai chức năng:
import requests
def get_ip[]:
response = requests.get['//api64.ipify.org?format=json'].json[]
return response["ip"]
def get_location[]:
ip_address = get_ip[]
response = requests.get[f'//ipapi.co/{ip_address}/json/'].json[]
location_data = {
"ip": ip_address,
"city": response.get["city"],
"region": response.get["region"],
"country": response.get["country_name"]
}
return location_data
print[get_location[]]
Trong mã trên, chúng tôi có hai chức năng -
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
1 và import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
2. Hãy thảo luận riêng biệt từng người trong số họ.Chức năng import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
3
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
Theo tài liệu API của IPify, chúng tôi cần đưa ra yêu cầu nhận trên
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
4 để nhận được phản hồi JSON trông như thế này:GET request on import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
4 to get a JSON response that looks like this:{
"ip": "117.214.109.137"
}
Chúng tôi lưu trữ phản hồi này trong một biến
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
5, không có gì ngoài một loại từ điển Python với một cặp giá trị khóa. Vì vậy, chúng tôi đã trả lại giá trị của khóa import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
6 là import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
7.import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
5 variable which is nothing but a sort of Python
dictionary with one key-value pair. So we returned the value of the key import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
6 as import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
7.Hàm import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
8
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
Theo tài liệu API của IPAPI, chúng tôi cần đưa ra yêu cầu nhận trên
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
9 để nhận thông tin vị trí cho một địa chỉ IP cụ thể. import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
0 được thay thế bằng địa chỉ IP và import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
1 có thể được thay thế bằng bất kỳ trong số này - import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
2, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
3, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
4, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
5, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
6.GET request on import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
9to get location information for a particular IP address. import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
0 is replaced
by the IP address and import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
1 can be replaced with any of these – import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
2, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
3, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
4, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
5, import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
6. Chức năng này gọi chức năng
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
1 để lấy địa chỉ IP và sau đó đưa ra yêu cầu nhận trên URL với địa chỉ IP. API này trả về phản hồi JSON trông như thế này:GET request on the URL with the IP address. This API returns a JSON response that looks like this:{
"ip": "117.214.109.137",
"version": "IPv4",
"city": "Gaya",
"region": "Bihar",
"region_code": "BR",
"country": "IN",
"country_name": "India",
"country_code": "IN",
"country_code_iso3": "IND",
"country_capital": "New Delhi",
"country_tld": ".in",
"continent_code": "AS",
"in_eu": false,
"postal": "823002",
"latitude": 24.7935,
"longitude": 85.012,
"timezone": "Asia/Kolkata",
"utc_offset": "+0530",
"country_calling_code": "+91",
"currency": "INR",
"currency_name": "Rupee",
"languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
"country_area": 3287590,
"country_population": 1352617328,
"asn": "AS9829",
"org": "National Internet Backbone"
}
Chúng tôi nhận được rất nhiều dữ liệu trong phản hồi. Bạn có thể sử dụng bất cứ điều gì hoạt động cho bạn. Đối với hướng dẫn này, chúng tôi sẽ sử dụng & nbsp; ________ 28,
import os
iN, out, err = os.popen3['curl ipinfo.io/ip']
iN.close[] ; err.close[]
ip = out.read[].strip[]
print ip
9 và import os
ip = os.popen['dig +short myip.opendns.com @resolver1.opendns.com'].readlines[-1][0].strip[]
print ip
0. Đó là lý do tại sao chúng tôi đã tạo ra một từ điển gọi là import os
ip = os.popen['dig +short myip.opendns.com @resolver1.opendns.com'].readlines[-1][0].strip[]
print ip
1 và lưu trữ tất cả dữ liệu bên trong nó và trả về như nhau.import os
ip = os.popen['dig +short myip.opendns.com @resolver1.opendns.com'].readlines[-1][0].strip[]
print ip
0. That's why we created a dictionary called import os
ip = os.popen['dig +short myip.opendns.com @resolver1.opendns.com'].readlines[-1][0].strip[]
print ip
1 and stored all the data inside it and returned the same.Cuối cùng, chúng tôi gọi hàm
import os
ip = os.popen['wget -qO- //ipecho.net/plain ; echo'].readlines[-1][0].strip[]
print ip
2 và in đầu ra. Đầu ra của chúng tôi sẽ trông như thế này:{
"ip": "117.214.109.137",
"city": "Gaya",
"region": "Bihar",
"country": "India"
}
Sự kết luận
Trong bài viết này, chúng tôi đã học cách chúng tôi có thể tương tác với các dịch vụ web để lấy thông tin vị trí cho một địa chỉ IP cụ thể.
Cảm ơn vì đã đọc! Để biết thêm các bài viết như vậy, hãy kiểm tra blog của tôi, iead.
Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu