2014-07-01 17 views
12

Tôi muốn biết địa chỉ IP (bên ngoài) của nhà cung cấp Internet (băng thông rộng hoặc thứ gì đó khác) bằng Python.Tìm địa chỉ IP (bên ngoài) mạng bằng cách sử dụng Python

Có nhiều máy được kết nối với mạng đó. Tôi đã thử theo cách khác nhưng tôi chỉ nhận được máy IP địa phương và công cộng của tôi. Làm cách nào để tìm địa chỉ IP bên ngoài của tôi thông qua Python?

Xin cảm ơn trước.

+3

những cách có bạn đã thử? – heinst

+0

tôi đã thử điều này, 'nhập khẩu ổ cắm socket.gethostbyname (socket.gethostname())' .Làm thế nào tôi nhận được địa chỉ ip được gán cho máy tính của tôi. Không phải địa chỉ IP của nhà cung cấp mạng – Mulagala

+0

@timgeb, nếu bạn thấy liên kết này http://ipinfodb.com/ bạn có thể biết chính xác mình muốn gì. Toàn bộ thông tin sẽ đến như quốc gia, thành phố, nhà cung cấp ip v.v. – Mulagala

Trả lời

17

Sử dụng kịch bản này:

import urllib, json 

data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read()) 
print data["ip"] 

Without json:

import urllib, re 

data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1) 
print data 

cách khác đó là để phân tích ifconfig (= linux) hoặc ipconfig (= cửa sổ) lệnh nhưng chăm sóc với đã dịch hệ thống Windows (đã được dịch ipconfig).

Ví dụ về lib cho linux: ifparser.

+0

Cảm ơn bạn nó đang hoạt động. – Mulagala

+0

Câu trả lời rất thanh lịch! – jedema

3

Bạn sẽ phải sử dụng nguồn bên ngoài mà bạn tin tưởng. Python2.x:

from urllib import urlopen 
import json 
url = 'http://api.hostip.info/get_json.php' 
info = json.loads(urlopen(url).read()) 
print(info['ip']) 

Nếu bạn muốn biết thêm thông tin, bạn có thể in nhiều giá trị hơn từ info.

Non-python oneliner:

wget -q -O- icanhazip.com 
+0

tôi đang sử dụng python 2.7. Nó sẽ hoạt động ...? – Mulagala

+0

@Mulagala đã thay đổi câu trả lời của tôi thành python2.7 – timgeb

+0

Làm việc tốt cảm ơn bạn – Mulagala

1

Theo tôi giải pháp đơn giản nhất là

f = requests.request('GET', 'http://myip.dnsomatic.com') 
ip = f.text 

Thats tất cả.

tùy chọn
+0

Lưu ý rằng nó yêu cầu mô-đun [Yêu cầu Python không bổ sung] mặc định (http://www.python-requests.org). – Forage

+0

Tốt hơn và thanh lịch hơn –

11

an toàn (với https hỗ trợ)

from requests import get 

get('https://ipapi.co/ip/').text 

Hoàn JSON response

T.B. Mô-đun requests thuận tiện cho việc hỗ trợ https. Tuy nhiên, bạn có thể thử httplib.

Các vấn đề liên quan