我正在使用python开发一个小型的强制网络门户。我想将用户重定向到我创建的本地服务器上的自定义页面。我的问题是,如何解析用户输入localhost或127.0.0.1的所有网站(例如:google.com)。我见过像localtest.me这样的网站和fuf.me指向我的本地服务器。怎么做?我的猜测是拦截所有DNS请求并将它们指向我的自定义服务器....
这是我目前为dns请求提供的内容。
import socket
import sys
host = ''
port = socket.getservbyname('domain') #get dns port dynamically
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # udp socket
udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
print 'udp socket created...'
try:
udp_socket.bind((host,port))
print 'bind successful'
except socket.error as msg:
print msg
sys.exit()
while True:
data,addr = udp_socket.recvfrom(1024)
if data:
print data,addr
else: break
udp_socket.close()
从客户端显示服务器上的所有DNS请求...现在如何重定向到我的localhost
忘记提及我正在使用Windows ...
答案 0 :(得分:0)
您的方法可能有效,但根据您的实际要求,可能效率不高。更自然的方法是在主机上使用iptables捕获未识别的HTTP流量并将其发送回本地Web服务器。
使用PHP查看此网站以获取配方。使用python修改它应该不会太难。 http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal