Python简单HTTP服务器

Python简单HTTP服务器

关于python快捷易用的http服务器模块的几个问题。

它安全吗?
只有我的局域网上的人才可以使用,对吗?如果有人输入我的公共 IP xxx.xx.xx.xxx:8000,它就不起作用了?

答案1

http 服务器(无论是 Python 还是其他 http 服务器)可以在 LAN 上运行,但无法在互联网上运行。要让它在互联网上运行,您必须设置路由器

例如 a) 您已将外部端口转发到内部 IP 和端口 8000。

b) 您已在路由器设置中将您的内部 IP 设置为 DMZ 主机。

答案2

Python simplehttpserver 或 http.server (python 3) 将监听每个接口。其他人 -> 您的路由器 -> 您的服务器。

这是可以拯救你的一点。(答案是肯定的,如果你没有端口转发和 DMZ,它将无法工作)

您的路由器有过滤器可以阻止端口。如果您希望服务器可供其他人查看,则必须手动允许端口。

您的路由器可能还有一个部分,上面写着“DMZ”或“DeMilitarizedZone”。除了端口转发(允许端口通过过滤器)之外,您还需要将自己的计算机或托管服务器的任何设备设为 DMZ。为此,只需将您的计算机 IP 放在 DMZ 中即可。

注意:如果您的计算机被设置为 DMZ,那么拥有静态 IP 可能会很方便。

此外,如果您确实不想在家门口使用互联网,请使用 host as"127.0.0.1"而不是"0.0.0.0"

示例测试:

from socket import *
a = socket(AF_INET,SOCK_STREAM)
a.bind(('0.0.0.0',8000))
a.listen(1)
b,c = a.accept()

#Port tester can detect and the program receives the connection.

d = socket(AF_INET,SOCK_STREAM)
d.bind(('127.0.0.1',8000))
d.listen(1)
e,f = d.accept()

#Port tester cannot detect and the program receives no connection.

相关内容