运行此python脚本时,您会在127.0.0.1:5000/上看到与flask的网络连接功能
但是,我从开始运行脚本就不知道要打印网络的所有功能。我的意思是我丢失了以前的数据,因此刷新页面时可以将网络的任何一项功能打印到Web服务器上。
我没有在Flask文档中找到任何特定的东西。有人说urllib2或post.request对此很有用,但是对于Web的Flask和Python我还是陌生的。
提前致谢!
代码:
import socket, sys
from struct import *
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
while True:
packet = s.recvfrom(65536)
packet = packet[0]
ip_header = packet[0:20]
iph = unpack('!2B3H2BH4s4s' , ip_header)
t_length = iph[2]
protocol = iph[6]
s_addr = socket.inet_ntoa(iph[8]);
d_addr = socket.inet_ntoa(iph[9]);
protocol_s = protocol
if protocol == 1:
protocol_s = 'ICMP'
if protocol == 6:
protocol_s = 'TCP'
if protocol == 17:
protocol_s = 'UDP'
tcp_header = packet[20:40]
tcph = unpack('!HHLLBBHHH' , tcp_header)
dest_port = tcph[1]
test = 'Protocol : ' + protocol_s + ' | Source Address : ' + str(s_addr) + ' | Destination Address : ' + str(d_addr) + ' | Dest Port : ' + str(dest_port) + ' | Packet Length : ' + str(t_length)
return test
if __name__ == '__main__':
app.run()
首先,Flask是一个WSGI框架。它仅适用于TCP / IP,而HTTP是大多数情况下将使用的协议。您可能使用了websockets和其他协议,但是它们也可以在TCP上工作。服务器已经完成了套接字处理,您不必担心。
要获取有关连接的信息,我不确定您能从中得到多少。您可以查看flask.Request
和werkzeug.wrappers.Request
对象。
例如,您可以从中获取远程地址request
:
from flask import request
@app.route('/')
def hello():
print request.remote_addr
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句