簡體   English   中英

使用Python查找網絡(外部)IP地址

[英]Finding network (external) IP addresses using Python

我想通過Python了解我的互聯網提供商(外部)IP地址(寬帶或其他)。

有多台機器連接到該網絡。 我嘗試了不同的方式,但我只獲得本地和公共IP我的機器。 如何通過Python找到我的外部IP地址?

提前致謝。

使用此腳本:

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 for 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打印更多值。

非python oneliner:

wget -q -O- icanhazip.com

你可以看看這個答案:

https://stackoverflow.com/a/22157882/5687894

TL; DR:

import ipgetter
ip=ipgetter.myip()

在我看來,最簡單的解決方案是

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

就這樣。

我的網站http:// 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";
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM