Ich habe eine VPN-Verbindung und wenn ich Python -m SimpleHTTPServer ausführe, dient es auf 0.0.0.0:8000, was bedeutet, dass auf es über localhost und über meine echte IP zugegriffen werden kann . Ich möchte nicht, dass Roboter mich scannen und interessiert sind, dass auf den Server nur über localhost zugegriffen wird.
Ist es möglich?
python -m SimpleHTTPServer 127.0.0.1:8000 # doesn't work.
Jeder andere einfache http-Server, der sofort über die Befehlszeile ausgeführt werden kann, ist ebenfalls willkommen.
python
http
command-line
python-2.x
simplehttpserver
user1639431
quelle
quelle
http.server
Binden ermöglicht, z. B.python3 -m http.server --bind 127.0.0.1 8000
würde ausreichenSimpleHTTPServer
ist Single-Threading und blockiert, was bedeutet, dass Sie keine weitere Anforderung ausführen können, bis die vorherige Anforderung beendet ist. Und es gibt keine Bereichsunterstützung, z. B. zum Streamen / Suchen einer Mediendatei von einer bestimmten Position. Eine bessere Alternative isttwisted
(pip install twisted
), mit der Sie ausführen könnentwistd -n web --path /
. Es kann auch anonymes FTP mit tuntwistd -n ftp -p 2121 -r /
. Weitere Einzeiler für http-Server: gist.github.com/willurd/5720255 .Antworten:
Wenn Sie die Quelle lesen, werden Sie feststellen, dass nur der Port in der Befehlszeile überschrieben werden kann. Wenn Sie den Host ändern möchten, auf dem er bereitgestellt wird, müssen Sie die
test()
Methode desSimpleHTTPServer
und implementierenBaseHTTPServer
selbst . Das sollte aber wirklich einfach sein.So geht's ganz einfach:
Und um es zu benutzen:
quelle
In Python-Versionen 3.4 und höher
http.server
akzeptiert das Modul abind
Parameter.Laut den Dokumenten :
quelle
Wie @sberry erklärte, ist es
python -m ...
nicht möglich , dies einfach mit der nice- Methode zu tun , da die IP-Adresse bei der Implementierung von fest codiert istBaseHttpServer.test
Funktion fest .Eine Möglichkeit, dies über die Befehlszeile zu tun, ohne zuerst Code in eine Datei zu schreiben, wäre
Ob das immer noch als Einzeiler gilt, hängt von Ihrer Terminalbreite ab ;-) Es ist sicherlich nicht leicht, sich daran zu erinnern.
quelle
H
. Vielen Dank! - gist.github.com/cmawhorter/f2a09bcf63c68b0cff10python -c "import http.server as hs; hs.HTTPServer(('127.0.0.1', 8888), hs.SimpleHTTPRequestHandler).serve_forever()"
ändern : Beachten Sie die Änderung im Angebot und die Tatsache, dass sich Base und Simple HTTP Server jetzt in http.server befinden.