Поиск сетевых (внешних) 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";
?>
Другие вопросы по тегам