Несколько вопросов о быстром и простом модуле http-сервера в python.
Это безопасно?
Это доступно только людям на моей локальной сети, верно? Если кто-то введет в мой публичный ip xxx.xx.xx.xxx:8000, это не сработает?
Python simplehttpserver или http.server (python 3) будет прослушивать каждый интерфейс. Другой парень -> Твой роутер -> Твой сервер.
Вот бит, который спасает вас. (Ответ - да, это не сработает, если вы не перенаправили порт и DMZ)
У вашего роутера есть фильтры, которые блокируют порты. Вам нужно будет вручную разрешить порты, если вы хотите, чтобы ваш сервер был виден из мира.
Ваш маршрутизатор, вероятно, также имеет раздел с надписью "DMZ" или DeMilitarizedZone. Помимо переадресации портов (пропуская порты через фильтр), вам также потребуется DMZ для вашего собственного компьютера или любого устройства, на котором размещен сервер. Для этого просто введите IP-адрес вашего компьютера в DMZ.
Примечание. Может быть полезно иметь статический IP-адрес в том случае, если вы используете DMZ для своего компьютера.
Также, если вы действительно не хотите, чтобы интернет находился у вашего порога, используйте хост как "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.
Http-сервер (будь то python или любой http-сервер) будет работать через вашу локальную сеть, но не будет работать через Интернет. Для того, чтобы он работал через Интернет, вы должны настроить свой маршрутизатор на это
Например. a) У вас есть порт, перенаправленный на внешний порт, на ваш внутренний IP и порт 8000.
б) Вы установили свой внутренний IP-адрес в качестве DMZ-хоста в настройках маршрутизатора.