Поиск сетевых (внешних) IP-адресов с помощью Python
Я хочу знать IP-адрес моего интернет-провайдера (внешний) (широкополосный или что-то еще) с помощью Python.
Есть несколько машин, подключенных к этой сети. Я пытался по-другому, но я получил только локальный и общедоступный IP-адрес моей машины. Как мне найти мой внешний IP-адрес через Python?
Заранее спасибо.
6 ответов
Используйте этот скрипт:
import urllib, json
data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]
Без json:
import urllib, re
data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data
Другой способ состоял в том, чтобы разобрать команду ifconfig (= linux) или ipconfig (= windows), но позаботиться о переведенной системе Windows (был переведен ipconfig).
Пример lib для Linux: ifparser.
Безопасный вариант (с https
служба поддержки)
from requests import get
get('https://ipapi.co/ip/').text
Полный ответ JSON
PS requests
модуль удобен для https
служба поддержки. Вы можете попробовать httplib, хотя.
Вам придется использовать внешний источник, которому вы доверяете. 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'])
Если вы хотите больше информации, вы можете напечатать больше значений из info
,
Непитон-лайнер:
wget -q -O- icanhazip.com
Вы можете проверить этот ответ:
/questions/40596191/poluchenie-vneshnego-ip-adresa-kompyutera-s-pomoschyu-python/40596227#40596227
TL; DR:
import ipgetter
ip=ipgetter.myip()
На мой взгляд, самое простое решение
f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text
Это все.
Мой сайт https://www.botliam.com/1.php выводит ваш ip, поэтому вам нужны только эти 3 строки, чтобы получить ваш ip.
import requests
page = requests.get('http://botliam.com/1.php')
ip = page.text
что он делает:
- открывает мою веб-страницу и называет ее "страница"
- устанавливает "ip" на содержимое "страницы"
если вы хотите, чтобы ваш собственный сервер возвращал ваш внешний ip вместо того, чтобы полагаться на мой сайт, код для этого приведен ниже:
<?php
$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
echo "$ip";
?>