内网中有查本机 IP 的需求,对于没有计算机基础的人,使用网站查询比命令查询要方便。之前使用 socket、Flask 实现过查 IP 的功能,这次使用 web.py 实现。
最终效果如下:
实现的 Python 代码为:
import web
urls = (
'/', 'index'
)
class index:
def GET(self):
ip = web.ctx.ip
return ip
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
运行前需要安装 web.py 模块:
pip install web.py
python get_ip.py 7777
访问时使用 http://<ip>:<port> 进行访问。如果需要使用 https 协议,而非 http 协议,则需要对代码进行小幅度修改:
import web
from cheroot.server import HTTPServer
from cheroot.ssl.builtin import BuiltinSSLAdapter
HTTPServer.ssl_adapter = BuiltinSSLAdapter(
certificate='cert/server.crt',
private_key='cert/private.key')
urls = (
'/', 'index'
)
class index:
def GET(self):
ip = web.ctx.ip
return ip
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
并且需要使用 openssl 工具生成自签名的 SSL 证书,操作步骤如下:
mkdir -p cert
cd cert
openssl genpkey -algorithm RSA -out private.key -aes256
openssl req -new -key private.key -out server.csr
in server.csr openssl x509 -req -days 365 -
-signkey private.key -out server.crt
生成证书时需要输密码,该密码在运行 python 程序时也需要:
访问网页时使用 https://<ip>:<port> 进行访问。
总结:
查 IP 的应用用来查本机 IP 用处不大,但对于复杂网络,比如经过 NAT 、防火墙或 VPN 之后的 IP 是比较有用的。这些 IP 经过转换已经不是原始 IP 了,比如路由器的上联 wan 口 IP,如果不知道路由器的管理地址,查 wan 口 IP 是比较麻烦的。相反通过访问查 IP 的 web 应用可以轻松获取路由器的 wan 口 IP。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):使用 web.py 框架实现 IP 自助查询
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论